Внешний генератор

Вопросы от новичков
Аватара пользователя
Sancho
Полковник
Сообщения: 3990
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешний генератор

#41

Сообщение Sancho » 12.12.2017{, 14:38}

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
Надо вопрос этот заслать Автору, пусть прояснит для любопытных
Последний раз редактировалось Sancho 12.12.2017{, 14:51}, всего редактировалось 1 раз.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Внешний генератор

#42

Сообщение pan » 12.12.2017{, 14:55}

Sancho, так поэтому и говорил
pan писал(а):а при чем тут этот регистр.
главное что в 0E пишутся нули. значит 1 герц имеем штатно.
Sancho писал(а):Зачем писать 1 в 7-й бит при инициализации, я не знаю...
 аналогично))

Аватара пользователя
Nikan
Майор
Сообщения: 1129
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 87
Откуда: москва

Внешний генератор

#43

Сообщение Nikan » 12.12.2017{, 15:11}

pan писал(а):Зачем писать 1 в 7-й бит при инициализации, я не знаю... аналогично))
для 1307
в седьмом бите логический уровень на выходе SQW/OUT если не используется ка выход частоты, по наличию высокого уровня можно отследить работают ли часы.
блок в функция в прерывании по входу 2 (INT0) считает и сбрасывается в обработчике прерывания, на выходе 1 на один программный цикл при достижении
значения на входе.
P/S в железе не проверил, ни одних часов под рукой((
Вложения
INT0-CODE-.ubi
(117.59 КБ) 61 скачивание
Последний раз редактировалось Nikan 12.12.2017{, 15:34}, всего редактировалось 1 раз.

Аватара пользователя
Sancho
Полковник
Сообщения: 3990
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешний генератор

#44

Сообщение Sancho » 12.12.2017{, 15:19}

Nikan писал(а):для 1307
Нет, в 1307 служебные регистры заканчиваются 0х07, дальше память....
Вопрос к АВТОРУ актуален...  , хотя , возможно, с 7-м битом просто опечатка..
Вложения
6201317.png
Последний раз редактировалось Sancho 12.12.2017{, 15:26}, всего редактировалось 1 раз.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
Nikan
Майор
Сообщения: 1129
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 87
Откуда: москва

Внешний генератор

#45

Сообщение Nikan » 12.12.2017{, 15:30}

Sancho писал(а):Нет, в 1307 служебные регистры заканчиваются 0х07, дальше память....
7 бит контрольного регистра
Вложения
7893280.png

Аватара пользователя
Sancho
Полковник
Сообщения: 3990
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешний генератор

#46

Сообщение Sancho » 12.12.2017{, 15:41}

Nikan писал(а):7 бит контрольного регистра
Не спорю. Но регистр , о котором Вы говорите, "живёт" по другому адресу.
И посмотрите пост 30. Это творение FLProg.
Адреса, куда будут записаны значения, принадлежат к RAM(ds1307).
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
Nikan
Майор
Сообщения: 1129
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 87
Откуда: москва

Внешний генератор

#47

Сообщение Nikan » 12.12.2017{, 15:49}

Sancho писал(а):Это творение FLProg.
не знаю что, флпрог намутит..((
я контрольный и установку времени только скетчем, тем паче библа позволяет
Вложения
sketch_ystanovk.ino
(975 байт) 53 скачивания
Последний раз редактировалось Nikan 12.12.2017{, 15:52}, всего редактировалось 1 раз.

Аватара пользователя
Sancho
Полковник
Сообщения: 3990
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешний генератор

#48

Сообщение Sancho » 12.12.2017{, 15:58}

Для 3231 достаточно, по моему, произвести всю настройку один раз, и больше не думать об этом, учитывая дрейф +/- 1 минута в год... Будильники не учитываю. Средств, как ВЫ знаете, позволяющих сделать это, предостаточно: FLprog, примеры от библиотек... как говорится, на вкус и цвет ...
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
Nikan
Майор
Сообщения: 1129
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 87
Откуда: москва

Внешний генератор

#49

Сообщение Nikan » 12.12.2017{, 16:08}

Sancho писал(а):Для 3231 достаточно, по моему, произвести всю настройку один раз,
так и для всего семейства

Labu55
Сержант
Сообщения: 130
Зарегистрирован: 30.07.2017{, 12:22}
Репутация: 0

Внешний генератор

#50

Сообщение Labu55 » 12.12.2017{, 16:37}

Пока оформил, все разбежались.
Источник публиковал уже на форуме при вопросе о продолжении работы 1307 после физического отключения от Ардуинки.
(библиотека  считает время по собственному таймеру в функции millis() а не тактируется от RTC как задумал производитель МС).
Первая часть рисунка для 3231, а вторая "штатные" импульсы на светодиоде для 1307 (биб-ка jarduino FLProg).
Также, как я понял применив два штатных будильника можно укладывать спать, выводить из сна микроконтроллер или задать цикличные импульсы любой длилельности (от 1 сек), вносить поправку "учитывая дрейф". Вот только платформа Ардуино не претендует на серьёзные задачи. Как-то так кажется.
Вложения
9072865.png
Последний раз редактировалось Labu55 12.12.2017{, 17:24}, всего редактировалось 1 раз.

Аватара пользователя
Nikan
Майор
Сообщения: 1129
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 87
Откуда: москва

Внешний генератор

#51

Сообщение Nikan » 12.12.2017{, 17:28}

Labu55 писал(а):Источник публиковал уже на форуме при вопросе о продолжении работы 1307 после физического отключения от Ардуинки.(библиотека считает время по собственному таймеру в функции millis() а не тактируется от RTC как задумал производитель МС).
тут ка кто,  не очень понятно, функция библы gettime() опрашивает часы, при получении с них данных, передает их в переменную,
чип часов при отключении от питания переходит на батарейку и продолжает работать.
каким боком тут милисы?

Labu55
Сержант
Сообщения: 130
Зарегистрирован: 30.07.2017{, 12:22}
Репутация: 0

Внешний генератор

#52

Сообщение Labu55 » 12.12.2017{, 17:37}

Nikan писал(а):боком тут милисы
Можно гадать, а можно открыть библиотеку iarduino_RTC.cpp, строка 11 к примеру (там много интересного кроме). А вообще ребята я уже нашел не только свои заметки но иисточник и не буду вводить никого в заблуждение. Думаю будет интересно.

Добавлено (12.12.2017, 17:37)
---------------------------------------------
Nikan писал(а):чип часов при отключении от питания переходит на батарейку и продолжает работать
отключите сигнальные провода от Ардуино и поймёте о чём я.
Извините, "продолжении работы 1307 после физического отключения от Ардуинки" -точнее по смыслу- продолжении работы Ардуино после физического отключения от 1307
Последний раз редактировалось Labu55 12.12.2017{, 17:56}, всего редактировалось 1 раз.

Аватара пользователя
Nikan
Майор
Сообщения: 1129
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 87
Откуда: москва

Внешний генератор

#53

Сообщение Nikan » 12.12.2017{, 17:42}

Labu55 писал(а):отключите сигнальные провода от Ардуино и поймёте о чём я.
не могу проверить уже выше писал, часов нет, ни одних((
библу посмотрю

посмотрел, похоже на то))
Последний раз редактировалось Nikan 12.12.2017{, 17:56}, всего редактировалось 1 раз.

Labu55
Сержант
Сообщения: 130
Зарегистрирован: 30.07.2017{, 12:22}
Репутация: 0

Внешний генератор

#54

Сообщение Labu55 » 12.12.2017{, 22:20}

Nikan писал(а):похоже на то
Спасибо за подтверждение.
Значит Ардуинке легче вместо просто считывания регистров RTC, используя свой таймер рассчитать секунды и свериться с данными в регистрах RTC спустя минуту? Это же сколько "лишнего" засунули в микросхему производители?  Этот подход подтверждается  работой Ардуино при обрыве связи с RTC. Она досчитает самостоятельно секунды до 60, запишет в часы, минуты, секунды 00 и продолжит считать свои секунды следующую минуту. С такими раскладами (библиотеками)сомнительный смысл тактироваться от RTC для задач менее требовательных к точности как у Ув. Автора? Ожидаемой экономии использования ресурсов (памяти, процессорного времени) не будет. Писал мне один Уважаемый человек здесь на форуме, что Ардуинщикам вредно углубляться в Тех.документацию. Шучу дальше под спойлером.
СпойлерПоказать
Раз уж Ув. автор темы исчерпал свой вопрос, может кто-то поможет и мне миновать близкий взрыв мозга от работы RTC 1307, или моих скудных "познаний" в С++, или симуляции процесса в Протеусе, или ... т.п.
если запустить в Loop секции условие
if(preStr!= dataStr)
{preStr = dataStr;
<<исполняемый код>>;}
Где String dataStr -  преобразованные в строку текущие данные времени с выхода RTC,
а String preStr - сохранённые данные dataStr в предыдущем цикле Loop,
то условие будет выполняться всегда, т.е. preStr будет перезаписываться в каждом цикле, хотя значения (по дисплею) не изменились.
пробовал и через  (preStr.equals(dataStr))

Если же вместо данных с RTC явно укажем вначале (dataStr = String("ххххххх")) , "транзит" срабатывает.
Надеюсь последняя информация от меня достаточная для моделирования и не выходит за рамки Песочницы или Начинающим.
Последний раз редактировалось Labu55 13.12.2017{, 03:35}, всего редактировалось 1 раз.

Аватара пользователя
Nikan
Майор
Сообщения: 1129
Зарегистрирован: 29.12.2016{, 00:49}
Репутация: 87
Откуда: москва

Внешний генератор

#55

Сообщение Nikan » 13.12.2017{, 01:06}

если переменные имеют тип стринг, вполне возможно, что в одном цикле они не перезаписываться полностью, а выше условие если не равно -
вот и переписываться каждый раз,
хотя могу ошибаться
вариант с трансфером на мой взгляд более правильный

Labu55
Сержант
Сообщения: 130
Зарегистрирован: 30.07.2017{, 12:22}
Репутация: 0

Внешний генератор

#56

Сообщение Labu55 » 13.12.2017{, 01:52}

Спасибо за помощь. Разобрался, теперь всё работает, но не разобрался почему не работало (какое-то словоблудие получается). Всё заново пересобрал, ничего в коде не менял и - вуаля! Уже второй раз на такое попадаю.
Так как компилятор Ардуино ИДЕ больше не возмущается по поводу встроенного в программу блока RTC (в частности на DS1302)- подозреваю, что наш уважаемый автор программы    поправил что-то. Или я ошибаюсь?
Последний раз редактировалось Labu55 13.12.2017{, 03:10}, всего редактировалось 1 раз.

Ответить

Вернуться в «Начинающим»