USART Problem beim ATMEGA644P

OP #1523207
Lesenswert?

habe den code abgegrenzt, der fehler scheint hier zu liegen:


  //Serielle Schnittstelle 0

    //Enable TXEN im Register UCR TX-Data Enable

  UCR =(1 << TXEN | 1 << RXEN | 1<< RXCIE);

  // 0 = Parity Mode Disabled

  // 1 = Parity Mode Enabled, Even Parity

  // 2 = Parity Mode Enabled, Odd Parity

  //UCSRC = 0x06 + ((parity+1)<<4);

  //UCSRC |= (1<<USBS);

  //Teiler wird gesetzt

  UBRR=(F_CPU / (baudrate * 16L) - 1);

  usart_status.usart_disable = 0;


  #if USART1
  //Serielle Schnittstelle 1

    //Enable TXEN im Register UCR TX-Data Enable

  UCR1 =(1 << TXEN1 | 1 << RXEN1 | 1<< RXCIE1);

  // 0 = Parity Mode Disabled

  // 1 = Parity Mode Enabled, Even Parity

  // 2 = Parity Mode Enabled, Odd Parity

  //UCSRC = 0x06 + ((parity+1)<<4);

  //UCSRC |= (1<<USBS);

  //Teiler wird gesetzt

  UBRR1 =(F_CPU / (baudrate * 16L) - 1);
  #endif
#1523230
Lesenswert?

Christoph K. schrieb:
> nachdem ich die usart initialisiert habe resettet der controller von
> sich aus

ich zitiere mich mal selbst:

> Und damit soll jemand was anfangen können?

Solange du keinen vollständigen Code postest, wird dir niemand helfen 
können und auch nicht wollen. Meine Glaskugel vermutet, dass Oliver 
recht hat, aber die arbeitet nicht wirklich zuverlässig...
Gast #1523231
Lesenswert?

>   //Enable TXEN im Register UCR TX-Data Enable

>  UCR =(1 << TXEN | 1 << RXEN | 1<< RXCIE);

Kommentare sind häufig Unsinn, wie man hier mal wieder deutlich gezeigt 
bekommt. Du gibst nicht nur TXEN frei, sondern auch alle anderen 
Interrupts der UART. Und ich wette, daß es dazu keine passenden ISR's 
gibt.

Oliver
Gast #1523251
Lesenswert?

Hi

> Du gibst nicht nur TXEN frei, sondern auch alle anderen
>Interrupts der UART. Und ich wette, daß es dazu keine passenden ISR's
>gibt.

Nein. TXEN und RXEN geben lediglich Sender und Empfänger frei. Keine 
Interrupts. Das macht lediglich RXCIE.

MfG Spess
Gast #1524124
Lesenswert?

Ja, lern etwas über die Prozessorregister und schau' Dir das Datenblatt 
an.

Das hat Dir doch Justus bereits geschrieben: es gibt kein UCR oder UCR1 
Register, außer Du hast selbst eines definiert.

Das zuständige Register dafür wäre das UCSRnB. Und dann noch dafür 
sorgen, daß es für das RXCIE auch eine passende ISR gibt.

Und benutz ab und zu die Shifttaste...

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