Hallo, Ich habe einen Code zur Ansteuerung des bekannten NOKIA 6100 Farbdisplays, in AVR-Assembler, geschrieben. Wie das hald bei etwas fortgeschrittenen Anfängern so ist, funktioniert der Code nicht. Nun versuche ich schon seit einem Monat oder länger, den Fehler zu finden. Ich habe auch mehrmals in den anderen Foren über dieses Display gestöbert aber nichts gefunden was mir weiterhelfen konnte. Im Anhang ist mein Code als Textdatei. Ich hoffe die Profis unter euch oder sonst wer kann mir den/die Fehler zeigen und mir sagen wie ich diesen entfernen kann. Ich währe sehr Dankbar dafür. Ich benutze den ATmega8L (3.3V) mit 1MHz internem Takt. ~ Mfg. Lightning
Hi! Ich kann dir leider bei deinem Problem nicht direkt helfen ABER: Bist du dir sicher, dass das Display eines mit Philips Controller und nicht mit Epson ist? Angeblich werden die Philips Displays seit einem Jahr nicht mehr produziert (stand im Codesammlungspost zum Nokia 6100 Display). Sollte es ein Philips sein und es trotzdem nicht funktionieren und du Hardwareprobleme (wegen Pegelwandlung 5V-3V) auschliessen kannst, dann solltest du mal ape oder Hagen kontaktieren, die sind hier die Profis. Eventuell unter www.apetech.de im Forum probieren..... mfg Fasti
@Lightning Also so wie ich das sehe, wird in display_data und display_command nach diesen Sprüngen brcs csub1 brcc csub2 brcs dsub1 brcc dsub2 ein return durchgeführt, das heisst es wird die subroutine beendet und nur ein bit und nicht 8 bit gesendet. Gruss Frank
Hallo, Erstmal Danke für die Antworten. @Fasti Ja es ist eines mit Phillips Controller (Braun mit Lötpads) und es hat nirgends Hardwareprobleme. Das Display funktioniert einwandfrei da ich es mit dem C-Code von www.apetech.de getestet habe. @frankieboy Ja das könnte das Problem sein aber springt das ret nicht wieder dorthin wo die subroutine aufgerufen wurde ??? Wenn nein, wie muss ich meinen Code ändern damit es das nicht macht ?? ~Mfg. Lightning
"Wie das hald bei etwas fortgeschrittenen Anfängern..." Meintest Du nicht blutiger? Nix für Ungut! Mit BRCC, BRCS oder BRnn, oder einfach mit "Branch" ruft man keine Sub-Routine auf, sondern man verzeigt wie mit JMP ("Jump") im Programm an eine andere Stelle bzw. setzt den Programm Counter (PC) auf eine andere Programm-Adresse. Demzufolge legt BRCC oder BRCS keine Rücksprungadresse auf den Stack wie CALL oder RCALL und demzufolge wird auch nicht nach dem BRCC oder BRCS durch RET zurück gesprungen. Was Du brauchst, ist SBRC oder SBRS (Skip if Bit in Register is clear/set). Probier mal folgendes innerhalb der "Bitschiebe-Schleife": SBRC disp_cmd,7 ;Ist MSB gelöscht, dann Befehl überspringen. sbi disp_PORT, disp_data ;Ansonsten Befehl ausführen. SBRS disp_cmd,7 ;Ist MSB gesetzt, dann Befehl überspringen. cbi disp_PORT, disp_data ;Ansonsten Befehl ausführen. lsl disp_cmd ;Alle anderen Bits Bit für Bit zum MSB. Es kann noch sein, das Du dem LCD mit ein oder ein paar "NOPs" noch etwas Zeit geben musst, aber da bin ich mir nicht sicher. MfG Andi
@Andi K. Wow das wars. Genau das war der Fehler. Jetzt funktioniert alles Danke auch Danke an die Anderen. Mfg. Lightning
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.