Real time clock on STM32
HTML-код
- Опубликовано: 13 сен 2024
- Hello! STM32F103C8T6 (BluePill) has a built-in RTC module; therefore, an external real-time clock is not needed to create a watch at all. And in this video we will make a watch on the STM32 and OLED display.
Test sketches and library: drive.google.c...
Links to components:
1) Oled display: ali.pub/4n5r4m
2) STM32F103C8T6 (BluePill): ali.pub/4fpk43
3) NRF24L01: http: //ali.pub/4fpnjy
4) AMS1117 3.3V: ali.pub/4fpnt3
5) The cheapest Arduino Pro Mini for crafts: ali.pub/1ny2z4
6) Mosfets SI4562: ali.pub/4fpooz
7) Resistors: ali.pub/4fposo
8) Capacitors: ali.pub/4fpov7
9) Connectors: ali.pub/4fpp09
10) Transistor MMBT2222: ali.pub/4fpp7g
11) IR4428 driver: ali.pub/4fprvw
12) SS32 diode: ali.pub/4fps3v
13) Tantalum Capacitor: ali.pub/4fps60
The most convenient cashback:
LetyShops: goo.gl/Ev5XgI
The most profitable cashback:
Ecomerce: goo.gl/3dDc2w
For cooperation, write to: h.made.chanel@gmail.com
_________________________________________________________
Hello! My name is Igor. I am interested in programming and developing various devices. It’s always interesting for me to create something new, unusual. This vet is breathtaking when a lifeless piece of iron suddenly begins to move, ride, fly, and perform all the actions that you invest in them. Feel like a creator of something very unusual! I am fond of programming Arduino, STM32, ESP8266 and ESP32. On this channel you will find simple and interesting things, and most importantly: you can repeat all this, and even do even better!
#Ардуино #Arduino #STM32 #RTC #STM32F103C8T6 #BluePill #OLED
Давай больше видео о stm32
Грамотная речь, все подробно и красиво. Спасибо Вам.
Почему не используешь PlatformIO? Это не так сложно как кажется. Arduino IDE жутко неуклюжая среда разработки.
Ну с этим бы я поспорил, особенно в ATOM ))) Собирал прошивку под Ender3 на BTT SKR e3 mini ver.1.2 в оболочке Атом в среде PlatformIO - гемор то еще. То репозитории не открываются, то библиотеки отваливаются, да еще и со слабым железом то еще удовольствие компилить
Спасибо за видео! Когда мои железки оживают, я чувствую себя богом... сейчас пытаюсь создать условные рефлексы, что бы Ардуина сама предугадывала что мне надо, например: больше света или включить вентилятор, кофеварку....Потом эти рефлексы можно будет объединить в систему и получится ИИ)
А у Вас есть идеи, как программно описать "Собаку Павлова"?
Я вас понимаю :)
Вам стоит смотреть в сторону "машинного обучения". Это обширная и очень серьезная тема
по команде "char t[] = __TIME__;" в переменной будет лежать текущее время системы, которое вы можете сразу прописывать в контроллер, вот и вся синхронизация при прошивке скеча ;) точно так же можно получить текущую дату __DATE__
Да, конечно можно. Но большинство начинающих не поймут как на самом деле устанавливается время, и в каком формате оно хранится в RTC.
@@UCanDo Вам все равно придется разобрать переменную на часы-минуты-секунды, просто не будет странных решений типа прошить так, потом раскомментировать вот тут и вот там и прошить еще раз. Большинство начинающих такие костыли хорошему точно не научат...
Большое спасибо за интересный выпуск!
Thank you for sharing this tutorial, bro.
@Home Made - То, что ты можешь сделать
Да, верно, с точностью в Ардуино ИДЕ все хреново, потому что используется не тот кварц, который установлен на плате, а тот, который имеется внутри самого контроллера - я это проверил опытным путем: тот же проект с часами сделал не в Ардуино ИДЕ, а через КубМХ в кеил. Сначала указывал использовать внутренний кварц - часы шли точно также неточно, как и в Ардуино ИДЕ. Потом поменял на внешний кварц, и ... О, чудо! Точность стала изумительной! Как изменить на внешний в Ардуино ИДЕ - я не разобрался
Тоже с этим столкнулся, но причина и решение оказались элементарными. Источник тактирования указывается при настройке RTC:
RTClock rt (RTCSEL_LSE); // initialise
где:
LSE - тактирование от часового кварца
LSI - тактирование от внутренней RC цепочки с частотой 4 МГц
HSE - тактирование с частотой 8/128MHz = 62500 Hz, но что за источник - я не разбирался
DEFAULT и NONE - отключение RTC
По умолчанию во всех примерах стоит тактирование от внутренней RC цепочки с частотой 4 МГц (RTCSEL_LSI), а у этой цепочки частота жутко плавает.
А чем отличается талантливый конденсатор от обычного? т.е. танталовый? в вашей ссылке?
Характеристики лучше,
Столкнулся с тем, что без батарейки генератор часов очень туго запускается. Иногда -- вообще никак не запускается. Да и вообще, драйверы кварцев у СТМок (возможно, только китайских) очень слабенькие -- еле-еле способны раскачать кристаллы. Кроме того, у ST-LINKов китайских часто вылетает HSE, и "свисток" превращается в тыкву. У знакомого уже целый пучок умерших валяется, у меня пока штуки три сдохло. Причём, всё остальное в нем работает, и от внутреннего генератора контроллер вполне можно тактировать.
Вот только похоже автор не пользовался такими часами. Дело в том что из за особенностей реализации драйвера кварца и неудачной топологии платы, а именно переходные отверстия в дорожках до кварца и отводы на пины PC14 PC15 часы показывают погоду, а не время. Надо минимум лишние отводы отрезать.
Досмотрел до слова "скетч". Дальше мне неинтересно. Думал, что тема про CubeIDE.
прикольно
Всё как обычно, видео интересное, практического применения нет...
ардуино поглотил STM32 ну и хорошо, что можно STM32 шить из ардуино, так как ардуино платы изжили себя, а их ПО лучшее что может быть, это супер, даже если некоторые возможности, это супер, привычно на ардуино многое, все ли там шьется как по маслу?
Вы ещё про ESP не слышали наверное.
Мило. Но всё же, ван лав - DS3231, хотя и она убегает в сторону на пару минут за месяц. NTP выручает =)
что-то у меня 3231 не убегает больше минуты в месяц. Опять же кварц кварцу - рознь.
@@TEENASPECT баг решается удалением индикаторного диода с готовых модулей. А так, она дико стабильная.
Модная у тебя батарейка - Sony )
На сколько быстрый и оптимизированный код получается в arduino ide?
Стоит ли начинать изучать стм32 с помощью этой ide, или лучше сразу обратиться к регистрам?
И что будет быстрее, стм32 или есп32?
Преимущество Ардуино IDE только в легкости написания кода и тонны готовых библиотек.
Готовый код получается громоздким и медленным (для AVR, о STM трудно судить).
Какую среду выбрать - зависит от сложности проектов. Если планируете делать серьезные большие проекты, то лучше сразу начните изучать специализированную среду разработки.
Что лучше STM32 или ESP32 - все зависит от конкретного проекта. К тому же есть STM32 которые «за пояс заткнут» даже Raspberry PI...
Преимущество STM в большом количестве пинов, возможностью управления сложными устройствами (на пример дисплеями с параллельной шиной). У ESP32 меньше пинов, но зато есть WiFi, блютуз... У этих микроконтроллеров немного разные сферы назначения.
@@UCanDo
Спасибо за ответ и за ваши видео, очень все качественно и главное по делу)
Код - мусор. Нет. Быстрее будет есп32. Да и там 2 ядра. По моим расчетам получается, что у СТМ32F103C8* около 158 MIPS. У самой слабой ESP32 заявлено 200MIPS и до 600 до самой мощной. Но тут некорректное сравнение, т.к. архитектуры разные в корне. В каком плане мощнее/слабее?
@@TEENASPECT в плане обработки сигналов, аналоговых например. Что больше подойдёт для больших проектов, с большим дисплеем например. И вроде ведь есть различные версии стм32 с разной вычислительной мощностью?
Или может быть вообще стоит использовать разные связки контроллеров для достижения поставленной задачи?
стм32 для ардуины полное гавно
в процентном соотношении даже сраный блинк жрет больше памяти, чем на 328 меге
В этой реализации дисплея пин ресет не используется, на самой плате он подтянут к +3.3 , но есть шилды где этот пин выеден, например на SPI версии.
В том то и прикол: ресет используется только для SPI. Зачем тогда его указывать при инициализации I2C интерфейса? Не понятно мне это...
@@UCanDo Для универсальности, один класс для обоих интерфейсов. А значит количество переменных должно быть одинаковым, просто в айтуси не используется эта переменная, но указывать нужно.
По существу это просто запустить проверить что есть такая возможность , на самом деле эти часы не просто так настроить , тут с регистрами нужно поковыряться , поснимать и повыставлять биты , в этой библиотеки от индусов я не уверен что все так как нужно , на сайте ST есть полное описание того как заводить эти часы и как ими пользоваться , это все честно дерьмо , через неделю убегут так что сам охренеешь
Если бы начали изучать контроллеры от ST серьезно, то знали бы о BackUp RAM. И что используя эту память можно запросто реализовать признак "часы установлены". Бросайте IDE Arduino. Пишите код в Keil или бесплатной IDE от ST. Тем более что Arduino кастрирует возможности stm32.
Самый главный косяк в RTC stm32f103c8t6, это отсутствие возможности работы с календарем. Можно это сделать программно, даже сохранять в флэш памяти, не вопрос. Но, при отключении питания на сутки или больше, время будет идти, да. Но дата останется датой, когда вы отключили питание. Так что, использовать "голубую пилюлю" для полноценных часов смысла нет. Если только для часов, то да. Там даже есть функция калибровки точности хода часов...
Как это дата не идёт? Ещё как идёт! Проверено.
@@UCanDo Давай, отключи питание в 23:59 и включи в 00:01. В процессоре c8t6 нет функций работы с календарём в принципе. Это всё надо делать программно.
Если беретесь за серьезные вещи, как STM32, то выкиньте из головы ваше Ардуино.
На одних скетчах никогда не научишься программировать.
Спасибо я флпроговец но кайфую от видео класс
Может вы знаете как сделать миди
Миди можно мутить через отправку команд по Serial порту и приём их программами типа ttymidi на совместимой с ядром скорости, либо раскуривать как сделать midi-HID USB устройство, но мне не попадалось нормальных туториалов, пару лет назад искал. Нужно оталкиваться от задачи.
Спасибо! В свое время не хватало данной информации. Какая точность в данных часов, погрешность в месяц, год?
Точность зависит от качества кварца. Если китайцы поставят качественный кварц, то и часы будут идти точно.
@@UCanDo Как бы дешевле не вышло внешний ds3234 установить, то что точнее - точно.
Кхм, не практично. Часы конечно работать будут, но не радовать взгляд. Тут достаточно простая задача, не требующая большого количества ног мк, и его вычислительных способностей. Корпуса TSSOP-20 вполне достаточно, там есть F, G, и даже L серия за 40 центов.
Часы без сенсора движения - деньги на ветер. Это-же практически бесплатный логгер присутствия человека в контролируемой зоне. Если сенсор будет микроволновым - то управлять часами можно через жесты, это намного проще чем нажимать малюсенькие кнопочки.
Экран - любой с spi интерфейсом, потому как стационарные часы должны и обязаны работать от сети (время от батарейки).
И всё это обязано закончится созданием ПП и корпуса для часов.
Без адруино и пучка проводов.
В данном видео показано только то что STM имеют RTC. А как и где это применять - это уже личное дело каждого.
нууу, дядь. Придираешься. 1. Это макетка. 2. Тестовый стенд. 3. Демонстрация RTC. Тут не нужно выпендриваться и упрощать всё для ролика. Главное - показать. А уж в конечном девайсе - конечно же использовать не пушку нужно для стрельбы по воробьям, а что-то по-проще, надежнее и основательнее в сборке. Кто знает - тот понимает это.
@@TEENASPECT Я точно могу сказать, девайсы где ПП изготовлена под задачу (с распайкой мк) - не используют адруино.
У AlexGyver в одном из последних видео был скетч, в котором использовалось при прошивке время установленное на компьютере. Можно там глянуть как это сделано.
Можно конечно и так.
А библиотеку для RTClock.h где можно найти? в архиве с тестовыми скетчами её нет
Она есть в ядре STM32 для Ардуино
Привет а у тебя нет проблемы с отставанием часов ?У меня есть но проблему решил : каждый день в определённое время програмно добавляю пару минут.Что конечно не айс
Прошу прощения за задержку с ответом. Проблема может быть либо в низкокачественном кварце (его нужно заменить). Либо в неправильно настроенном источнике тактирования.
По умолчанию идет тактирование от внутреннего генератора, а у него частота очень сильно плавает.
РЭсэт ))
Честно сказать тут мне не комфортно вести диалог с вами и на против мне вас учить не чему я люблю железо на камне и если полочный девайс то к внеш такт нет проблем но если это летает и катается то тут по внутреннему тактированию я располагаю больше.
Вибрация вносит свои коррективы))
Дизлайк за то что не написал что это в Ардуино - я бы время не тратил
Лайк за то что в Ардуино
Спасибо теперь я понял как это работает) давно искал как можно применить этот кварц часов),
Но у меня есть тут проблема, как только я вызываю функцию rt.minute(); иличас или секунды, то у меня светодиод начинает быстро мигать и перестает вести отсчет, что-то сбивается
А я нашел причину, тип числа должен был быть не byte a long и тогда все работает
че не понял но выглядит прикольно
Ну и как оно будет синхронизироваться с точным временем? Или никак, вручную корректировать надо? Я чего-то не понял?
так же как механические часы - вручную, или подключай плату для работы с интернетом по проводу или wifi, или ставь радиоприемник точного времени, GPS, GSM... Вариантов масса, но встроенными средствами никак. Проект часов из видео - никак, только перепрошивкой.
@@Константин_Зайцев, спасибо.
@@Константин_Зайцев, в коментах написали, что точность -1 в час (((. Баловство одно...
Для автоматической корректировки времени можно подключить плату ESP8266 и подключаться к NTP серверу, а с NTP сервера получать точные дату/время.
Ну, или вручную устанавливать любым способом, кнопками, через Serial или как-то еще.
@Ruff точность зависит от установленного кварца
Есть ли в планах написать этот проект в CMSIS или в HAL?
Увы, просто не хватает времени изучать среду разработки для STM. Может в будущем буду делать нечто подобное, но это точно не скоро будет
Сейчас есть LL вместо HAL. Изучаю пока нравиться как низкоуроаневая библиотека.
А если нужен календарь? Можно ли брать время и дату с gps?
Календарь присутствует и работает. Посмотрите видео ещё раз.
А как у СТМ с точностью часов?
Зависит от качества кварца. Если китайцы поставят качественный кварц, то и часы будут идти точно.
Потдержевает ли календарь ?
Да, конечно.
А батарейка не будет быстро разряжаться ?
Батарейка используется только для поддержания хода часов. Новой батарейки хватит лет на 5. А может и больше.
У хорошего модуля часов реального времени есть измерение температуры для коррекции хода часов.
Встроенные в стм часы быстро убегут
В часах СТМ есть программная коррекция. Пляски с температурой -- пустое, потому что никогда не предугадаешь, какой кварц пользователь поставит. К тому же, для бытовых целей такие заморочки не нужны, а для лабораторных приборов применяют иные техники. Например, термостатирование при повышенной температуре. Правильный путь для самоделки -- хранить время с доступной точностью + использовать какой-нибудь из способов автоматической синхронизации с эталонными часами.
Эхх, а где код Assembler?
ардуино курит бамбук в сторонке, да даже не бамбук а носки) да там отдельно стоили RTC модули, на выбор один на 3сек в сутки плавал, другой получше дороже чем STM32 STM32F103C8T6, очень не хватает для чайников дырявых уроков. Таким как я. После ардуино очень тяжело без уроков. Словно все воды в рот набрали, не хотят ничем делиться по теме STM32. Только жаль урок не в KEIL, а в ардуино не интересно уже с STM32 работать. Печалька. Урок хороший но фактически не для STM32 а для ардуино. Тема KEIL не раскрыта и куба. Ардуинщиков не выкорчевать из их ардуино. Жаль, но урок оказался бесполезен, так как нужно именно в KEIL объяснить как такое сделать. Неужели настолько никто ничего не знает.
Это палка о двух концах. Те кто реально изучают STM32 не нуждаются в уроках, так как изучают не самостоятельно, а в каком-то учебном учреждении. Самоучек по STM32 единицы. Именно тех, кто пытается осилить STM по даташитам, используя cmsis, stdperiph, Kail и т.д.
И с примерами проблема именно в том что эти все примеры не могут быть применены любым пользователем. Из-за этого и с готовыми библиотеками проблема. Попробую пояснить на примере Ардуино. Среда Ардуино ИДЕ конфигурирует работу микроконтроллера (кода) всегда одним и тем же способом, и программист не имеет доступа к этим настройкам. Их можно изменить только если залезть в конфигурационные Файлы. Любая библиотека для Ардуино всегда создана с расчетом именно на эту неизменную конфигурацию МК. И по этому все методы библиотеки 100% будут работать почти на любой плате Ардуино. Что мы имеем:
1) всегда одинаково сконфигурированный МК
2) всегда одинаковые методы (функции) библиотек и примеров
3) пользователь может применить это (почти) на любой плате Ардуино.
Теперь попробуем сравнить это с STM32.
Я даже не знаю с чего начать. Начнёт с того что существует примерно в 3-4 раза больше сред разработки для STM чем для AVR. Кому-то нравится одна среда, кому-то другая. Методы, Настройки, классы всюду разные. Применить код с одного проекта для другого не возможно. От слова совсем. Даже для одной и той же среды разработки, на пример Keil, есть несколько способов написания кода. И к тому же инициализация микроконтроллера у каждого программиста будет по-разному. По этому один и тот же код на одном МК заработает, а на другом вызовет ошибку. То же самое касается библиотек. Они написаны под конкретную конфигурацию МК, под конкретную методику программирования (stdperiph или cmsis как пример). А это все у каждого программиста своё. По этому найти пример, который у вас заработает без доработки очень и очень сложно. Именно из-за разнообразия сред разработки, языков, методов и нет хоть чего-то единого, что было бы общим для всех, что можно было бы использовать для изучения программирования. По этому изучать STM32 самостоятельно крайне сложно. Так как информации в сети очень много, а применить ее нельзя...
По этому сейчас и возникают разные проекты по упрощению программирования STM. На пример интеграция в среду Ардуино. Или MBED.
Я забросил изучать STM именно потому что в сложившейся обстановке самому изучать крайне сложно, и самостоятельно не получается подняться выше уровня новичка. Потому потому что: 1) мне не известно какие методики программирования являются устаревшими, а какие сейчас используются в первую очередь, по этому легко пойти по «неправильному» пути и просто потерять кучу времени. 2) На поиски информации и примеров уходит крайне много времени. Примеров много но применить их под свою методику программирования почти не возможно. То есть код нужно переписывать самостоятельно с нуля...
Есть только несколько сред разработки которые упрощают написание кода. Это Ардуино ИДЕ и MBED. Кстати, очень рекомендую посмотреть в сторону MBED и попробовать ее в качестве среды для разработки.
@@UCanDo Спасибо большое! Вы правы, с STM32 совсем печалька, но уже освоившим ардуино стоит объединяться и общими силами развивать тему STM32. Понятно что способов множество, но повторять проекты возможно, если использовать одинаковые платы. И STM32 всё же важно развивать OPEN SOURCE проекты для обучения. Ардуино очень хорош, но не ардуино единым сыт человек, STM32 дополняет ардуино. Для себя решил изучать изучать и ещё раз много раз изучать STM32, что бы данный замечательный процессор не оставался в стороне, а создавались OPEN SOURCE проекты. аналогично, как командами ардуинщиков создано изменившие ход истории развитие ардуино. Ардуино это целый пласт истории, даже науки, бесценный вклад команд разработчиков создававших OPEN SOURCE на ардуино. Безусловно, ардуино все любят, но STM32 посовременнее, и как всё современное даже дешевле чем древние ардуино ATMEGA, это как старые компьютеры сравнивать STM32 и ардуино, по работе даже с STM32 разница с первой прошивки огромнейшая. Да и ардуинщики зачастую простенькие проекты делают, для STM32 достаточно просто заполнить сектор простеньких проектов, полньстью заместив ардуино, да даже в ARDUINO IDE его запускать. Важно не на какой среде написали STM32 прошивку, хорошо что и ардуино IDE их поддерживает, как родных, для многих хоть такой "принудительный" переход на STM32 состоится оставшись на ардуино IDE на более производительные микроконтроллеры. Есть версии 103й платы на 128к, это почти как MEGA2560 только в 2 раза меньше памяти, в ардуино работал всегда только с MEGA2560, но и UNO, Leonardo нравились, Leonardo самый нестабильный был, чуть не нравился код впадал в кому. Удавалось выкачивать через диспетчер устройств, и именно из за Leonardo было решено бежать от этих глюков подальше в STM32. Мощность не в пользу ардуино. В STM32 можно фаршировать столько кода, сколько влезет, а Leonardo впадал в кому, фактически если его было не откачивать камни погибали от передозировки кода, программировать их под завязку просто нельзя даже. На деле чуть не на 50% памяти если программировать Leonardo там возможно ожидать стабильность. Вообщем пуколка этот Leonardo был и pro micro. STM32 без вариантов единственная их даже не замена, а единственный пригодный мк.
Согласен, STM32 единственная альтернатива. И цена очень даже не плохая. Я несколько проектов делал используя платы BluePill (stm32f103c8t6). Памяти много, пинов тоже много, + встроенный RTC да и много других плюшек.
Лично я для себя решил постепенно для STM32 переходить в среду MBED. Единственный минус этой среды в том что она «откусывает» приличный кусок памяти МК, но зато это официально поддерживаемая среда от ST.com. В общем, есть свои плюсы и минусы. Ещё из минусов все то же: мало примеров, мало документации мало готового кода..
@@UCanDo Главное всем совместно делать OPEN SOURCE, тем более опыт ардуино у многих огромнейший, эвристическим анализом, только многие уходят в заработки на этом, сходят с дистанции.
Добрый день. По вашим тропкам часы за ночь отстали на час и 10 минут((
Если не прерывать питание от свд и не трогать ресет не смотря на 3VB то часы идут в ногу с внешним секундомером)
Кнопки для настройки прикрутить и будет жить.
Здесь проблема скорее всего в том что неправильно указан источник тактирования для RTC. Если тактирование идёт от внутренней R-C цепочки или от кварца на 8 мГц, то такой результат как у вас вполне ожидаем.
Источником тактирования нужно устанавливать внешний часовой кварц, тогда RTC будут идти верно. + не забудьте о батарейке для питания RTC.
Есть ещё вероятность что у вас бракованный часовой кварц. Но так как у вас часы останавливаются как только отключается питание МК то это однозначно говорит о том что проблема не в кварце, а в том что неправильно выбран источник тактирования.
@@UCanDo Добрый вечер. Я юзал ваш скетч и кроме уарта не чего не удалял и ваш скетч работает до сих пор и было в начале +15 секунд и на сегодняшний час уже +6 секунд от часов что на ПК. У меня есть кварц в железе и думаю попробовать но в момент откл питания и нажатия кнопки ресет от внешней батареи нет смысла в плане что происходит задержка всего процесса на 1 сек и в итоге теперь +5. (+5 : девайс спешит от пк на 5 секунд ) Грубо говоря за 6 часов я отстал на 9 секунд и может быть это кварц или как обычно в иде бывает сама либа.
Кеил с Иаром тоже не фонтан
Странно. Исходя из вашего первого сообщения по симптомам так будто неправильно выбрано тактирование, так как RTC STM32F103C8T6 зависит от источника тактирования и от питания. Питание должно идти от батарейки, а тактирование от часового кварца.
Если эти настройки установлены верно, то ни подключение/отключение питания (общего) к плате, ни сброс микроконтроллера не должны влиять на поведение RTC! И, если не ошибаюсь, в большинстве случаев даже перепрошивка может не повлиять на работу модуля RTC.
Но вот если тактирование идет от другого источника, или с питание что-то не так, то часы ведут себя неадекватно.
Истолники
И да, китыйцы могли поставить некачественный (не точный) кварц, из-за которого часы могут уходить.
P.S. у меня была ситуация: брал новую плату BluePill, прошивал, проверял, RTC работает. Потом запаивал "гребенку", устанавливал в плату - не работает! Проблема оказалась в том что капелька флюса (не металла, а пасты) просочилась под кварц. Помогло только несколько раз промывание в спирте и в чистой воде. После этого заработало корректно. А до этого что только не делал - RTC работал криво.
@@UCanDo Может я сниму видео или обен вацап или телеги и я покажу что не на шаг не уходил от вашего проекта и в итоге то о чем я пытаюсь тут изложить.
У меня есть знакомый которой в иар на хардкоре чистом С разраб прошивок на STM32/8 ваяет прошивки и при этом находит разницу за месяц и делает поправку одометра на каждый км пути.
Я этим хотел сказать что и либа не причем иногда но и есть фактор того что в даташите и реле на железе не особо правдиво даже мне это напоминает Proteus где в в реале всё ок а на железе в реале её ещё неделю поиска заветной цифры((
Можете в моей группе в Телеграмм написать, может ещё кто-то подключится и поможет: t.me/HomeMadeChannel
Опыт показал, что точно слабовата у этих часов...
Точность зависит в первую очередь от кварца. Китайцы могут поставить кварцы ужасного качества. Недавно я делал одно устройство, так Часы шли в 6!!! раз быстрее.
Это все решается заменой кварца на качественный
@@UCanDo
Да, верно, с точностью в Ардуино ИДЕ все хреново, потому что используется не тот кварц, который установлен на плате, а тот, который имеется внутри самого контроллера - я это проверил опытным путем: тот же проект с часами сделал не в Ардуино ИДЕ, а через КубМХ в кеил. Сначала указывал использовать внутренний кварц - часы шли точно также неточно, как и в Ардуино ИДЕ. Потом поменял на внешний кварц, и ... О, чудо! Точность стала изумительной! Как изменить на внешний в Ардуино ИДЕ - я не разобрался
Тоже с этим столкнулся, но причина и решение оказались элементарными. Источник тактирования указывается при настройке RTC:
RTClock rt (RTCSEL_LSE); // initialise
где:
LSE - тактирование от часового кварца
LSI - тактирование от внутренней RC цепочки с частотой 4 МГц
HSE - тактирование с частотой 8/128MHz = 62500 Hz, но что за источник - я не разбирался
DEFAULT и NONE - отключение RTC
По умолчанию во всех примерах стоит тактирование от внутренней RC цепочки с частотой 4 МГц (RTCSEL_LSI), а у этой цепочки частота жутко плавает.
Home Made - То, что ты можешь сделать
1.LSI - Low speed internal - Внутренний низкочастотный генератор (RC цепь, 40KHz) 2. LSE - Low speed external - внешний низкочастотный генератор (часовой кварц, 32.768KHz) 3. HSE - high speed external - высокочастотный внешний генератор (8MHz кварц)
Кощунство программировать STM в ардуино ide
Где кнопки для установки времени? Так не интересно.
В видео показано только наличие RTC. Где и как вы его будете использовать - это уже каждый решает сам.
А кнопки - прошлый век :) Надо обновляться от NTP сервера
Я всё понимаю. Но. Представьте что я подарю эти красивые часы своему корешу, живущему в другом часовом поясе. И что? А батарейка сядет через два года у него в деревне ? Вещи получаются красивые, но кнопочки хотелось-бы.
Повторюсь. В видео показано только один фактор.
Это все равно что если бы я рассказывал о шинах, а от меня требовали машину...
Если вам нужны кнопки - поставьте. Это ваш индивидуальный проект, с вашими индивидуальными потребностями. На канале 60000 подписчиков. Представьте если каждый потребует что-то своё, индивидуальное...
на ардуино ФУ
Я сделал таймер 6 часов насос работает и 6 часов не работает на Arduino nano. Задал время
unsigned long timer = 0;
boolean flag = 0;
unsigned long ON = 64800000; // 1000 миллисекунд в секунде * 60 секунд в минуте * 60 минут в часе * 18 часов
unsigned long OFF = 21600000; // 6 часов
void setup(){
pinMode(17, OUTPUT);
digitalWrite(17, 1);}
void loop(){
if(millis() - timer > OFF && flag == 0){
timer = millis();
digitalWrite(17, 0);
flag = 1;}
if(millis() - timer > ON && flag == 1){
timer = millis();
digitalWrite(17, 1);
flag = 0;}}
Это самый неточный таймер в мире. millis, тем более в таком исполнении, очень сильно гуляет.
Home Made - То, что ты можешь сделать Я проверял. Реально работает, и тебе советую.
@@UCanDo Можно подробнее о таймере? Столкнулся с проблемой подсчёта ёмкости АКБ и именно на этой функции if(millis() - time было всё завязано и время и подсчёт емкости, приходилось подгонять миллисекунды иначе счёт с реальным и стартовым временем очень отличался!
Я и не спорю что не работает :)
Я лишь хочу сказать что каждому примеру - свое место. Ваш пример для вас идеально подходит. И я вас поддерживаю, так как самое простое решение и есть самое лучшее. Я сам так часто делаю.
Но использовать этот способ для точного подсчета времени нельзя, так как ошибка может составить до нескольких десятков минут за сутки. То есть вероятность ошибки и ее размеры непредсказуемы. И не учитывается сбой, который у вас произойдет при переполнении таймера, который подсчитывает millis();
@Евгений, на какой платформе это делаете? На Ардуино (Atmega328), или на STM32, или на чем-то другом? Для разных платформ - разные способы решения
К сожалению,точность -1 минута в час.Проверено на двух платах.
Ну и нафига они нужны. Баловство, игрушка.
Точность зависит от кварца. Если у вас часы настолько уходят, значит китайцы поставили бракованные кварцы. Замените их и все будет работать нормально
Можно ли подключить ds3231?Точность-секунды в год
Можно конечно.
А как?