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


von Bowle Gus (Gast)


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.

von Yagan Ζ. D. (yagan)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.