Страница 3 из 3
Внешний генератор
Добавлено: 12 дек 2017, 14:38
Sancho
pan,
Это не останавливает генератор, это статус
Bit 7. OSF (Oscillator Stop Flag) - указывает на то, что генератор был остановлен (может быть использован для оценки достоверности данных часов).
Установка в «1» аппаратно, если: VCC и VBAT малы для колебаний, сброшен флаг EOSC при питании от VBAT, есть внешние помехи на кристалле.
Сброс в «0» по инициативе пользователя.
Bit 3. EN32 (ENable 32kHz) - разрешает меандр с частотой 32.768кГц на выводе 32kHz
Установка в «1» по инициативе пользователя.
Сброс в «0» по инициативе пользователя. (Вывод 32kHz переходит в состояние высокого импеданса)
Зачем писать 1 в 7-й бит при инициализации, я не знаю...?
P.S. Надо глянуть с другими типами часов, тоже-самое или нет и даташиты посмотреть. Может это "прицепом" идёт, например, от 1302
Надо вопрос этот заслать
Автору, пусть прояснит для любопытных
Внешний генератор
Добавлено: 12 дек 2017, 14:55
pan
Sancho, так поэтому и говорил
pan писал(а):а при чем тут этот регистр.
главное что в 0E пишутся нули. значит 1 герц имеем штатно.
Sancho писал(а):Зачем писать 1 в 7-й бит при инициализации, я не знаю...
аналогично))
Внешний генератор
Добавлено: 12 дек 2017, 15:11
Nikan
.
Внешний генератор
Добавлено: 12 дек 2017, 15:19
Sancho
Nikan писал(а):для 1307
Нет, в 1307 служебные регистры заканчиваются 0х07, дальше память....
Вопрос к
АВТОРУ актуален... , хотя , возможно, с 7-м битом просто опечатка..
Внешний генератор
Добавлено: 12 дек 2017, 15:30
Nikan
.
Внешний генератор
Добавлено: 12 дек 2017, 15:41
Sancho
Nikan писал(а):7 бит контрольного регистра
Не спорю. Но регистр , о котором Вы говорите, "живёт" по другому адресу.
И посмотрите
пост 30. Это творение FLProg.
Адреса, куда будут записаны значения, принадлежат к RAM(ds1307).
Внешний генератор
Добавлено: 12 дек 2017, 15:49
Nikan
.
Внешний генератор
Добавлено: 12 дек 2017, 15:58
Sancho
Для 3231 достаточно, по моему, произвести всю настройку один раз, и больше не думать об этом, учитывая дрейф +/- 1 минута в год... Будильники не учитываю. Средств, как ВЫ знаете, позволяющих сделать это, предостаточно: FLprog, примеры от библиотек... как говорится, на вкус и цвет ...
Внешний генератор
Добавлено: 12 дек 2017, 16:08
Nikan
.
Внешний генератор
Добавлено: 12 дек 2017, 16:37
Labu55
Пока оформил, все разбежались.
Источник публиковал уже на форуме при вопросе о продолжении работы 1307 после физического отключения от Ардуинки.
(библиотека считает время по собственному таймеру в функции millis() а не тактируется от RTC как задумал производитель МС).
Первая часть рисунка для 3231, а вторая "штатные" импульсы на светодиоде для 1307 (биб-ка jarduino FLProg).
Также, как я понял применив два штатных будильника можно укладывать спать, выводить из сна микроконтроллер или задать цикличные импульсы любой длилельности (от 1 сек), вносить поправку "учитывая дрейф". Вот только платформа Ардуино не претендует на серьёзные задачи. Как-то так кажется.
Внешний генератор
Добавлено: 12 дек 2017, 17:28
Nikan
.
Внешний генератор
Добавлено: 12 дек 2017, 17:37
Labu55
Nikan писал(а):боком тут милисы
Можно гадать, а можно открыть библиотеку iarduino_RTC.cpp, строка 11 к примеру (там много интересного кроме). А вообще ребята я уже нашел не только свои заметки но и
источник и не буду вводить никого в заблуждение. Думаю будет интересно.
Добавлено (12.12.2017, 17:37)
---------------------------------------------
Nikan писал(а):чип часов при отключении от питания переходит на батарейку и продолжает работать
отключите сигнальные провода от Ардуино и
поймёте о чём я.
Извините, "продолжении работы 1307 после физического отключения от Ардуинки" -точнее по смыслу- продолжении работы Ардуино после физического отключения от 1307
Внешний генератор
Добавлено: 12 дек 2017, 17:42
Nikan
.
Внешний генератор
Добавлено: 12 дек 2017, 22:20
Labu55
Nikan писал(а):похоже на то
Спасибо за подтверждение.
Значит Ардуинке легче вместо просто считывания регистров RTC, используя свой таймер рассчитать секунды и свериться с данными в регистрах RTC спустя минуту? Это же сколько "лишнего" засунули в микросхему производители? Этот подход подтверждается работой Ардуино при обрыве связи с RTC. Она досчитает самостоятельно секунды до 60, запишет в часы, минуты, секунды 00 и продолжит считать свои секунды следующую минуту. С такими раскладами (библиотеками)сомнительный смысл тактироваться от RTC для задач менее требовательных к точности как у Ув. Автора? Ожидаемой экономии использования ресурсов (памяти, процессорного времени) не будет. Писал мне один Уважаемый человек здесь на форуме, что Ардуинщикам вредно углубляться в Тех.документацию. Шучу дальше под спойлером.
[spoiler=Спойлер]Раз уж Ув. автор темы исчерпал свой вопрос, может кто-то поможет и мне миновать близкий взрыв мозга от работы RTC 1307, или моих скудных "познаний" в С++, или симуляции процесса в Протеусе, или ... т.п.
если запустить в Loop секции условие
if(preStr!= dataStr)
{preStr = dataStr;
<<исполняемый код>>;}
Где String dataStr - преобразованные в строку текущие данные времени с выхода RTC,
а String preStr - сохранённые данные dataStr в предыдущем цикле Loop,
то условие будет выполняться всегда, т.е. preStr будет перезаписываться в каждом цикле, хотя значения (по дисплею) не изменились.
пробовал и через (preStr.equals(dataStr))
Если же вместо данных с RTC явно укажем вначале (dataStr = String("ххххххх")) , "транзит" срабатывает.
Надеюсь последняя информация от меня достаточная для моделирования и не выходит за рамки Песочницы или Начинающим.[/spoiler]
Внешний генератор
Добавлено: 13 дек 2017, 01:06
Nikan
.
Внешний генератор
Добавлено: 13 дек 2017, 01:52
Labu55
Спасибо за помощь. Разобрался, теперь всё работает, но не разобрался почему не работало (какое-то словоблудие получается). Всё заново пересобрал, ничего в коде не менял и - вуаля! Уже второй раз на такое попадаю.
Так как компилятор Ардуино ИДЕ больше не возмущается по поводу встроенного в программу блока RTC (в частности на DS1302)- подозреваю, что наш уважаемый автор программы поправил что-то. Или я ошибаюсь?