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

 
 
 
Reply to this topicStart new topic
> stm32f4 tim oc+ic, сброс состояния OC по захвату значения IC
klen
сообщение Sep 21 2016, 20:20
Сообщение #1


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Здравствуйте.
техническая задача не оригинальна. делаю очередной собственный велосипед - контроллер системы зажигания для маленького двухцилиндрового моторчика.
сечас на макете первый вариант кода работает так: таймер tim2 на первом канале вылавливает значение времени в тиках фронта датчика хола на коленвале, таймер крутится по кругу непрерывно. в прерывании захвата я забираю значение времени из него вычитаю предыдущее которое хранится в временной переменной. таким образом по каждому фронту я узнаю текущий период оборота КВ. тут же я расчитыааю задержку на импульс зажигания и записываю в регистры сравнетя ведомого tim5. которыйработает в одноимпульсном режиме one shot, с запуском через триггер захата в tim2.
все дубово, код не влияет на тайминги, нет джиттера ....но есть смутное ощущение...что можно сделать умнее.
я попробывал сделать тоже самое но на одном таймере. то есть захват работает также но включены еще и канал сравнения tim2, в его регистр я заношу значение текущего захваченного фронта + расчитання задержка. выходы молчат.
при совпадении генерится событие OC и прерывание. но как сбросить состояние выхода в момент следующего входного импульса? в стандартном режиме его сбрасывает по событию переполнения счетчика. можно канибудь настроить канал OC чтоб его сбрасывало от события захвата?
Go to the top of the page
 
+Quote Post
klen
сообщение Oct 1 2016, 13:35
Сообщение #2


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



нашел!
1. оказывается если в активный канал выхода сравнения поверху записать бит разрешения работы и при этом перед этим записать в регистр сравнения обновленное значение то канал опять сгенерит импульс.... случайно натыкал когда в отчаянии налету менял биты в отладчике и смотрел что будет... наверно в даташите это и написано но я за последние несколько лет наверно не до этого места по тайметам не дочитал☺
доделал макет с кодом. работает на одном таймере tim2 , на частоте врашения КВ в 60000 об/мин разрешению по углу поворота получается 1/6400 градуса, джиттер 12.5нс. это то что я и хотел. в перерывах между импульсами расчет угла и зарядка регистров.
2. можно пойти далее - записывать бит разрешения и свеже значение регистра сравнения через dma, тогда совсем дубово независимо от процессора времянка будет формироватся.


если кто так не пробывал можеттакая жеская по таймингам схема на одном таймере пригодится.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 07:39
Рейтинг@Mail.ru


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