Hallo,
ich versuche schon seit Stunden ein DOGL Display mit einem 80C517A
anzusteuern. An meinem AVR Board funktioniert das problemlos, also kann
der Fehler nicht am GLCD liegen.
Leider tut sich auf dem GLCD gar nichts.Ich bin schon am verzweifenl.
Hier mal der Code:
Ganz spontan würde ich sagen das hier ist falsch.
MOV Column_counter,#0128D
So viel ich noch weiss passen in einem Register 8 Bit.
Korrigiert mich wenn das falsch sein sollte.
Bleib lieber bei Hex also
MOV Column_counter,#80h
Sowas kann auch nicht sein:
MOV Daten,#010H sollte doch eher MOV Daten,#10H sein.
Fällt dir bei deinem Code was auf.
Klaus schrieb:> Ganz spontan würde ich sagen das hier ist falsch.> MOV Column_counter,#0128D>> So viel ich noch weiss passen in einem Register 8 Bit.> Korrigiert mich wenn das falsch sein sollte.
Und wieviel Bit braucht man für 128?
> Bleib lieber bei Hex also> MOV Column_counter,#80h>> Sowas kann auch nicht sein:> MOV Daten,#010H sollte doch eher MOV Daten,#10H sein.>> Fällt dir bei deinem Code was auf.Klaus schrieb:> Die nullen! mach die mal alle raus. Du hast doch keine 16Bit Register.
Die einzige Null bist du hier!
Thomas hast du einen Knall??
128 Dezimal ist nun mal 80h.
Beleidigungen sind wohl hier falsch am Platz.
Wenn es falsch ist was ich geschrieben habe dann erklärs besser.
Klaus schrieb:> Thomas hast du einen Knall??
Lieber ein Knall als aine Null.
> 128 Dezimal ist nun mal 80h.
Ja und? Deswegen kann er das doch so stehen lassen. Willst du jetzt
allen zeigen, daß du Dezimal- in Hexzahlen umrechnen kannst?
> Beleidigungen sind wohl hier falsch am Platz.
Siehe oben
> Wenn es falsch ist was ich geschrieben habe dann erklärs besser.
Falsch ist das nicht. Aber vorher war es auch nicht falsch. Also was
soll das?
mfg.
blutengel schrieb:> Hallo,> ich versuche schon seit Stunden ein DOGL Display mit einem 80C517A> anzusteuern. An meinem AVR Board funktioniert das problemlos, also kann> der Fehler nicht am GLCD liegen.> Leider tut sich auf dem GLCD gar nichts.Ich bin schon am verzweifenl.
Der 80C517A ist doch ein alter 5V-Controller und ein DOGL ein 3-3,3V-
Vertreter. Das passt doch schonmal grundsätzlich nicht.
mfg.
Hallo Thomas und blutengel.
Da muss ich mich selbstverständlich Entschuldigen!
Thomas hat recht.
Liegt wohl daran das ich geraumer Zeit keine Assemblerprogramme
schreibe.
>Der 80C517A ist doch ein alter 5V-Controller und ein DOGL ein 3-3,3V->Vertreter. Das passt doch schonmal grundsätzlich nicht.
Aber war der 8051(7) port 1 nicht irgentwas mit open-collector Ausgang?
Da bräuchte es doch nen Pullup oder war der intern?
Da muss ich mal mein Datenblatt abstauben (Hust) und reinschauen,
wo ist denn da die Suchfunktion ...
Oder
>SPI_SEND:> MOV A,Daten> MOV R4,#8 ; 8 Bits schreiben Schleifenwert>Put_spi: CLR c> RRC A ; Akku nach Carry> MOV Spiout,C ; Carry nach Port> SETB Clock ; SCLK Impuls> clr Clock> DJNZ R4,Put_spi
Will das olle DOGL-Dsiplay das LSB oder das MSB zuerst?
RRC schiebt das LSB zuerst raus, wenn ich mich nicht irre
http://www.self8051.de/rrc_____a,13728.html
RLC machts dann andersrum
http://www.self8051.de/rlc_____a,13725.html
>Der 80C517A ist doch ein alter 5V-Controller und ein DOGL ein 3-3,3V->Vertreter. Das passt doch schonmal grundsätzlich nicht.blutengel schrieb:> An meinem AVR Board funktioniert das problemlos, also kann> der Fehler nicht am GLCD liegen.
Und wie das funktionieren kann. Es geht hir ja auch nicht um die
Hardware. Aber damit ihr es wisst, zwischen Bus und Display häng ein
HCF4050 Hex Non Inverting Buffer/Converter der die 5V runterregelt.
Ob ich jetzt eine 0 oder nicht davor stehen habe ändert auch nichts.
Ich hatte gedacht das vielleicht die SPI Ausgabe fehlerhaft ist oder das
Timing. Auf einem AVR läuft es. Dort habe ich es in Bascom und in
Assembler programmiert. Auch die SPI Ausgabe habe ich dort selber
programmiert.
Der 80C517A arbeitet in der Regel schon richtig, wenn man ein paar
Grundregeln beherzigt.
Seine Ports können nur kräftig aktiv low schalten, und haben bei
High-Pegel einfach nur höherohmige interne Pullups, bzw. schalten bei
einem Befehl, der High an einen Pin legen soll, diesen Pegel für zwei
Maschinenzyklen mit einem stärkeren FET, der dann wieder abschaltet.
Wenn man da irgend wo noch zufällig eine andere Last gegen Low an einem
Pin hat, hat man verloren: Der erreicht bei High keinen TTL-Pegel mehr.
Die Ports treiben bei High-Pegel nur 80µA.
Die führende 0 ist kein Fehler, sondern Absicht!
Zumindest der 8051 Assembler fordert, daß Werte immer mit einer Ziffer
anfangen müssen.
Daher muß man schreiben:
mov reg8, #0ABh
bzw.:
mov reg16, #0ABCDh
Und der Einheitlichkeit wegen schreibt man dann eben auch:
mov reg8, #001h