[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SergNik 12 сентября 2005 г. 16:23
В ответ на: Дык на то и рперывание, чтобы само вызывалось, не вижу смысла, можно оформить подпрограммой и вызывать ее из прерывания или из тела программы. отправлено Russ 12 сентября 2005 г. 16:09

У меня тема такая: Атмега работает с внешним CAN-контроллером, общается с ним по SPI, послать/принять одно сообщение при этом - немного длительный процесс.
Есть у меня прерывание, раз в милисекунду, в котором проверяется счтчик, если он истек, то надо послать сообщение. Прямо из этого прерывания я не хочу вызывать что-то типа SendMessages(), т.к. это займёт некоторое время, а в этот момент на очереди уже может стоять прерывание от CAN-контроллера по приёму сообщения - и принять его сейчас же важнее, чем сейчас же послать сообщение (по истекшему счетчику). Поэтому я хочу в прерывании 1мс, если счетчик истек, установить флаг, так чтоб после выхода сразу запустилось какое-либо прерывание, в котором я бы послал сообщение. А если на момент выхода ждёт обработки прерывание от CAN-контроллера по приёму, то оно выполнится первее, так как у него (это внешнее прерывание) приоритет больше.
Ну соответственно из главного цикла тоже хочется это прерывание запускать.
Вот такие дела.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru