[an error occurred while processing this directive]
Если не жалко ногу внешнего прерывания (INT0/INT1) или любой другой (если МК имеет PinChangeInterrupt, как Мега48), то програмное прерывание делается ОДНОЙ командой АСМ
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено =AVR= 20 октября 2005 г. 02:46
В ответ на: Я правильно поня? В ИАРе прерывание нельзя просто вызвать с любого места программы? отправлено <font color=gray>M@RS</font> 19 октября 2005 г. 21:42

Для этого надо сконфигурировать такую ногу КАК ВЫХОД, настроить прерывания от нее по каждому фронту, разрешить это прерывание и вызывать его записью "1" в соответствующий бит регистра PINx (именно PIN!) ее порта. Эта команда меняет уровень на выходе порта на противоположный (Toggle) - создает фронт, т.е. условие прерывания.

Так как любое прерывание нельзя вызвать програмно таким способом, а только прерывание по INT0/INT1/PinChange, то процедура обработки такого програмного прерывания должна быть полной копией процедуры подменяемого прерывания - просто при програмном вызове такой процедуры будет исполняться физически другой кусок кода, а результат будет такой же, как и от работы штатного прерывания

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru