Hallo, ich benutze einen Atmega16L, Takt wird über FPGA erzeugt und an XTAL1 zugeführt, XTAL2 NC. Nun bekomme ich eine Baudrate die zwischen 20 und 30 Hz liegt, hat einer ne Ahnung was ich falsch mache? Die CKSEL hab ich mit Ponyprog auf "0000" sprich lauter Häkchen gesetzt.
Der Fehler ist in Zeile 42 in Deinem Programm. Aber keine Panik! Das wird schon wieder...
nein die witzseite aufgeschlagen ;-) was er damit sagen möchte: wenn du deinen code mitposten würdest, wäre die fehleranalyse wesentlich einfacher....
#include <avr/io.h> #include <inttypes.h> #include <avr/interrupt.h> #include <util/delay.h> #define FOSC 8000000 #define BAUD 9600 #define MYUBRR FOSC/16/BAUD-1 void USART_Init(unsigned int ubrr) { UBRRH = (unsigned char) (ubrr>>8); UBRRL = (unsigned char) ubrr; UCSRB = (1<<RXEN) | (1<<TXEN); UCSRC = (1<<USBS) | (3<<UCSZ0); } void USART_Transmit(unsigned char data) { while(!(UCSRA & (1<<UDRE))) ; UDR = data; } unsigned char USART_Receive(void) { while(!(UCSRA & (1<<RXC))); return UDR; } int main (void) { unsigned char data='h'; USART_Init(MYUBRR); while(1){ _delay_ms(50); USART_Transmit(data); } return 0; }
Schau Dir im Datenblatt auf Seite 160 mal den Abschnitt 'Accessing UBRRH/UCSRC Registers' durch. Du sprichst die Register falsch an. Die haben die selbe Adresse und müssen über das URSEL-Bit selektiert werden!
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.