Коллеги, зашел в тупик, может, кто-нибудь сталкивался с таким.
Имею контроллер ATmega168.
В проекте требуется организовать связь через USART. Раньше (на младших моделях типа ATmega16) делал это "сто раз", а на упомянутом контроллере - споткнулся.
Инициализирую так:
Код: Выделить всё
.cseg
.org 0x00
jmp RESET
...
далее вся таблица векторов прерываний
...
RESET: ldi R16, high(RAMEND) ;Инициализация стека
out SPH,R16 ;
ldi R16, low(RAMEND) ;
out SPL,R16 ;вершина стека - RAMEND
ldi R16,0x00 ;Скорость обмена
ldi R17,0x0A ;выбирается
sts UBRR0H,R16 ;равной 115200 б/с
sts UBRR0L,R17 ;для тактовой частоты 20МГц
ldi R16,0x06 ;Устанавливаю 8-ми битный
sts UCSR0C,R16 ;формат кадра
ldi R16,0xD8 ;Разрешаю приемник и передатчик
sts UCSR0B,R16 ;и прерывания по приему и передаче
sei ;Общее разрешение прерываний
TEST: nop
nop
jmp TEST
Пробовал то же самое сделать в среде AVR Studio 4 - с тем же эффектом - обработчик прерывания по приему байта не вызывается.
Это глюк среды разработки, или же "я что-то упускаю"?



