Компилятор avr-gcc в коде F_CPU нет, он в Makefile
Сие безобразие работает в VMLAB, но в железе в терминал приходят "вопросительные знаки в ромбиках"
Уровни преобразовываются на max232cpe подключенного по даташиту, проверял закорачивая Tx и Rx за max232cpe.
UBRR высчитал по даташиту и перевел в hex.
Есть мысли?
Код: Выделить всё
#include <avr/io.h> // ввод-вывод
#include <util/delay.h>
//#define BAUD 9600
#define UBRR_VAL 0x81
//#include <util/setbaud.h>
void UART_Init(void)
{
UBRRL = (unsigned char) UBRR_VAL;
UBRRH = (unsigned char) (UBRR_VAL>>8);
UCSRB = (1 << TXEN) | (1 << RXEN);
UCSRC = (1<<USBS)|(3<<UCSZ0);
}
int main(void)
{
UART_Init();
DDRB |= _BV(PB0);
PORTB &= ~_BV(PB0); // Уст 0
while(1){
while ((UCSRA & (1<<UDRE)) == 0) {}
UDR = 'w';
while ((UCSRA & (1<<UDRE)) == 0) {}
UDR = 'o';
while ((UCSRA & (1<<UDRE)) == 0) {}
UDR = 'w';
while ((UCSRA & (1<<UDRE)) == 0) {}
UDR = '\n';
}
return 0;
}

