EdgeAligned 86 8 мая Опубликовано 8 мая (изменено) · Жалоба 2 часа назад, Dvorkin сказал: а штатную - выкинуть. Штатную - это какую? У МК штатная - записана в мануале. Её предлагаете выкинуть? Ну-ну. Ознакомьтесь с референс-мануалом. Всё, что запитано от домена бэкапа, то есть от батарейки, оно после сброса не изменяет своего состояния и продолжает работать. Инициализация RTC не требуется, если не нужно изменять текущее время. RTC продолжают работать с заданными настройками даже после выключения питания (при наличии "часовой" батарейки). Есть некоторые особенности синхронизации для получения текущего времени, но это не относится к инициализации. .... Вот, даже не поленился открыть мануал и процитировать выдержку из его: Resetting the RTC The calendar shadow registers (RTC_SSR, RTC_TR and RTC_DR) and some bits of the RTC status register (RTC_ISR) are reset to their default values by all available system reset sources. On the contrary, the following registers are reset to their default values by a Backup domain reset and are not affected by a system reset: the RTC current calendar registers, the RTC control register (RTC_CR), the prescaler register (RTC_PRER), the RTC calibration register (RTC_CALR), the RTC shift register (RTC_SHIFTR), the RTC timestamp registers (RTC_TSSSR, RTC_TSTR and RTC_TSDR), the RTC tamper configuration register (RTC_TAMPCR), the RTC backup registers (RTC_BKPxR), the wakeup timer register (RTC_WUTR), the Alarm A and Alarm B registers (RTC_ALRMASSR/RTC_ALRMAR and RTC_ALRMBSSR/RTC_ALRMBR), and the Option register (RTC_OR). In addition, when it is clocked by the LSE, the RTC keeps on running under system reset if the reset source is different from the Backup domain reset one (refer to the RTC clock section of the Reset and clock controller for details on the list of RTC clock sources not affected by system reset). When a Backup domain reset occurs, the RTC is stopped and all the RTC registers are set to their reset values. Сброс часов реального времени Теневые регистры календаря (RTC_SSR, RTC_TR и RTC_DR) и некоторые биты регистра состояния RTC (RTC_ISR) сбрасываются в значения по умолчанию всеми доступными источниками системного сброса. Напротив, следующие регистры сбрасываются до значений по умолчанию при сбросе резервного домена и не затрагиваются системным сбросом: регистры текущего календаря RTC, регистр управления RTC (RTC_CR), регистр прескалера (RTC_PRER), RTC регистр калибровки (RTC_CALR), сдвиговый регистр RTC (RTC_SHIFTR), регистры меток времени RTC (RTC_TSSSR, RTC_TSTR и RTC_TSDR), регистр конфигурации тампера RTC (RTC_TAMPCR), резервные регистры RTC (RTC_BKPxR), регистр таймера пробуждения (RTC_WUTR) , регистры сигнализации A и сигнализации B (RTC_ALRMASSR/RTC_ALRMAR и RTC_ALRMBSSR/RTC_ALRMBR) и регистр опций (RTC_OR). Кроме того, когда он тактируется LSE, RTC продолжает работать при сбросе системы, если источник сброса отличается от источника сброса резервного домена (подробную информацию о списке см. в разделе часов RTC контроллера сброса и синхронизации). Источники часов RTC, на которые не влияет сброс системы). Когда происходит сброс резервного домена, RTC останавливается, и для всех регистров RTC устанавливаются значения сброса. Именно поэтому, инициализация уже запущенного RTC - не требуется. Её нужно выполнять только при изменении текущего времени/даты. RTFM! Хотяяя, если вы опираетесь только на то, что написано в HAL - ну тогда тут всё ясно. Халоводы мануалов то не читают, и незнание матчасти им простительно 🙂 2 часа назад, Dvorkin сказал: И с чем же вы там разобрались? Насколько помню, разобрали все возможные случаи, включая неверно выбранный источник тактирования, неверно выбранные предделители, кварц с ±30 ppm, несмытый флюс, и даже косяк самого МК в виде использования соседнего пина, о котором сказано в эррате. Изменено 8 мая пользователем EdgeAligned Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dvorkin 1 13 мая Опубликовано 13 мая · Жалоба On 5/8/2024 at 6:14 PM, EdgeAligned said: Штатную - это какую? У МК штатная - записана в мануале. Её предлагаете выкинуть? Имелась в виду инициализация MX_RTC_Init(), сгенерированная CubeIDE. On 5/8/2024 at 6:14 PM, EdgeAligned said: Хотяяя, если вы опираетесь только на то, что написано в HAL - ну тогда тут всё ясно. Халоводы мануалов то не читают, и незнание матчасти им простительно 🙂 Все понятно, я в религиозных войнах не участвую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 13 мая Опубликовано 13 мая · Жалоба Что вы, никаких холиваров! Но CubeMX не отменяет чтение мануалов! Можно писать с помощью HAL, но мануальчики читать всё равно следует. А то так и будет, что "нажатие кнопки Reset портит счетчик субсекунд" 🙂 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dvorkin 1 23 мая Опубликовано 23 мая · Жалоба On 5/13/2024 at 12:59 PM, EdgeAligned said: Что вы, никаких холиваров! Но CubeMX не отменяет чтение мануалов! Можно писать с помощью HAL, но мануальчики читать всё равно следует. А то так и будет, что "нажатие кнопки Reset портит счетчик субсекунд" 🙂 Я вам про Фому, а вы мне про Ерему... Тогда вообще этот форум закрывать надо, ибо все написано в мануалах, и нефиг задавать глупые вопросы. И про уход частоты кварцевых резонаторов написано, и про технологию изготовления плат, а уж errata sheet - вообще настольная книга каждого разработчика. Однако, как вы справедливо отметили: On 5/8/2024 at 6:14 PM, EdgeAligned said: Насколько помню, разобрали все возможные случаи, включая неверно выбранный источник тактирования, неверно выбранные предделители, кварц с ±30 ppm, несмытый флюс, и даже косяк самого МК в виде использования соседнего пина, о котором сказано в эррате. Значит, остаются вопросы у людей. Ошибаются, что-то не учитывают. Вот для того форум и нужен, чтобы делиться опытом. И то, что я написал про особенности инициализации RTC - не все знают, и кому-то будет полезно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 23 мая Опубликовано 23 мая · Жалоба Так тут же и было это написано, просто вы не читали. Что касается "особенностей инициализации", то, боюсь, в этом вопросе вы не правы. Вы должны были объяснить, что после системного сброса запущенные ранее RTC продолжают работать, потому инициализацию проводить вообще не нужно, часы уже работают с заданными ранее настройками, поскольку запитаны от отдельного несбрасываемого системным сбросом домена. Есть еще одна "чудесная фича", которую пользователи HAL не знают в силу нечитания мануалов. LSI выключается при системном сбросе. А LSE - не выключается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 23 мая Опубликовано 23 мая · Жалоба 6 часов назад, Dvorkin сказал: И то, что я написал про особенности инициализации RTC - не все знают, и кому-то будет полезно. Если сократить 5 страниц до одного предложения - в чем особенности? Ну или ссылку на пост прикрепите, пожалуйста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dvorkin 1 24 мая Опубликовано 24 мая · Жалоба On 5/23/2024 at 4:03 PM, Arlleex said: Если сократить 5 страниц до одного предложения - в чем особенности? Ну или ссылку на пост прикрепите, пожалуйста. и Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 86 24 мая Опубликовано 24 мая · Жалоба Дворкин, перестаньте флудить 🙂 Всё тут уже разобрали, прочитайте тему от начала до конца. И прочтите мануал, в конце концов - хоть будете знать, как RTC работают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RDutch 0 4 июня Опубликовано 4 июня · Жалоба В 11.01.2024 в 11:01, RDutch сказал: Временное решение было таким: основываясь на 10 экземплярах устройства, был вычислен калибровочный коэффициент Возникла идея при очередной синхронизации вычислить дельту, на сколько время убежало. На эту дельту откалибровать часы. Делать эту операцию при каждой синхронизации. Таким образом каждое устройство будет калиброваться самостоятельно. И чем чаще оно катается без связи - тем точнее будет калибровка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mitya1698 18 4 июня Опубликовано 4 июня · Жалоба В 15.01.2024 в 18:48, jcxz сказал: Или скажем - многоквартирный дом, оборудованный такими счётчиками. И каждый Новый год жители неделю сидят без света, так как управляющая компания вынуждена снимать все счётчики в доме и выносить их на прожарку. так по факту время на этих счетчиках за несколько лет и ушло на минуты или десятки минут, но фактически это никого не парит включая энергосбыт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Михась 4 5 июня Опубликовано 5 июня (изменено) · Жалоба RM0090 Reset and clock control for STM32F405xx/07xx and STM32F415xx/17xx(RCC) 7.2.11 Internal/external cl ock measurement using TIM5/TIM11 It is possible to indirectly measure the frequencies of all on-board clock source generators by means of the input capture of TIM5 channel4 and TIM11 channel1 as shown in Figure 23 and Figure 24. Internal/external clock measurement using TIM5 channel4 TIM5 has an input multiplexer which allows choosing whether the input capture is triggered by the I/O or by an internal clock. This selection is performed through the TI4_RMP [1:0] bits in the TIM5_OR register. The primary purpose of having the LSE connected to the channel4 input capture is to be able to precisely measure the HSI (this requires to have the HSI used as the system clock source). The number of HSI clock counts between consecutive edges of the LSE signal provides a measurement of the internal clock period. Taking advantage of the high precision of LSE crystals (typically a few tens of ppm) we can determine the internal clock frequency with the same resolution, and trim the source to compensate for manufacturing-process and/or temperature- and voltage-related frequency deviations. The HSI oscillator has dedicated, user-accessible calibration bits for this purpose. The basic concept consists in providing a relative measurement (e.g. HSI/LSE ratio): the precision is therefore tightly linked to the ratio between the two clock sources. The greater the ratio, the better the measurement. It is also possible to measure the LSI frequency: this is useful for applications that do not have a crystal. The ultralow-power LSI oscillator has a large manufacturing process deviation: by measuring it versus the HSI clock source, it is possible to determine its frequency with the precision of the HSI. The measured value can be used to have more accurate RTC time base timeouts (when LSI is used as the RTC clock source) and/or an IWDG timeout with an acceptable accuracy. Use the following procedure to measure the LSI frequency: 1. Enable the TIM5 timer and configure channel4 in Input capture mode. 2. Set the TI4_RMP bits in the TIM5_OR register to 0x01 to connect the LSI clock internally to TIM5 channel4 input capture for calibration purposes. 3. Measure the LSI clock frequency using the TIM5 capture/compare 4 event or interrupt. 4. Use the measured LSI frequency to update the prescaler of the RTC depending on the desired time base and/or to compute the IWDG timeout. ----------------------------- Счетчик таймера T5/ -32х битный, соответственно в него влезет очень много клоков от LSE :). Вам повезло Изменено 5 июня пользователем Михась Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться