Полная версия этой страницы:
STM32F407VG ШИМ на порту РА1
DerKetzer
Jun 4 2014, 01:59
Отладочная плата STM32F4Descovery. Настраиваю шим от таймера 2 на порту РА1. ШИМ начинает работать только через минуту.. Вся остальная периферия и ШИМ на Других портах работают нормально и сразу. В чем может быть проблема? Попробовал на другой отладочной плате. Абсолютно то же самое. На этот пин включаю канал пятого таймера. То же самое..Включается гдето через минуту.
Golikov A.
Jun 4 2014, 02:39
настройки таймера по переполнению применяются после срабатывания события таймера - переполнение. То есть настроив его на новый режим работы, пока он старую программу не дотикает новая не начнется... Видать клок у вас на нем маленький вот он и тикает минуту... Там есть какой то прием как его заставить тикнуть сразу после новых настроек
DerKetzer
Jun 4 2014, 02:42
Шим настраиваю аппаратный. Тоесть от софта не зависит. а частота нормальная. Тоесть настраиваю регистры. Контроллер запускается и только через минуту начинает выдавать мне шим с нужной мне частотой 32768 гц
Golikov A.
Jun 4 2014, 03:32
Так... Сразу не получилось попробуем еще раз
я взял описание вашего проца, читаю там
The auto-reload register is preloaded. Writing to or reading from the auto-reload register
accesses the preload register. The content of the preload register are transferred into the
shadow register permanently or at each update event (UEV), depending on the auto-reload
preload enable bit (ARPE) in TIMx_CR1 register. The update event is sent when the counter
reaches the overflow and if the UDIS bit equals 0 in the TIMx_CR1 register. It can also be
generated by software. The generation of the update event is described in details for each
configuration.
Поясняю. Когда вы настраиваете свой аппаратный шим, вы пишете не в его регистры, а в их теневую копию. И только когда таймер который генерит шим доработает свою настройку до момента обновления, только тогда применяться ваши новые настройки. После ресета процессора таймер на что-то настроен и пока он не дотикает до переполнения ваши настройки не применяться. Видимо время тика таймера с теми делителями что вы ставите как раз минута, после чего в него загружается новое значение ограничения и он начинает сбрасываться с заданной частотой....
DerKetzer
Jun 4 2014, 04:34
Наверное так и есть. Считает до переполнения 32 разрядного счетчика. Потом уже применяет выставленные в регистрах значения. Спасибо
Так и есть. Есть бит в регистре который называется update.Говорит таймеру что надо обновиться. Его выставил и все работает сразу.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.