Помогите настроить внешние прерывания. Со многим остальным удалось разобраться...
.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", как контроллер виснет...