Atmega 88 Uart Init

Gast #2120306
Lesenswert?
• ▲
▼
Hallo,

es kann doch ansich nicht so schwer sein
Atmega 88PA


Init:

  UCSR0B = (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0);
  // Mega88 8N1
    UCSR0C =
    (1<<USBS0)|
    (1<<UCSZ00)|
    (1<<UCSZ01);


ISR(USART_RX_vect) {
  unsigned char c;
  c = UDR0;
  myuart_putc(c);
}


Aber irgend warum bekomme ich kein Zeichen zurück.
Die Funktion putc Funktioniert jedoch.
Gast #2120328
Lesenswert?
• ▲
▼
Wie ist myuart_putc() implementiert?

Wenn diese Funktion so ähnlich wartet bis sie senden darf:
1
  // warten bis Senden moeglich
2
  while( !(UCSR0A & (1<<UDRE0)) ) {}
3
  UDR0 = c;

Dann musst du im Datenblatt mal nachlesen, wann das UDRE0 Bit gesetzt 
wird. Wird das bereits durch das Auslesen des UDR0 ausgelöst oder erst 
nach dem Verlassen der ISR(USART_RX_vect)?
Gast #2120344
Lesenswert?
• ▲
▼
Also die Funktion zum senden habe ich, die Funktioniert auch.

Aber aus irgend einem Grund ruft er beim eintreffen eines Zeichens den 
Interrupt nicht auf.

void myuart_putc(unsigned char data) {
while (!(UCSR0A & (1<<UDRE0)))
    {
    }
    UDR0 = data;
}
#2120348
Lesenswert?
• ▲
▼
Helfer schrieb:
> Dann musst du im Datenblatt mal nachlesen, wann das UDRE0 Bit gesetzt
> wird. Wird das bereits durch das Auslesen des UDR0 ausgelöst oder erst
> nach dem Verlassen der ISR(USART_RX_vect)?

Weder noch. UDRE0 hat mit dem Empfang von Daten nicht das geringste zu 
tun. UDR0 ist ein "ich bin zwei Register" (Senden und Empfangen 
getrennt).

@ Simon:
Wo ist das sei()?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.