Baudraten Problem

OP #2456018
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!!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren