Hallo,
ich wollte zum Anfang ein Segment eines statischen LCD-Displays
ansteuern. Den folgenden Code habe ich via ISP auf den MCU hochgeladen,
leider tut sich nichts. Hat jemand eine Idee, was ausgebessert gehört.
Zuerst habe ich ähnlich wie im Datenblatt das Display initialsiert.
Ich dachte, dass Register LCDDR0 = 0x02; beschreiben um das Segment
anzusteuern reicht.
Vielen Dank für eure Hilfe.
Kurbel schrieb:> Den folgenden Code habe ich via ISP auf den MCU hochgeladen,> leider tut sich nichts. Hat jemand eine Idee, was ausgebessert gehört.
Ich würde mal versuchen statt des abgebildeten Codes eine
kompilierte Version in den Controller hineinzuladen.
Silophoph schrieb:> Hast du schon mal ins GCC Tutorial geschaut?> https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial>> Vor allem:> https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
Obwohl das offenbar der bisher einzige sinnvolle Beitrag zur Frage des
TO war, wird meiner Ansicht nach im verlinkten Tutorial keine brauchbare
Antwort gegeben. Das Tutorial bezieht sich nämlich auf LCD-Module, der
TO interessiert sich aber anscheinend für die Ansteuerung "nackter"
LCD-Segmente. Der ATmega169P hat nämlich als Sonderausstattung einen
4x25 Segment LCD Driver.
Leider kann ich aber nichts weiter dazu beitragen, weil ich damit selber
noch keine Erfahrung habe.
Hallo,
mir fällt bei Atmega169P und LCD eigentlich erstmal das
AVR-Butterfly-Modul ein, da sollten die Sourcen bei github zu finden
sein.
Gruß aus Berlin
Michael
Ja, es geht um direkte Ansteuerung eines LC Glasses. Um die Sache so
einfach wie möglich zu halten, habe ich eine statische Ansteuerung
gewählt, bei der jedes Liquid Cristal Element eine eigene
Segementleitung hat.
Das Kapitel im Datenblatt über den LC Driver ist recht übersichtlich.
Das Kapitel habe ich Schritt für Schritt durchgegangen und die Register
gesetzt. Leider tut sich nichts.
Ich habe mir den Code des Evalboards AVR Butterfly heruntergeladen. Dort
ist jedoch sehr viel drum herum in mehreren Dateien programmiert, sodass
es für einen Anfänger recht unübersichtlich ist. Auch wenn ich in dem
Codebeispiel z. B.: das Schlüsselwort LCDDR0 suche, werde ich nicht
wirklich fündig, da viel mit Pointern, Flash Zugriffen und Macros etc
gearbeitet wird.
Kurbel schrieb:> Ja, es geht um direkte Ansteuerung eines LC Glasses. Um die Sache so> einfach wie möglich zu halten, habe ich eine statische Ansteuerung> gewählt, bei der jedes Liquid Cristal Element eine eigene> Segementleitung hat.
Das ist ja witzig. Alle anderen müssen LCDs so nehmen, wie sie sind und
ihren Code an die dadurch gegeben physikalischen Gegebenheiten anpassen.
Du hingegen kannst scheinbar vom Code aus die physische Konstruktion der
LCDs ändern. Respekt...
Michael U. schrieb:> mir fällt bei Atmega169P und LCD eigentlich erstmal das> AVR-Butterfly-Modul ein, da sollten die Sourcen bei github zu finden> sein.
Ja, das hatte ich von so etwa 10 Jahren meiner kleinen Schwester
geschenkt.
Aber mal im Ernst: Wozu taucht hier ständig "LDC mit Controller XYZ" bei
den Hilferufen auf? Das Problem besteht doch aus 2 Teilen:
1. keine Kenntnisse über das vorhandene Display
2. keine (oder höchst mangelhafte) Kenntnisse darüber, wie man bei
seinem auserkorenen µC ein Portpin auf Hi oder Lo setzt.
Dazu kommt noch, daß es den Anfragern offenbar zu mühsam ist, selbst
etwas über beide 1. und 2. zu erlernen. Nein, da schließt man lieber das
Dispay irgendwie an und wenn sich dann nix tut, wird hier gerufen "es
tut sich nix! wo gibt's die passende Lib?"
Also, dem TO sei geraten, zu allererst die in 2. angesprochenen
Kenntnisse zu erwerben (durch Lernen) und dann zu lernen, wie man (mit
beliebigem Zeug) das vorliegende Display ansteuert. Datenblätter (so
vorhanden) helfen dabei ungemein, wenn man sie liest und versteht.
Aber bei blanken LC-Gläsern kann man sich auch ohne behelfen:
Mit einer guten Lupe gucken, ob und wieviele kleine schwarze Punkte man
am Rand entdecken kann. Das sind Metallkugeln, die als Quasi-Vias
dienen, also um das Signal von dem Glas mit den Anschlüssen auf da
gegenüberliegende Glas zu übertragen.
Wenn 1 Kügelchen zu entdecken war, dann ist das LCD wohl eines mir einer
BP (Backplane).
Bei 2 Kügelchen liegt nahe, daß es sich um 2 BP handelt.
Bei 3 Kügelchen wird es vermutlich auch 2 BP haben, aber eine davon ist
nicht durchgängig auf dem Glas, weswegen diese 2 Anschlüsse hat.
Bei 4 Kügelchen kann es sein, daß es 4 BP hat, aber es ist auch denkbar,
daß es mehrere Anschlüsse pro BP hat.
Am einfachsten ist das LCD-Glas mit nur 1 BP anzusteuern. Sowas kriegt
man auch mit popligen Portpins hin. Bei mehreren BP sieht das
Pegelschema komplizierter aus, weil auch mehrere Amplitudenstufen
benötigt werden. Das wäre dann ein Fall für einen speziellen
Ansteuerschaltkreis oder einen µC, der wie der auf dem o.g.
Butterfly-Board sowas eingebaut hat.
W.S.
Das Display hat nur eine Backplane, die an besagtem Controller an Pin 51
(COM0) anliegt.
Als ersten Test habe ich eine LED mit GPIO mit dem Atmega169 zum Test
auf HIGH gesetzt und sie hat geleuchtet.
Des weiteren besitze ich Erfahrugen mit GPIO, Interrupts, Timern, ADC
und RS232. Die Themen haben bisher gut geklappt.
Ich hoffe es kommt vielleicht der zündende Tipp von jemandem, der mit
dem Atmega169 gearbeitet hat.
c-hater schrieb:> Das ist ja witzig. Alle anderen müssen LCDs so nehmen, wie sie sind und> ihren Code an die dadurch gegeben physikalischen Gegebenheiten anpassen.> Du hingegen kannst scheinbar vom Code aus die physische Konstruktion der> LCDs ändern. Respekt...
Ich befürchte eher, du hast aus Hass mal wieder Nichts verstanden, und
paulst hier rum wie ein Walross.
Kurbel schrieb:> Als ersten Test habe ich eine LED mit GPIO mit dem Atmega169 zum Test> auf HIGH gesetzt und sie hat geleuchtet.
Eine LED leuchten zu lassen, ist was anderes. Ist dir eigentlich klar,
dass LCD-Segmente nicht längere Zeit mit Gleichspannung betrieben werden
dürfen?
Kurbel schrieb:> Das Display hat nur eine Backplane, die an besagtem Controller an Pin 51> (COM0) anliegt.
Wenn das wirklich so ist, dann vereinfacht es die Sache. Aber eine
"statische" Ansteuerung bleibt natürlich weiterhin völlig unmöglich. Das
killt zuverlässig das LCD..
Viehzeug-Erkennung schrieb im Beitrag #7324449:
> Eines Tages schlägt Dir mal jemand so in die Fresse, daß Lippen und Nase> vollkommen plan sind. Den Tag feiere ich!
Naja, Leute mit geringen intellektuellen Fähigkeiten sind halt relativ
leicht zu bespaßen...
Kurbel schrieb:> Ich hoffe es kommt vielleicht der zündende Tipp von jemandem, der mit> dem Atmega169 gearbeitet hat.
Ich hatte vor vielen Jahren mit diesem µC gearbeitet und auch dessen
LCD-Ansteuerung benutzt. Und der zündende Tip sollte von dir selbst
kommen - beim Lesen der Dokumentation zum Chip. Es geht eigentlich
leicht, man muß es nur lesen wollen.
W.S.
Edi R. schrieb:> Eine LED leuchten zu lassen, ist was anderes. Ist dir eigentlich klar,> dass LCD-Segmente nicht längere Zeit mit Gleichspannung betrieben werden> dürfen?
Ja, das ist mir klar. Das war nur als Gegenargument gedacht, weil mich
manche als Ahnungslosen darstellen wollten. Wie gesagt habe ich von
diesen Themen schon gehört und mit ihnen gearbeitet.
Und ich habe ich über die physikalische Funktionsweise der Displays
informiert. Diese müssen über Wechselspannung bzw. Umpolung von
Backplane und Segment Line betrieben werden.
W.S. schrieb:> Es geht eigentlich> leicht, man muß es nur lesen wollen.
Bisher habe ich den LCD Teil mehrmals gelesen. Im Datenblatt ist das
Mapping angegeben zu den Registern, jedes Segment hat sein eigenes Bit.
Daher dachte ich, die Zeile wurde ein Element aufleuchten lassen.
LCDDR0 = 0x02;
Die Initialisierung des Displays bin ich Schritt für Schritt
durchgegangen.
Gerade lese ich mir noch die Abschnitte IOs, Fuses, Clock, Interrupts im
Datenblatt durch.
Wie gesagt sind die Beispielcodes recht kompliziert, da mit Flash
Zugriffen und Pointern gearbeitet wird.