Liebe Mikrocontrollerinfizierte! Ich suche gerade nach einer guten Idee, wie ich einen speziellen LCD controller automatisch detektieren kann. Hintergrund ist das folgende: Eine Firmware soll alternativ mit standard HD44780 basierten LCD Modulen aber auch mit Modulen, die den ST7036 verwenden (z.B. die DOGM Module) zurecht kommen. Der ST7036 ist weitgehend kompatibel zum 44780, braucht aber zusätzlich eine spezielle Initialisiserungs-Sequenz, damit überhaupt was auf dem Display erscheint. Damit die Standard-Module jetzt nicht von dieser Initialisiserung in einen undefinierten Zustand geschickt werden, möchte ich vorab den ST7036 als solchen detektieren. Das ganze soll also zur Laufzeit erfolgen und nicht zur compile-Zeit (z.B. über eine spezielle Firmwareversion). Hat jemand ne Idee, wie ich das bewerkstelligen könnte??? Andi
Hi Da das kaum die gleich Hardware sein kann, opfere einen freien Pin. MfG Spess
Pins sind sehr knapp. Gefragt ist eine reine Softwarelösung. Möglicherweise wäre eine Konfiguration im EEPROM (ist ein ATMEGA) ne Lösung, aber auch das ist aus anderen Gründen schwierig...
Hallo andi6510, bedeutet das, ... > Der ST7036 ist weitgehend kompatibel zum 44780, braucht > aber zusätzlich eine spezielle Initialisiserungs-Sequenz, damit > überhaupt was auf dem Display erscheint. ...dass du den EXT pin des ST7036 falsch beschaltet hast? Im "Normal mode" ist der ST7036 noch viel kompatibeler zum HD44780. ;-)
naja, der controller ist im LCD modul fest verbaut - da komme ich nicht ran! Leider auch nicht an den ext-pin... Es geht konkret um das modul hier: DOGM162 (http://www.lcd-module.de/pdf/doma/dog-m.pdf)... wenn jemand weiss, wie man da an den Pin rankommt...
Hallo Andi, schade, bei dem DOGM162 hast du wohl keine Chance an den ext pin des ST7036 zu kommen. Und zu allem Übel gib es auch keine Read-Instruction welche sich im "normal" und "extended" mode unterscheiden. Damit scheidet automatische Erkennung aus und es bleiben dir nur die gewünsche Konfig dem uC mitzuteilen. Also wie Spess schon sagte per Pin oder EEPROM. Auch wenn dir das nicht gefällt...
Ich bin ja immer der Meinung geht nicht gibts nicht :-) Nach intensiverem Studium des Datenblattes kam mir jetzt folgende Idee: 1 instruction table umschalten auf 0,0 2 set CGRAM addr 0 3 write RAM 0xAA 4 instruction table umschalten auf 0,1 5 set ICON RAM addr 0 6 write RAM 0x55 7 instruction table umschalten auf 0,0 8 set CGRAM addr 0 9 read RAM result = 0xAA -> ST7036 result = 0x55 -> HD44870 Funktionsweise: nach Umschalten auf die zweite instruction table (4) kann beim ST7036 statt dem CGRAM das ICON RAM beschrieben werden - der HD44870 kennt die zweite instruction table gar nicht und würde daher weiterhin das CGRAM beschreiben. Beim späteren lesen des CGRAM (9) ist beim st7036 also noch das bei (3) geschriebene 0xAA im CGRAM, beim 44780 aber das bei (6) geschriebene 0x55 Könnte das so funktionieren???
Andi schrieb: > Ich bin ja immer der Meinung geht nicht gibts nicht :-) Verdammt Andi, du hast ja Recht! Ich hatte beim ersten überfliegen des Extended Modes schon das ICON RAM als Unterschied ausgemacht, aber nicht direkt erkannt wie man es misbrauchen kann. Deine Idee und die Beschreibung zur Funktionsweise sind vollkommen korrekt. Kurzgefasst basiert deine Idee darauf, dass die Instruktionen "Set CGRAM Address" und "Set ICON Address" einen gemeinsamen Instruction-Code haben (0b0001), aber über verschiedene Instruction tables (welche der HD44780 nicht hat) erreicht werden können. > Könnte das so funktionieren??? JA!
So, um den fred jetzt endgültig zu den Akten legen zu können: Es funktioniert! Und zwar fast genau so wie oben beschrieben! Man muss nur beachten, dass man den wert 0xAA und 0x55 gar nicht in das ICONRAM schreiben kann, da dort jeweils nur 5 bit vorhanden sind. In meinem Code wird jetzt eine 7 stat der AA geschrieben und eine 4 statt 55. Dann steht beim auslesen des CGRAM nachher 7 für st7036 und 4 für hd44780. Schön! Als letztes wollte ich noch support den KS0073 hinzufügen, habe aber leider momentan kein display mit diesem Controller... . Der KS0073 hat auch ein ram für ICONS (heisst da SEGRAM). Die extended commands sind auf diesem controller aber wohl über ein anderes bit erreichbar, so dass man dort analog wie beim 3076 verfahren könnte...
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.