Gast
#1868573
Hallo,
Hab ein kleines Problem mit der USART.
Also ich arbeite mit einem ATMega32 und AVRStudio.
externer Quarz: 14,7456M
Jetzt wollt ich meine Baudrate von 9600Baud auf 1200Baud ändern. Mit
9600Baud funktionierte die Kommunikation zwischen uC und PC einwandfrei.
mit 1200 kommt aber leider nur Quatsch raus.
meine USART initialisierung sieht so aus:
#include "global.h"
#include <avr/io.h>
void initusart(void)
//USART bzw. UART initialisieren
{
unsigned char x;
//Hilfsvariable
#ifdef UBRRL
//USART-Schnittstelle
UBRRL = (TAK / (16ul * BAUD )) - 1;
//Baudrate mit TAKT und BAUD
UCSRB = (1 << TXEN ) | (1 << RXEN);
UCSRC = (1 << URSEL) | (1 << UPM1) | (0 << UPM0) | (1 << USBS) | (1
<<UCSZ1) | (0 << UMSEL) | (0 << UCSZ0) | (0 << UCSZ2);
//ASYNC, 1Startbit,gerade
Parität,7Datenbits,2Stopbits
#else
//UART-Schnittstelle
UBRR = (TAK / (16ul * BAUD)) -1;
//Baudrate
UCR = (1 <<TXEN) | (1 <<RXEN);
//Sender und Empfänger
#endif
x =UDR;
//Empfänger leeren
}
Die Baudrate hab ich in den globals definiert.
Danke schon mal im Voraus