Forum: Mikrocontroller und Digitale Elektronik Serielle Schnittstelle sendet nur jedes 2. Byte


von Stefan K. (stefank)


Angehängte Dateien:

Lesenswert?

Hallo Forum,

ich habe mit einem C-Programm und der seriellen Schnittstelle Probleme, 
es wird nur jedes 2. Byte gesendet:

Mein Prozessor AT89C51ED2 sendet über seine serielle Schnittstelle 
Zeichen an einen 2. Controller, dieser steuert dann ein Grafikdisplay. 
Der 2. Controller ist ein IC202 von Electronic Assembly. Ich hatte das 
ganze in Pascal für den 8051 programmiert und dieses Programm 
funktioniert einwandfrei. Nun habe ich das ganze zu C portiert (siehe 
Anhang). Der Prozessor sendet aber nur jedes 2. Byte über die 
Schnittstelle. Ich habe das Programm in JSIM simuliert, dort 
funktioniert alles wie gewünscht.

Es ist wahrscheinlich nur ein dummer Fehler, aber inzwischen sehe ich 
den Wald vor lauter Bäumen nicht mehr. Kann von Euch jemand mal einen 
Blick darauf werfen?

Danke und Gruß
Stefan

P.S. Der C-Compiler ist SDCC

von H.Joachim S. (crazyhorse)


Lesenswert?

ich tippe mal hier drauf:

while(!TI)      //Warten, bis Sendebuffer bereit
  {
    tout++;      //TIMEOUT-Zähler hochzählen
    if(tout>200) return 1;  //TIMEOUT-Error
  }
ohne es zu zu wissen :-)

von Stefan K. (stefank)


Lesenswert?

Danke, danke, danke (virtuelle Umarmung) :-)),

das war der Wald, da hätte ich selber draufkommen müssen.

Offensichtlich optimiert der C-Controller besser als der 
Pascal-Compiler, die Timeout-Schleife ist viel schneller abgelaufen.

Danke nochmal, es hat sich gelohnt hier zu posten :-)

Gruß Stefan

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.