www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RS232 an ATmega 2561


Autor: Stephan Schmidt (scoty6v)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich versuche seit zwei Tagen die Serielle Schnittstelle des ATmega2561 
zu nutzen. Habe bereits hier im Forum gesucht, aber nichts Hilfreiches 
finden können.

Ich habe die Schnittstelle initialisiert und wollte Bytes per Interrupt 
empfangen. Da ich noch nicht den richtigen Namen für den Interrupt 
gefunden habe, wollte ich das Empfangenbyte pollen.

Nachdem ich ein Byte gesendet habe, Finde ich im Debugmodus das richtige 
Byte im UDR0-Regsiter. Das RXC0-Bit des UCSR0A-Registers wird auch high 
gesetzt. Trotz allem springt mein Programm hier nicht weiter:

while ( !(UCSR0A & (1<<RXC0)) );
rs232getData();

Was mich noch wudert ist, dass das UDRE0-Bit immer high ist. Müsste das 
nicht auch low werden, wenn ein Byte vorhanden ist?

Vielen Dank für Eure Hilfe im Vorraus.
Ein kleines Beispeil für die Schnittstellen des ATmega2561 wäre nicht 
schlecht. Ich wollte dem meinen Codes des ATmega32 arbeiten, muss aber 
irgendetwas übersehen, was noch angepasst werden müsste.

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es mit mehr Code?
In dem "Fliegenschiss" von Code ist zumindest kein Fehler erkennbar.

>Was mich noch wudert ist, dass das UDRE0-Bit immer high ist. Müsste das
>nicht auch low werden, wenn ein Byte vorhanden ist?

Weil das USART vielleicht doppelt gepuffert ist?

Autor: Stephan Schmidt (scoty6v)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe meinen Fehler gefunden.
Ganz böse Falle.
Meine Interruptserviceroutine passte wie gesagt vom Namen her nicht 
(Name von ATmega32). Frage wäre noch, wo finde ich denn die Namen der 
ISR-Aufrufe? Die Adressen finde ich ja im Datenblatt. Ich meine sowas 
wie USART_TXC_vect.

Mein Problem war dann, dass ich die Interruptenable-Bits gesetzt 
gelassen habe und auch sei() aufgerufen hatte.

Das hat dann ungemerkt zu einem Neustart geführt, weil ja keine passende 
ISR vorhanden war.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.