Problem mit UART auf 8051 komp.

Gast #342885
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.
#342886
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

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.