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.
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. ...
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 ?
> 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.
...
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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.