mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD Ansteuerung


Autor: AVR Timer CompareMatch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: AVR Timer CompareMatch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.