Jump to content

    

stm32 измерение времени

Recommended Posts

bolmoe

Доброго времени суток! Проблема такая... Использую nucleo f429zi, библиотека HAL. На табло отображается время отсчета сек и до десятых мс. На lpc1768 отображалось с хорошей точностью. Перетянул код "сюда", адаптировав... НО, точность времени убегает за 10 минут секунд на 5-6. Проверил все, что только можно. На входе используется 8МГц, после умножителя на таймер 90МГц. Изначально использовал HAL_GetTick() - его точности для моего случая вполне хватало, но заметили что врем "убегает". Перевел га TIMER2 - ситуация аналогична. Перевел на внутренний кварц 16МГц - ситуация не изменилась. Предделитель в таймере увеличил на 1. Таймер стал опаздывать. Кто может встречался с такой ситуацией, подскажите куда копать!

Share this post


Link to post
Share on other sites

adnega
31 минуту назад, bolmoe сказал:

Предделитель в таймере увеличил на 1. Таймер стал опаздывать. Кто может встречался с такой ситуацией, подскажите куда копать!

Предделитель и делитель должны быть на единицу меньше требуемого значения.

Share this post


Link to post
Share on other sites

bolmoe

Предделитель пользую (-1 в курсе, т.к. счет от 0), да и HAL_GetTick() вытаскивает мс от старта MCU - по большому счету мне этого хватает по точности, но вот "проблемс" мне не понятен в корне...

Share this post


Link to post
Share on other sites

adnega

Нужен исходник. Какие именно у вас значения. Не замечал, чтоб таймеры в STM32 как-то не так делили, точность определяется только точностью опорной частоты.

Кста, внутри не кварц, а RC-генератор. У него точность хуже и примерно 1% (как в вашем случае) - это типичная ошибка. Вам нужен именно кварцевый резонатор/генератор в качестве опоры.

Share this post


Link to post
Share on other sites

AVI-crak
3 hours ago, bolmoe said:

На табло отображается время отсчета сек и до десятых мс.

Там до миллионных долей можно разогнать: малошумящие компараторы, оптика, и отдельный ldo на VDDA. 

И ещё, настройку PLL лучше делать руками и через регистры. Халл включает качание PLL для уменьшения эми помех.

 

Share this post


Link to post
Share on other sites

Arlleex
5 часов назад, AVI-crak сказал:

Там до миллионных долей можно разогнать: малошумящие компараторы, оптика, и отдельный ldo на VDDA. 

И ещё, настройку PLL лучше делать руками и через регистры. Халл включает качание PLL для уменьшения эми помех.

Какие компараторы, какая оптика, какое еще качание PLL в F429? Вы о чем?

Share this post


Link to post
Share on other sites

bolmoe

Попробую впаять генератор на 8 МГц. В исходной плате место пустует (но присутствует), а поступает с MCO ножки программатора ST-LINK интегрированного в плату.

Share this post


Link to post
Share on other sites

AVI-crak
1 hour ago, Arlleex said:

Вы о чем?

Входные цепи должны иметь максимальную стабильность характеристик, чтоб не плавало само по себе. А насчёт качания PLL, у меня для вас плохие новости - у вас 1 пропущенный параграф доки.

 

28 minutes ago, bolmoe said:

Попробую впаять генератор

 Кроме кварца, нужно ещё ldo на VDDA. Там детальки мелкие, не знаю как у вас получится. Питание аналоговой части должно быть независимым, и идеально стабильным.

Share this post


Link to post
Share on other sites

Arlleex
50 минут назад, AVI-crak сказал:

А насчёт качания PLL, у меня для вас плохие новости - у вас 1 пропущенный параграф доки.

Нашел. У ST дебильная привычка предусмотреть какой-то функционал, но не дать на него описание в основном descrition-блоке. Не в первый раз.
 

Цитата

 Кроме кварца, нужно ещё ldo на VDDA.

Достаточно примитивного LC-фильтра отводом от основного VDD.

Share this post


Link to post
Share on other sites

jcxz
13 часов назад, bolmoe сказал:

Перевел на внутренний кварц 16МГц - ситуация не изменилась.

Это что ещё за кварц такой? "внутренний"  :wacko2:

2 часа назад, bolmoe сказал:

Попробую впаять генератор на 8 МГц.

Имхо: Вам надо подтянуть знания по терминологии, которую используете. Узнать что такое RC-генератор, что такое кварцевый резонатор и что такое генератор (чип-генератор). Это всё совершенно разные сущности.

А то из ваших постов ничего не понятно - что и откуда подаёте.

Share this post


Link to post
Share on other sites

haker_fox
1 hour ago, Arlleex said:

Достаточно примитивного LC-фильтра отводом от основного VDD.

ИМХО, лучше RC)) Резонансы RLC цепи не надо будет ловить...

Share this post


Link to post
Share on other sites

bolmoe

Установил кварцевый резонатор на 8МГц. AVCC подключено через индуктивность к 3.3В (по схеме). В режиме debug проверил RCC->SSCGR ( эми помехи) = 0, т.е. выключено. Результат тот же, таймер "убегает".

Share this post


Link to post
Share on other sites

jcxz
3 часа назад, bolmoe сказал:

Результат тот же, таймер "убегает".

ну что-ж - теперь пора наконец-то начинать искать баги в своём коде. Самое время, раз пинание колёс не помогает.    :wink:

Share this post


Link to post
Share on other sites

k155la3
On 4/21/2022 at 10:50 PM, bolmoe said:

1) . . . . На lpc1768 отображалось с хорошей точностью.

2) .. НО, точность времени убегает за 10 минут секунд на 5-6. 

1. Для такой "сверхзадачи" точность должна быть абсолютной.

2. Убегает "точность" не очень понятно. Чем контролируете время или частоту ? (частотомер, осциллограф, таймер)

Для Вашего случая возможно и так достаточно имеющегося часового кварца 32768, тк требуемая точность 1/10000 вполне себе сравнима с 1/32768.

 

Share this post


Link to post
Share on other sites

bolmoe

Спасибо за советы! Сегодня принес цифровой анализатор и посмотрел HSE на MCO1. F=7.69 MHz примерно, вместо ожидаемых 8 МГц

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.