Forum: Compiler & IDEs 320x240 LCD controller atmega8


von Lomy (Gast)


Lesenswert?

Hi,
ich möchte ein Controllerloses 320x240 pixel display mit einen mega8 
ansteuern,Grundlegend weis ich was zun tun ist, nur praktisch gehts dann 
doch nicht ... Also per interrupt wird das display auf 1Mhz basis 
refreshed, ich habe erst einmal eine ganz einfach Ablauf geschrieben um 
erst mal ein wenig zu testen und zwar sieht der interrupt so aus :
1
ISR(TIMER1_COMPA_vect){
2
if(row==239){
3
   next_frame();
4
   row=0;
5
 }else{
6
     if(takt==79){
7
      next_row();
8
      row++;
9
      takt=0;
10
     }else{
11
         DATA=(1<<D0)|(0<<D1)|(1<<D2)|(0<<D3);
12
         takt++;
13
         next_bits();
14
     }
15
  }
16
17
}
die next funktionen sind nur kruze impulse an Cp LP und Flm. jedoch 
zeigt mir das display nicht die gewünschten 2 an 2 aus pixel an =( oder 
zumindest lässt sich nur erahnen was an und aus ist wenn ich den 
kontrast höher stelle, von der schalten her etc ist alles einwandfrei. 
Ist es vielleicht zu ungenau FLM CP uns LP mit dem selben timer zu 
setzten ? verschiebt sich das signal nach jedem refresh und ich erkenne 
deshalb nur grob die an und aus pixel ??? bitte um hilfe. plz keine 
links zu fertigen controllern, es geht mir hier vorallem auch ums 
verständniss.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Lomy schrieb:
> deshalb nur grob die an und aus pixel ??? bitte um hilfe. plz keine
> links zu fertigen controllern, es geht mir hier vorallem auch ums
> verständniss.
Warum schaust du dir diese nicht an wen es um das Verständniss geht 
lernt man doch am besten am Beispiel.

von Lomy (Gast)


Lesenswert?

ich hab nur beispiele in assembler gefunden, wovon ich nur wenig ahnung 
habe oder fertige hex datein ohne quellcode.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Der Ansteuerpart läßt sich auch nur sinnvoll in ASM machen, da die Sache 
sehr Zeitkritisch ist. Wenn man da nicht taktgenau ist kommt halt nur 
matsch raus.
Beitrag "Einfacher Low Cost LCD Controller für 320x240 LCD im Textmodus"
Wäre denk ich ein guter EInstieg dort ist der Ansteuerteil in ASM und 
der Rest in C geschrieben wenn ich das richtig in Erinnerung habe.

von Lomy (Gast)


Lesenswert?

naja ok , wenns nicht anders geht werd ich micht halt mal mit assembler 
auseinander setzten müssen, danke für die schnellen infos.

von Rolf Magnus (Gast)


Lesenswert?

> Also per interrupt wird das display auf 1Mhz basis refreshed,

Bedeutet das, daß du eine Interrupt-Frequenz von 1 MHz hast? Da wirst 
du's nämlich mit einem AVR nicht schaffen. Selbst bei 20 Mhz 
Prozessortakt hast du pro ISR nur 20 Taktzyklen, von denen 2/3 schon 
für's Interrupt-Handling selbst draufgehen.

von Lomy (Gast)


Lesenswert?

und wenn ich mit dem interrupt den ablauf eines assembler codes takten 
lasse ? müsste doch gehen

von Tropenhitze (Gast)


Lesenswert?

>ich möchte ein Controllerloses 320x240 pixel display mit einen mega8
>ansteuern,

Vergiss es einfach!

von Rolf Magnus (Gast)


Lesenswert?

Lomy schrieb:
> und wenn ich mit dem interrupt den ablauf eines assembler codes takten
> lasse ? müsste doch gehen

Wenn dieser Assembler-Code nicht länger als 2 bis 3 Instruktionen ist, 
vielleicht.

von Lehrmann M. (ubimbo)


Lesenswert?

Wenn du's unbedingt machen willst, dann versuch nicht mit einer 
Luftmatratze den Fahrweg der Titanic nachzupaddeln. Soll heißen vergiss 
deinen Mega8. Du müsstest fast hexen können wenn du das schaffen 
möchtest. Sorry aber mit deinem (momentanen) Wissen glaub ich nicht, 
dass du es schaffen würdest. Ich bin mir nicht mal sicher, ob das 
überhaupts zu schaffen ist.

Also schnapp dir einen FPGA und versuch's damit. Entsprechend Geld und 
Zeit musst du natürlich mitbrigen. VHDL ist leider nicht so einfach wie 
C.
Vorallem ziemlich teuer alles für einen Hobbybastler:  Hier Infos für 
dich :

http://www.mikrocontroller.net/articles/FPGA

von Uwe J. (Firma: Ing.-Büro U. Jaster) (jupec)


Lesenswert?

Hi Lomy,

es gibt 'ne Möglichkeit. Mit Interrupts wird das nie richtig 
funktionieren da die Abarbeitungszeiten der einzelnen Befehle 
unterschiedlich sind (bedingte-Jmp's!). Vergiß Interrupts und C! 
Funktionieren tuts nur mit laufzeitkonstanten Codes (ASM) und übere 'ne 
RAM Tabelle für die Steuerkomandos. Oder Hardware - d.h. Latches zur 
Synchonisation. FPGA geht auch ist aber das geiche als würde man mit 
einem Panzerkreuzer 'ne Luftmatratze versenken - CPLD schon besser 
(XLINX Software kostenlos aber 5GByte Eingabe per Schaltplan ohne VHDL). 
Die einfachste Lösung ist ein Display mit internem Bildwiederholspeicher 
und 8Bit-Bus. Da kannste an der Mega8 noch einen SPI-Dataflash 
(Zeichensatz) anschließen und hast sogar noch 'ne UART für RS232/485/USB 
für den Kontakt zur 'Außenwelt'.

UJ

von Lomy (Gast)


Lesenswert?

Ich habs mit der taktung gemeistert =D zum testen hab ich erst mal ein 
streifen musster senkrecht entstehen lassen, allerding hab ich etwa in 
der 200sten zeile, etwa 2 zeilen gar nichts was ich mir nicht erklären 
kann, wenn ich das sterusignal abschalte und das display spinnt ein 
wenig rum, gehen die beiden zeilen noch. was gäbe es den für grunde 
warum das nicth geht ?

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.