Atmega8 uart geht nicht wie bei anderen avrs

Gast #1587685
Hallo,

ich habe schon bei meheren avrs die uart programmiert.
Hat bis jetzt immer geklappt. Zb atmega16 at90can atmega1280.
Jetzt habe ich ein atmega8
Meine init ist so

void uart0_init(void)
{
 UCSRB = 0x00; //disable while setting baud rate
 UCSRA = 0x00;
 UCSRC = URSEL | 0x06;
 UBRRH = 0x00; //set baud rate hi
 UBRRL = 0x33; //set baud rate lo
 UCSRB = 0x98;
}

void uart0_putc(char c)
   {

   while(!(UCSRA & (1<<UDR)));// Wait until Rs232 is ready
   UDR=c;
   }

Aber mein transmitter ist niemlas ready. Mein programm hängt immer in 
der while schleife was ist da los. Hat bis jetzt bei jedem atmega 
geklappt
Schau' Dir mal folgende Zeilen näher an:

 UCSRC = URSEL | 0x06;
 while(!(UCSRA & (1<<UDR)))

URSEL ist eine Bitnummer und das Ding, das ein freies TX Data Register 
anzeigt, heißt nicht UDR.

Schwer zu glauben, dass das irgendwo lief.
Gast
micro1 schrieb:
> while(!(UCSRA & (1<<UDR)));// Wait until Rs232 is ready
                      ^
[..]
> Gibt es beim atmega8 etwas besonderes zu beachten bei der usart?

Ja - das Datenblatt ;-) Wie spess53 schon schrub: da gehört 'UDRE' hin 
(siehe auch das Datenblatt vom Mega8 im Kapitel "19.6.1 Sending Frames 
with 5 to 8 Data Bits") - UDR (also das Datenregister) hat da nix 
verloren.

HTH und HF
Gast
OK das mit dem UDR habe ich falsch kopiert. Richtig das durfte nie
funktionieren. Ich habe es berichtigt und nun geht es.
URSEL ist auch falsch hatte aber so keinen einfluss.

Leider war mein USB2SERIELL Wandler dahin.
Deswegen hatte ich so Probleme

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.