|
Проблема USART в ATtiny2313.
Настраиваю USART на 9600 бот, 8 бит, 2 (пробовал и 1) стоп бит, кварц 4 МГц. Для проверки работы написал подпрограмму выдачи последовательности от 0x00 до 0хFF. Для передачи использую 2 повода: ТХ и Земля. На компьютере выставляю: 8 бит, 2 стоп бита (с 1 стоп битом разницы нет), четности нет, аппаратного и программного контроля нет.
Реально передача происходить не на 9600, а на 1200 бот. При этом на компьютере принимается последовательность только от 0х80 до 0хFF, т.е. все, что меньше 0х80 куда-то теряется.
Подскажите, если знаете, в чем тут дело и что не так? Спасибо.
Для инициализации USART использую код, взятый из описания ATtiny2313 (2543A–AVR–08/03)
подпрограмма выдачи последовательности от 0x00 до 0xFF incr: clz
E-mail:
info@telesys.ru
USART_Init: ldi r17, 0 ;
ldi r16, 25 ; 9600 бот при 4.0МГц, ошибка 0,2%
; Set baud rate
out UBRRH, r17
out UBRRL, r16
; Enable receiver and transmitter
ldi r16, (1<
; Set frame format: 8data, 2stop bit
ldi r16, (1<
ret
ldi r16, 0
incr1: sbis ucsra, udre ;ожидание передачи
rjmp incr1
out udr, r16
inc r16
brbc z ,incr1 ;перекод к incr1, если r16<>0
ret
Ответы