Помогите настроить внешние прерывания. Со многим остальным удалось разобраться...
.cseg .org 0x0000 rjmp reset .org 0x000a rjmp int0_ ... ldi r16,(0<<isc31)|(0<<isc30)|(0<<isc21)|(0<<isc20)|(0<<isc11)|(0<<isc10)|(0<<isc01)|(0<<isc00) sts eicra,r16 ldi r16,(0<<int3)|(0<<int2)|(0<<int1)|(1<<int0) sts eimsk,r16 ... sei ... lds r16,eifr sbrc r16,intf0 rjmp stop ...
int0_: rjmp stop
Пробовал 2 варианта обработки прерывания - как подпрограмма int0_: или проверка флага intf0. Простая проверка состояния вывода - работает, при появления 0 выполняется подпрограмма стоп. sbis pind,6 rjmp stop
В целом прерывания другого типа исполняются, как например вариант работы АЦП. Где что я упустил? Может дело в программаторе AS3M или AVR Studio 4.12SP4? Симулятор не использую, отлаживаю в рабочей плате.
Кстати, такой баг - стоит только потревожить ячейку таймера-счетчика 0 "tccr0a", как контроллер виснет...
|