Forum: Mikrocontroller und Digitale Elektronik seriell 89c2051 -> 89c2051


von MarkoMarko (Gast)


Lesenswert?

hi,

ich habe zwei seprate controllerplatinen, welche ich über die uart's
verbunden habe.

der erste controller sendet zeichen
der zweite controller empfängt die zeichen und sie werden auf ein
display ausgegben

es funktioniert auch ganz gut.
zum test habe ich das alphabet gesendet.

nur es werden ABCFILORUX angezeigt.
d.h. nach den buchstabe ABC wird dann nur noch jeder dritte buchstabe
angezeigt.(wobei ...lustiger name ABCFILORUX)nun ja...;)

weiß jemand woran's ligen kann?

markomarko

von Rüdiger (Gast)


Lesenswert?

Hi,
wie sieht es mit deinem empfangsbuffer aus ?
wie schnell fragst du diesen ab ?

Rüdiger

von MarkoMarko (Gast)


Lesenswert?

weiß nicht.

die nachfolgende funktion läuft in er endlosschleife.
kannst du sie nachvollziehen?



txt_empf()
{
   int b=0;


    while(!(SCON&0x01));
    RECIEVE_TXT[0]=SBUF;
    SCON&=0xfe;


    RS=DISP_DATEN;
    while(RECIEVE_TXT[b]!=0x00)
    {
      daten_port = RECIEVE_TXT[b];
      DISP_enable=1;wait(10);DISP_enable=0;
      daten_port = RECIEVE_TXT[b++]<<4;
      DISP_enable=1;wait(10);DISP_enable=0;
    }

}

von Benedikt (Gast)


Lesenswert?

Dein LCD ist zu langsam und ignoriert ein paar Zeichen, da du diese
vermutlich zu schnell sendest.
Abhilfe: Empfangspuffer + Busy des LCD abfragen

von MarkoMarko (Gast)


Lesenswert?

ok, fehler behoben.

ich hatte voher _nop()_ statt wait(10)
und wait(10) ist wohl zu langsam.

hatte ich übersehen.

sorry für den verschwendeten platz :)

markomarko aka FILORUX

von MarkoMarko (Gast)


Lesenswert?

@benedikt

ja mit busy werde ichs auch noch probieren.
mit wait(1) wird jetzt noch jeder 8. buchstabe NICHT angezeigt.

danke euch

von Peter Dannegger (Gast)


Lesenswert?

Wie groß ist denn Dein Display ?

Ich würde einen kompletten Textpuffer im RAM anlegen.

Dann kann das Einlesen und die LCD-Ausgabe völlig unabhängig
voneinander erfolgen.

Für Laufschriften sind die LCDs eh zu träge.


Peter

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.