mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit UART auf 8051 komp.


Autor: Bowle Gus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab ein kleines Problem mit meinem 8051 kompatiblem Controller (es
handelt sich um einen Atmel 89C51ED2.
Hier in der Schule haben wir die IDE Ride. Wenn ich mein Programm dort
debugge zeigt der UART an, dass die Daten gesendet werden. Zum Test
habe ich den Interrupt des UARTs an und erhöhe P2 jedes mal (auf
unserer Schulplatine sind dort LEDs). Der Debugger zeigt auch an dass
P2 jedes mal erhöht wird, auf dem Board aber bleibt P2 auf 0 und nichts
wird gesendet (das geht an eine Schrittmotorsteuerung)

So sende ich:
#define smcSend(parameter) \
    do { \
        while(!send_enable); \
        SBUF = (uint8_t)parameter; \
        send_enable = 0; \
    } while(0);

Und das ist meine ISR des UARTs:
void serial_IT(void) interrupt 4
{
     ++P2;
     RI = TI = 0; /* empfangen wird aber nichts */
     send_enable = 1;
     return;
}

Ich kenn mich mit den 8051 nicht aus, nur mit AVR.

Autor: Yagan Ζ. Dongobar (yagan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bowle Gus,

der 8051-UART erzeugt erst einen Senderinterrupt, nachdem das erste
Zeichen abgeschickt wurde.

Also vor dem ersten smcSend(parameter) sollte
send_enable = 1; stehen, damit SBUF in jedem Fall beschrieben wird.
Anschliessend müssten Senderinterrupts kommen (falls die
Initialisierung richtig war).

Allerdings ist bei dieser Implementierung von smcSend() der
Interruptbetrieb eigentlich überflüssig.

Ciao, Yagan

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.