hallo ich bin ein avr anfänger und ich versuche gerade mit der UART schnittstelle des Atmega8 zu experimentieren.wenn ich die baurate in meinen code ab 57600 einstelle bekomme ich ja nur müll sonst niedriege baurate hats bis jetzt geklappt. meine uart initialisierung sieht so aus void USART_Init( unsigned int ubrr) //USART initialization subroutine { UBRR0H = (unsigned char)(ubrr>>8); UBRR0L = (unsigned char)ubrr; UCSR0B = (1<<RXEN0)|(1<<TXEN0); UCSR0C = (1<<USBS0)|(3<<UCSZ00); } .
#define BAUDRATE 9600 #define UBRRVAL ((F_CPU/(BAUDRATE*8UL))-1) //Set baud rate UBRRL=UBRRVAL; //low byte UBRRH=(UBRRVAL>>8); //high byte UCSRA = 0; /* Enable Receiver and Transmitter and receiver interrupt */ UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN); /* Set frame format: 8data, 1stop bit */ UCSRC = (1<<URSEL)|(3<<UCSZ0); ISR(USART_RXC_vect) { //interrupt routine } //zum senden while (!(UCSRA&(1<<UDRE))); UDR = "ein byte was du senden willst";
Das URSEL Bit ist zumindest beim Mega16 ganz wichtig, hab ich gelernt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.