Velund 0 14 марта, 2019 Опубликовано 14 марта, 2019 · Жалоба Доброго всем времени суток. Пытаюсь изобразить низкочастотный частотомер на оставшихся "невостребованными" ресурсах у контроллера (TIM3 и pin PA6). Планировалось вычитывать раз в секунду таймер и либо считать приращение, либо вообще его обнулять. Но, что то пошло не так. То, что кубу с таймерами кроме нескольких "учебных" вариантов верить нельзя я понял почти сразу, но даже вручную по даташиту как то не так получается (LL от куба остался, но куб выкинут и далее все руками). Может быть уважаемые гуру могут подкинуть для примера проверенный код инициализации таймера в Ext. Clock Mode 1 для контроллеров этого семейства? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 14 марта, 2019 Опубликовано 14 марта, 2019 · Жалоба 9 minutes ago, Velund said: но даже вручную по даташиту как то не так получается (LL от куба остался, но куб выкинут и далее все руками). "Вручную по даташиту" - это БЕЗ всяких LL, т.е. ограничиваемся только соотв. готовым h-файлом с описанием регистров и их битовых полей для выбранного МК. Этого вполне достаточно. Не забываем включать тактирование таймера и правильно настраивать предделитель шины, на которой он висит (см. RCC). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Integro 0 14 марта, 2019 Опубликовано 14 марта, 2019 (изменено) · Жалоба 20 часов назад, Velund сказал: Может быть уважаемые гуру могут подкинуть для примера проверенный код инициализации таймера в Ext. Clock Mode 1 для контроллеров этого семейства? Примеры лежат в папке с "репозиторием" куба STM32F0xxx/Projects/BoardXXX/Examples/TIM Пуст к "репозиторию" можно посмотреть в настройках. 19 часов назад, Forger сказал: это БЕЗ всяких LL, т.е. ограничиваемся только соотв. готовым h-файлом с описанием регистров и их битовых полей для выбранного МК. Не нужно путать HAL и LL LL- это и есть по сути регистры, макросы и битовые маски, почти весь функционал находится в H файлах за некоторым исключением. Изменено 15 марта, 2019 пользователем makc Убран оффтопик Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Velund 0 14 марта, 2019 Опубликовано 14 марта, 2019 · Жалоба 6 hours ago, Integro said: Примеры лежат в папке с "репозиторием" куба STM32F0xxx/Projects/BoardXXX/Examples/TIM Спасибо за подсказку, но увы, интересующего меня примера я так и не обнаружил. Ближайшее, что есть к интересовавшему - пример с Input Capture, которым измеряют период. У меня на эту реализацию уже ресурсов по любому нет, и мне не нужен период, мне нужна усредненная за секунду частота (и чтобы скважность которая может гулять в очень широких пределах не влияла сильно). Т.е. просто и тупо - таймер с внешним тактированием, который должен инкрементироваться каждым фронтом входного сигнала и будет обчитываться раз в секунду. Без прерываний и прочего. С абсолютным минимумом нагрузки на процессор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 14 марта, 2019 Опубликовано 14 марта, 2019 · Жалоба 35 minutes ago, Velund said: Без прерываний и прочего. С абсолютным минимумом нагрузки на процессор. Одно другому противоречит! Нужен таймер секундных отчетов. Если не занят таймер systick, то он вполне подойдет. Если стоит RTOS, то задача становится еще проще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Velund 0 14 марта, 2019 Опубликовано 14 марта, 2019 · Жалоба 3 hours ago, Forger said: Одно другому противоречит! Нужен таймер секундных отчетов. Если не занят таймер systick, то он вполне подойдет. Не противоречит. Имелось в виду отсутствие собственных прерываний. Systick занят делом (миллисекундный таймер), но в его обработчике вполне все уместится. RTOS для камешка в TSSOP-20 с 16К флеша как то больно жирный заход. Собственно запустил уже. Ручным дерганием битов в регистрах. При этом ту же конфигурацию пробовал с использованием дефайнов и макросов LL запустить - она не пошла. Позже может покопаю где собака порылась, но по ходу для LL инклюды тоже индусам оутсорсят. ;) Клоки еще LL включал. GPIOA->MODER =(GPIOA->MODER &~(GPIO_MODER_MODER6))|(GPIO_MODER_MODER6_1); GPIOA->AFR[0] |= 0x01 << (6 * 4); TIM3->CCMR1 |= TIM_CCMR1_IC1F_0 | TIM_CCMR1_IC1F_1 | TIM_CCMR1_CC1S_0; TIM3->CCER &=(uint16_t)(~TIM_CCER_CC1P); TIM3->SMCR |= TIM_SMCR_SMS | TIM_SMCR_TS_2 | TIM_SMCR_TS_0; TIM3->CR1 |= TIM_CR1_CEN; А куб... Он удобен когда надо камешек подобрать, пины на функционал "развесить" и с тактировками разобраться. А дальше по ходу становится злом... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 15 марта, 2019 Опубликовано 15 марта, 2019 · Жалоба 10 hours ago, Integro said: LL- это и есть по сути регистры, макросы и битовые маски, почти весь функционал находится в H файлах за некоторым исключением. 1 hour ago, Velund said: При этом ту же конфигурацию пробовал с использованием дефайнов и макросов LL запустить - она не пошла. Позже может покопаю где собака порылась, но по ходу для LL инклюды тоже индусам оутсорсят. ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 15 марта, 2019 Опубликовано 15 марта, 2019 · Жалоба 9 часов назад, Velund сказал: интересующего меня примера я так и не обнаружил. В реф. мануале на странице 309 есть пример использования External clock source mode 1 и картинка Figure 109. TI2 external clock connection example Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться