Вот код, который вызывает неадекватное поведение 48
Код
ldi r31, $2e
out ddrb,r31
ldi r31,$14
out portb,r31
ldi r31, $f
out ddrc, r31
ldi r31, $0
out portc, r31
ldi r31, $b
out ddrd,r31
ldi r31,$fb
out portd,r31
ldi r25, 1
out SPSR, r25
ldi r25, $50
bbb: out spcr, r25
cbi portd, 3
out SPDR, r25
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
in r1, SPSR
sbi portd, 3
clr r16
bb: dec r16
brne bb
rjmp bbb
А вот осциллограммы - синий - PD3, желтый - PB5 (SCK).
Дергать именно PD3 - важно, при замене на что-нибудь другое все нормально работает. Важна также задержка от записи SPDR до чтения SPSR и минимальная длительность после чтения SPSR - при загрузке в r16 числа, меньшего 64, сбоев нет.
Частота такта 20 Мгц. Кадры на осциллографе сняты в произвольный момент времени - форма сбоев непостоянна.
Какие будут комментарии ?