Здравствуйте! Пытаюсь передать цифру 5 через USART ATmega16 на компьютер в программу Terminal. На компьютере принамаю вместо одной цифры три, причем среди них нет ни одной пятерки. В программе Terminal установил скорость передачи в 115200 кбит/с, 2 стоповых бита, 8 бит в кадре. Код программы привел ниже. В чем причина, что я делаю неправильно?
#include <iom16v.h> #include <macros.h>
void uart0_init(void) { UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; UBRRL = 0x01; //set baud rate lo UBRRH = 0x00; //set baud rate hi UCSRC = 0x8E; UCSRB = 0x08; }
void putchar(char ch) { while (!(UCSRA&(1<<UDRE))); UDR=ch; }
void main(void) {CLI(); //disable all interrupts uart0_init(); SEI(); //re-enable interrupts putchar(5); while(1); }
|