ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
28 апреля
1349167 Топик полностью
POV (09.09.2023 18:13, просмотров: 96) ответил Nikolaev_Aleksey на можно уточнить - что есть модуль. если нужна точность отличная от 1000us, что делать? Делать прерывания каждые 100us и менее?
Ну да, делать каждые 100us.. у меня тактовая 240МГц, что мне, жалко тики что ли )) .. хотя и на 72 МГц эти 1мс прерывания жить не мешают. 

Хотя если хочется потратить полчаса времени - можно после каждого пересчета определяет ближайшее событие и настраивать таймер до него. В десятки-сотни раз реже будет прерывание вызываться.


events.c

events.h


где-то вначале main вызываешь

event_InterruptInit();


а далее по необходимости

event_Init(cb, ms);


или если хочется чтобы оно постоянно повторялось

event_InitCycle(cb, ms);



Я с использованием этого механизма удобно сделал 8ми канальный преобразователь udp->dmx.. лампочкой моргаю, частоту 500Гц на пассивный буззер даю, отложенную запись в флешь и многое другое.

Лет 5 назад написал еще для stm и до сих пор пользуюсь в каждом проекте.