реклама на сайте
подробности

 
 
> STM32F103C8T - перезапуск таймера от внешнего сигнала
varvar
сообщение Mar 27 2016, 09:04
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811



Пытаюсь перенести на STM32 свой старый проект на MSP430. И второй день туплю с применением таймера.
Делаю OSD. Алгоритм простой - на ногу 10 (PA0) подключен HSYNC. От него должен запустится таймер (TIM2) и запустить через какое-то время DMA и вызвать прерывание. Хотелось бы все сделать с минимумом кода, момент запуска DMA должен быть точно привязан к HSYNC, иначе изображение будет дергаться.
Задом чуствую, как-то надо использовать one pulse mode, но не выходит каменный цветок sad.gif
Прошу помощи более опытных товарищей - с STM32 я только начал играться. Ткните носом в пример кода инициализации таймера sm.gif

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
varvar
сообщение Mar 28 2016, 15:27
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 93
Регистрация: 5-01-05
Из: Оулу
Пользователь №: 1 811



Цитата(Tarbal @ Mar 28 2016, 17:05) *
Я бы сделал следующим образом:
Подключить строчный синхроимпульс ко входу input capture свободно бегущего таймера.
В обработчике прерывания input capture прибавил к захваченному значению требуемое время задержки в тиках таймера (h front porch) и записал полученную сумму в compare register для output compare того же таймера. В обработчике прерывания output compare запускать DMA.
Если не все понятно -- могу углубиться в детали.

Примерно так кода-то делал - на другом процессоре - наложенное изображение дергается, немного, но неприятно. А когда таймер, запускаемый от hsync автоматически запускает DMA безо всяких прерываний - получается абсолютно стабильная картинка. Теоретически и STM32 должно быть то же самое - но пока у меня DMA от таймера запускается - но со временем какая-то беда, что-то не так настраиваю. В примере от ST пишут, что используется CCR1, а что-то непонятное они делают с CCR2 (/Project/STM32xx_StdPeriph_Examples/TIM/OnePulse folder.)
В принципе, эта идея вролне совместима с Вашей - вполне можно вместо вызова прерываний запустить DMA, если мой вариант не сработает - попробую Ваш.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Mar 28 2016, 18:38
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(varvar @ Mar 28 2016, 19:27) *
Примерно так кода-то делал - на другом процессоре - наложенное изображение дергается, немного, но неприятно. А когда таймер, запускаемый от hsync автоматически запускает DMA безо всяких прерываний - получается абсолютно стабильная картинка. Теоретически и STM32 должно быть то же самое - но пока у меня DMA от таймера запускается - но со временем какая-то беда, что-то не так настраиваю. В примере от ST пишут, что используется CCR1, а что-то непонятное они делают с CCR2 (/Project/STM32xx_StdPeriph_Examples/TIM/OnePulse folder.)
В принципе, эта идея вролне совместима с Вашей - вполне можно вместо вызова прерываний запустить DMA, если мой вариант не сработает - попробую Ваш.


Вам надо найти если возможно заускать DMA по таймеру или output compare -- тогда и предложенный мной способ будет безупречен sm.gif.

В моем предложении задержка с прерыванием, запускающим DMA может привести к дерганью картинки. Но всегда можно найти способ улучшить. Навскидку:
поставить прерывание на время перед окончанием front porch и запретить все остальные прерывания, разрешив их после старта DMA.
Второй вариант -- остальные процессы делать без прерываний, либо синхронизировать с hsync, избегая опасного участка -- момента окончания front porch.
Третий вариант -- делать ожидание окончания front porch чуть короче и выжигать время в цикле внутри прерывания.
Задержка с input capture interrupt пофиг. Там железо захватывает значение в регистр.

Цитата(jcxz @ Mar 28 2016, 20:58) *
Нет конечно, такое гумно не использую. USB-стек из примеров IAR, остальное (кроме uCOS) - своё.


Я с кубовым подхожу к окончанию проекта. Нареканий нет.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- varvar   STM32F103C8T - перезапуск таймера от внешнего сигнала   Mar 27 2016, 09:04
- - kolobok0   Цитата(varvar @ Mar 27 2016, 12:04) ...Тк...   Mar 27 2016, 10:56
- - scifi   Можно и по старинке - почитать мануал, понять, как...   Mar 27 2016, 10:58
- - varvar   Спасибо на добром слове, вот такая заготовка зараб...   Mar 27 2016, 11:51
|- - AleksBak   Цитата(varvar @ Mar 27 2016, 15:51) ...Ну...   Mar 28 2016, 06:07
- - varvar   scmRTOS чудесно работает с CMSIS, а куб генерирует...   Mar 28 2016, 08:19
|- - AleksBak   Цитата(varvar @ Mar 28 2016, 12:19) scmRT...   Mar 28 2016, 09:30
- - varvar   Цитата(AleksBak @ Mar 28 2016, 12:30) А г...   Mar 28 2016, 09:51
|- - AleksBak   Цитата(varvar @ Mar 28 2016, 13:51) На со...   Mar 28 2016, 11:07
|- - jcxz   Цитата(varvar @ Mar 28 2016, 15:51) На со...   Mar 28 2016, 16:35
- - Tarbal   Цитата(varvar @ Mar 27 2016, 13:04) Пытаю...   Mar 28 2016, 14:05
|- - jcxz   Цитата(Tarbal @ Mar 29 2016, 00:38) Я с к...   Mar 28 2016, 23:53
- - varvar   Цитата(jcxz @ Mar 28 2016, 19:35) Всё в с...   Mar 28 2016, 16:48
|- - jcxz   Цитата(varvar @ Mar 28 2016, 22:48) И все...   Mar 28 2016, 16:58
- - Tarbal   Та мода, что вы описали есть в STM32F429. В описан...   Mar 29 2016, 02:40
- - Tarbal   Ну что у вас? Получилось?   Apr 1 2016, 15:15
- - varvar   Цитата(Tarbal @ Apr 1 2016, 18:15) Ну что...   Apr 2 2016, 13:54
- - Tarbal   Ну и хорошо   Apr 3 2016, 17:21
- - Огурцов   почему бы не использовать spi в режиме slave, дёрг...   Apr 3 2016, 18:09
- - varvar   Цитата(Огурцов @ Apr 3 2016, 21:09) почем...   Apr 4 2016, 08:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01411 секунд с 7
ELECTRONIX ©2004-2016