Schönen Abend, ich habe ein Problem mit der Baudrate! Das folgende Programm funktioniert auf dem ATmega8 problemlos, jedoch auf dem geänderten für den ATmega644 leider nicht. Es werden nur wirre Zeichen übertragen. 1.Programm: funktioniert --> ATmega8 #include <avr/io.h> #define F_CPU 3686400 #define BAUD 9600 #define UBRR_VAL = ((3686400/(9600*16))-1) void uart_init(void) { UBRRH = 0x00; UBRRL = 0x17; UCSRB |= (1<<TXEN); // UART TX einschalten UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // Asynchron 8N1 } int main(void) { uart_init(); while(1){ while (!(UCSRA & (1<<UDRE))) { // warten bis Senden moeglich } UDR = 'a'; //_delay_ms( 10 ); } } 2.Programm: funktioniert nicht :( --> ATmega644 #include <avr/io.h> #define F_CPU 3686400ul #define BAUD 9600 #define UBRR_VAL = ((3686400/(9600*16))-1) void uart_init(void) { UBRR0H = 0x00; UBRR0L = 0x17; UCSR0B |= (1<<TXEN0); // UART TX einschalten UCSR0C = (1<<USBS0)|(1<<UCSZ01)|(1<<UCSZ00); // Asynchron 8N2 } int main(void) { uart_init(); while(1){ while (!(UCSR0A & (1<<UDRE0))) { // warten bis Senden moeglich } UDR0 = 'x'; //_delay_ms( 10 ); } } Wäre echt voll super, wenn mir jemand helfen könnte. Bin total verzweifelt. Danke!!
Der Takt stimmt, nachgemessen? Du wärst nicht der Erste und nicht der Letzte, der die Fuses versemmelt oder CLKDIV8 vergessen hat.
Habe die Fuses gesetzt auf: Ext. Crystal Osc. 3.0 - 8.0 MHz; Start-up time: 16K CK + 65ms. Verwende einen Quarz mit: 3.6864 MHz. Wie kann ich den Takt nachmessen? (Beispiel mit LED - Blinken habe ich gemacht, außerdem Funktioniert es mit dem ATmega8, warum nur?)
Hi
> außerdem Funktioniert es mit dem ATmega8, warum nur?)
Weil der ATMega8 z.B. keine CKDIV8-Fuse hat.
MfG Spess
Vielen Dank, hab den Haken bei ClockDiv rausgenommen und nun funktioniert es. MfG Sepp Horst
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.