Forum: Mikrocontroller und Digitale Elektronik Baudraten Problem


von Sepp H. (vali1991)


Lesenswert?

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!!

von (prx) A. K. (prx)


Lesenswert?

Der Takt stimmt, nachgemessen? Du wärst nicht der Erste und nicht der 
Letzte, der die Fuses versemmelt oder CLKDIV8 vergessen hat.

von Sepp H. (vali1991)


Lesenswert?

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?)

von spess53 (Gast)


Lesenswert?

Hi

> außerdem Funktioniert es mit dem ATmega8, warum nur?)

Weil der ATMega8 z.B. keine CKDIV8-Fuse hat.

MfG Spess

von Sepp H. (vali1991)


Lesenswert?

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
Noch kein Account? Hier anmelden.