Hi Zusammen, bin grad dabei den portierten GCC Code vom Butterfly zu debuggen, um den Funktionsablauf zu verstehen. Mir ist nun aufgefallen, dass irgendwann der ISR(LCD_vect) immer wieder angeworfen wird. Wo wird ein entsprechendes Flag gesetzt? Bzw wer wirft den ISR() an? Komme an dieser Stelle nicht weiter und bin für jede Hilfe dankbar. Viele Grüße, Mike
Hallo, ohne jetzt nachzuschauen: LCD_vect würde ich dem LCD-Controller zuordnen und zu dem sollte doch eine Beschreibung seiner IRQ-Möglichkeiten im Datenblatt des Mega169 stehen? Gruß aus Berlin Michael
Hey Michael, danke für Deine schnelle Antwort. Die Register habe ich diesbzgl durchgesehen. LCDIE := Interrupt enable ist gesetzt daher erwarte ich beim LCDIF ein Flag und anschließend den Sprung in die ISR Routine. Leider wird das LCDIF nie gesetzt und meine logische Welt beginnt zu bröckeln... Das hier habe ich noch im Netz gefunden: http://simplecircuitdesign.com/html/LCD__driver_8c.html#a41facc6819739d0109a49044a11a87c scheint mir so, als ob alle Referenzen den Interrupt anwerfen, jedoch kann ich nirgends im Quellcode entsprechende Einträge finden, wo ein Flag (insbesondere das LCDIF) gesetzt wird... Viele Grüße, Mike
Rein von der Erinnerung her wird der LCD-Interrupt durch den 32-kHz- Timer angeworfen, der für das Multiplexen des LCDs zuständig ist.
Hallo, LCDIF ist ein Interrupt-Flag, das wird durch die Hardware gesetzt. Welcher Hardwareteil dafür zuständig ist, kann Dir nur die Beschreibung des Mega169 sagen. Wie Jörg Wunsch schon bemerkte, dürfte es ein spezieller Timer sein, der vom LCD-Controller genutzt wird. PS: gerade mal schnell ins Datenblatt geschaut: LCDIF wird gesetzt, wenn ein neues Frame beginnt und die Displaydaten geupdatet werden. genaueres muß Du Dir selbst aus dem Datenblatt raussuchen. Ich habe mich mir der Programmiereung des Displaycontrollers noch nicht befaßt. Gruß aus Berlin Michael
Hi, der Quarz hängt am Timer2, da müsste die ISR() angeworfen werden. sehe dort aber keinen flag das gesetzt wird. Kann es sein, dass nur ein Sprungmarke zur Vektortabelle zum ISR gesetzt wird? dort ist ja wiederrum die adresse als einsprungmarke zum ISR(LCD) drin... Habt ihr ein Tipp wie ich die Sprungmarke am Besten finden kann??? Gruß, Mike @Mods P.S. Obiger Text wurde von der Seite als Spam erkannt? Mache ich etwas falsch oder sind einfach nur die Einstellung für das Forum so restriktiv eingestellt???
Mike wrote:
> der Quarz hängt am Timer2, da müsste die ISR() angeworfen werden.
Nein, bei den LCD-Controllern wird dieser Quarz auf den LCD-Block
,,umgebogen''.
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.