Forum: Mikrocontroller und Digitale Elektronik LCD Ansteuerung


von AVR Timer CompareMatch (Gast)


Lesenswert?

Hallo an alle:

Ich habe vor ein Grafik LCD mit einem AVR ATMEGA 48 anzusteuern. Ich 
weis, dass manche mir zu einem Grafikcontroller raten würden, dennoch 
möchte ich die Herausforderung wagen ein solches LCD mit einem AVR 
anzusteuern. Das Display benötigt in großen und ganzen 3 Signale:
DCLK = ist die schnellste Frequenz ca. 5 MHz und dient dazu die Farbbits 
in das jeweilige Pixel zu laden.
HSYNC = ist der Syncronisationsimpuls für die Displayzeile. mit jedem 
HSYNC Impuls wird ein Pixel in der Displayzeile weitergerückt
VSYNC = ist der Zeilenwechselimpuls.

Ich verwende ein Grafik LCD von Hitachi mit der Bezeichnung 
TX09D70VM1CDA

Doch nun zu meiner Frage:

Da ich noch in der Planungsphase der Programmierung des AVR bin, hat 
sich folgende Frage aufgedrängt:

Ich möchte mit einem Timer des AVR zwei Signale erzeugen. Kann ich dazu 
wenn ein CompareMatch Ereignis beim Timer auftritt in dem Interrupt 
dieses Ereignisses den CompareMatch Wert verändern, sodass der Timer der 
dann weiterläuft bei erreichen des neuen CompareMatch Wertes wieder den 
Port umschaltet. So dass ich dann 4 CompareMatch Ereignisse pro 
Timerdruchlauf habe??

Ich könnte es zwar selber ausprobieren, möchte aber dann nicht nachdem 
ich viel Zeit in die Programmierung gesteckt habe, daraufkommen, dass es 
doch nicht funktioniert.

von Hannes L. (hannes)


Lesenswert?

Du kannst mehrere Compare-Match Interrupts in einer Timer-Runde 
erzeugen. Einfach in der ISR das Compare-Register auslesen, das 
Intervall dazu addieren und ins Compare-Register zurückschreiben.

...

von Benedikt K. (benedikt)


Lesenswert?

AVR Timer CompareMatch wrote:

> Ich möchte mit einem Timer des AVR zwei Signale erzeugen. Kann ich dazu
> wenn ein CompareMatch Ereignis beim Timer auftritt in dem Interrupt
> dieses Ereignisses den CompareMatch Wert verändern, sodass der Timer der
> dann weiterläuft bei erreichen des neuen CompareMatch Wertes wieder den
> Port umschaltet. So dass ich dann 4 CompareMatch Ereignisse pro
> Timerdruchlauf habe??

Ja, das sollte funktionieren, ich frage mich aber, welchen Sinn das 
haben soll.
Auf dem Display wirst du nicht viel außer einfachen Streifenmustern oder 
ähnlichem anzeigen können, denn für mehr fehlt dem mega48 einfach der 
Speicher.

Hannes Lux wrote:
> Du kannst mehrere Compare-Match Interrupts in einer Timer-Runde
> erzeugen. Einfach in der ISR das Compare-Register auslesen, das
> Intervall dazu addieren und ins Compare-Register zurückschreiben.

Wiso aufaddieren ?

von Hannes L. (hannes)


Lesenswert?

> Wiso aufaddieren ?

Wieso nicht?
Das hat den Vorteil, dass der Timer frei durchlaufen kann, wodurch man 
den anderen Compare und den ICP parallel nutzen kann.

...

von AVR Timer CompareMatch (Gast)


Lesenswert?

Danke für die raschen Antworten!

Der ATMega war nur als Beispiel angedacht, es gibt ja auch noch 
Prozessoren, die zwar den gleichen PinOut wie der ATMEGA48 haben, jedoch 
um einiges mehr Speicher! Am Speicher sollte es also nicht liegen. Wieso 
ich mehrere Compare Match Ereignisse brauche will ich nochmal genauer 
erklären:

Ich habe zwei timing Signale die ich mit einem Timer erzeugen will.
Das erste sollte bei z.B. dem Zählerstand 33 des Timers auf High gehen, 
das zweite bei dem Zählerstand 50. Weiters sollte das zweite Signal beim 
Zählerstand 200 und das erste beim Zählerstand 240 wieder auf low gehen. 
Die Zahlenwerte sind frei erfunden ( hab gerade nicht das Timingdiagramm 
zur Hand).

von Benedikt K. (benedikt)


Lesenswert?

Stimmt, mein Fehler. Mit dem Compare denke ich immer an den CTC Modus, 
und da würde das nur eine Frequenzmodulation bewirken.

@ AVR Timer CompareMatch
Wenn du damit die Horizontalen Timingsignale erzeugen willst, würde ich 
nur den Hsync per Timer erzeugen und die restlichen Zeiten dann einfach 
im Interrupt absitzen, so lange sind die Zeiten auch nicht, als dass man 
die sinnvoll nutzen könnte.

Und was den Speicher angeht:
Bei 320x240 benötigt ein Bild bei bei nur 16 Farben immerhin 38,4kByte 
RAM. Soviel hat kein AVR (außer einer mit externem SRAM).

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
Noch kein Account? Hier anmelden.