Hallo, ich hab mir mal auf die schnelle so ne Schaltung von nem S65 Display zurechtgebaut. Leider hab ich Moment recht wenig Zeit, deshalb hab ich direkt nach dem ersten gescheiterten Programmversuch aufgegeben. Könnte mir vielleicht mal jemand ein ganz einfach Programm überlassen, bei dem z.B. nur ein rechteck oder sowas angezeigt wird? Am besten sollte das Programm so sein, dass ich schnell die PinBelegung ändern kann. Z.B. Mit #define oder so. Achja, ich verwende einen Atmega8. MFG
Ganz ohne eigenen Hirnschmalz wirst du das wohl nicht so einfach geliefert bekommen. http://www.superkranz.de/christian/S65_Display/DisplaySoftware.html Hier findest du eigentlich alles, was du brauchst. Voraussetzung ist allerdings etwas technisches Verständnis und etwas Erfahrung mit WinAVR. Ohne das gehts nicht....
Hmm, verdammt hilfreich. Vielen Dank. Das Programm sollte ja auch nur zur Orientierung dienen, damit ich weis, ob alles richtig verlötet ist. MUG
Dake78 wrote:
> Hmm, verdammt hilfreich. Vielen Dank.
Du kanntest die Seite noch nicht?
Doch, nach dieser Seite hab ich das Aufgebaut. Ich meinte die Beiträge. Ok, kann mir dann bitte wenigstens jemand sagen, was MOSI, MISO und SCK sind? #define LCD_CS PC2 #define LCD_RESET PC1 #define LCD_RS PC0 #define LCD_MOSI PC4 #define LCD_MISO PB3 #define LCD_SCK PC3 CS, RESET und RS sind ja klar, ist SCK = gleich CLK und MOSI gleich DAT? Was ist dann MISO?
Ach sorry, bin grad nen bisschen daneben. Ne ist natürlich klar was es ist.
Hab mal das glcd-Testprogramm versucht, aber beim kompilieren kommt immer diese Meldung: > "make.exe" all -------- begin -------- avr-gcc (GCC) 4.2.2 (WinAVR 20071221) Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Linking: test.elf avr-gcc -mmcu=atmega8 -I. -D GCC_MEGA_AVR -I. -g -O0 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wextra -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wunused -std=gnu99 test.o --output test.elf -Wl,-Map=test.map,--cref -lm -L../glcd/. -lglcd c:/winavr-20071221/bin/../lib/gcc/avr/4.2.2/../../../../avr/bin/ld.exe: region text is full (test.elf section .text) c:/winavr-20071221/bin/../lib/gcc/avr/4.2.2/../../../../avr/bin/ld.exe: region text is full (test.elf section .text) make.exe: *** [test.elf] Error 1 > Process Exit Code: 2 > Time Taken: 00:01 Was heißt das? Es ist doch eigentlich egal an welche Ports ich das Display anschließe, Hauptsache ich ändere es in der glcd.inc ,oder?
Eine Section ist zu gross für die Zielplattform. Vermutlich ist ein Array zu gross dimensioniert, zuviel Programmcode oder einfach nur das Makefile falsch.
Hmm, aber das ist doch das Testprogramm von der glcd Libary und ich hab nur die Ports geändert.
Ich kenne deine Quellen nicht. Es ist aber durchaus möglich, daß sie so veraltet sind, daß sie aus irgendeinem Grund sich mit einem neueren AVR-GCC nicht kompilieren lassen.
Das Problem war, das der Code zu groß war für nen Atmega8. Aber nachdem ich den Code gekürzt hab, funzt es auch nicht auf dem Display. Ist es denn nun egal, an welchen Pins das Display hängt, oder muss es unbedingt MOSI und SCK sein?
Vorallem das Timing ist wichtig. Das sollte unbedingt stimmen. (XTAL und die daraus errechneten Werte gegenprüfen) Im Prinzip ist es egal an welchen Pins das Display hängt. Wichtig ist, das diese nicht durch eine andere Funktionalität belegt sind. Wenn du das Display an die MISO/MOSI/SCK betreibst, ist es natürlich vorteilhaft, keinen ISP angeschlossen zu haben.
Welches errechneten Werte? Ich hab nen 16MHz Oszi dran gehangen und der funzt denke ich auch soweit und am Quelltext hab ich nur die PinBelegung geändert. Die ist bei mir so an Port C: PC0 = RS PC1 = RESET PC2 = CS PC3 = CLK PC4 = DAT Und im Code sieht das dann so aus. #define LCD_CS PC2 #define LCD_RESET PC1 #define LCD_RS PC0 #define LCD_MOSI PC4 #define LCD_MISO PC5 #define LCD_SCK PC3 oder ist da schonwieder was falsch?
Wird der externe Quarz auch benutzt? Ohne die Default-Werte der Fuses angefasst zu haben läuft ein mega8 auf internen 1Mhz.
Denke das sollte so stimmen. Also SUT1, CKSEL3, CKSEL2, CKSEL1, CKSEL0 sind an und SPIEN kann ich nicht ändern, aber ist auch an.
:) naja ist es ja auch. Du meintest ich sollte bei Ponyprog mal nen hacken dran machen?
Hat sich nichts verändert? Hab auch schonmal das Atmega Bilderrahmen Projekt draufgespielt und auch das hat nicht funktioniert. Hatte natürlich die SD-Karte nicht angeschlossen und die Ports auch wieder richtig abgeändert. Aber auch da wurde nichts angezeigt. War das denn richt von oben?? Die ist bei mir so an Port C: PC0 = RS PC1 = RESET PC2 = CS PC3 = CLK PC4 = DAT Und im Code sieht das dann so aus. #define LCD_CS PC2 #define LCD_RESET PC1 #define LCD_RS PC0 #define LCD_MOSI PC4 #define LCD_MISO PC5 #define LCD_SCK PC3 Oder ist da was falsch?
Hi Dake, a) Der Code den du benutzt muss zum Display passen. b) Bei zwei der drei Display Demo-Versionen wird der Zeichensatz ins RAM geladen, dass geht nicht beim ATMega8 weil zu wenig RAM. Also am besten die ganze ASCII Tabelle rauswerfen oder auf ein paar Zeichen beschränken. Alle Versionen verändern nach dem Start die Hintergrundfarbe. Das reicht für einen ersten Test. Wenn sich die Farbe ändert, funktioniert die HW. c) Ich habe gerade kein ATM8 Datenblatt, ist denn das Hardware SPI Interface beim ATM8 auf Port C gelegt? Kann sein, kommt mir nur komisch vor. Der Code funktioniert jedenfalls nur mit HW-SPI. Grüße SU
SU wrote: > c) Ich habe gerade kein ATM8 Datenblatt, ist denn das Hardware SPI > Interface beim ATM8 auf Port C gelegt? Kann sein, kommt mir nur komisch > vor. Der Code funktioniert jedenfalls nur mit HW-SPI. Diese Information hat mir gefehlt. Wenn das so ist, ist die Verdrahtung falsch. Ich dachte, es handelt sich um ein Software SPI.
Naja, ich kann recht gut Programmieren und ne neue programmiersprache lern ich auch recht schnell, aber von Hardware hab ich nicht viel Ahnung, deshalb sagt mir bitte einfach was ich falsch gemacht hab: hier ist das Datenblatt. http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf
Scherzkeks. Aber du könntest ja mal versuchen, das Display an die SPI-Pins vom Prozessor zu hängen (MISO, MOSI, SCK)...
Mir fehlt gerade die nötige Bandbreite um das Dokument runterladen zu können. Der HardwareSPI besteht beim mega8 aus Pins Mosi, Miso und SCK. Diese sind auch so am Mega8 beschriftet. Du musst den so verbinden: mega8 display MOSI DAT MISO --- SCK CLK RS,CS und Reset kannst du belegen wie du lustig bist. Wichtig ist ebenfalls eine gemeinsames GND.
Hab mir gerade nochmal das Projekt mit dem Atmega8 Bilderrahmen angeschaut und dort hat er das Display an Port D gehangen. Ist ja auch nicht SPI. Aber ich werde es mal versuchen.
Hmm, also erstmal einen riesen dank. Es funktioniert schonmal. Ich hab jetzt das Simple_Display programm drauf, also dieses HelloWorld-Programm. Es wird zwar etwas an der richtigen Stelle angezeigt, aber es sieht recht komisch aus. Es sind nur sehr komische zeichen zu sehen. Ich musste leider die Anschlüsse für RS und RESET an einen anderen Port hängen als DAT, CS und CLK. Kann man denn sowas in der glcd auch einstellen oder muss man dann den kompletten Quelltext bearbeiten?
>>Es wird zwar etwas an der richtigen Stelle >>angezeigt, aber es sieht recht komisch aus. Es sind nur sehr komische >>zeichen zu sehen. Du hast ja wahrscheinlich auch die ASCII Tabelle rausgeworfen, da sie nicht in den Speicher vom ATM8 passt. Also wird da wohl irgend welche undefinierten Daten angezeigt. Die glcd benutzt standardmässig den PORTB für ATM8:
1 | #if defined (__AVR_ATmega8__)
|
2 | #define LCD_PORT _SFR_IO_ADDR(PORTB)
|
3 | #define LCD_PIN _SFR_IO_ADDR(PINB)
|
4 | #define LCD_DDR _SFR_IO_ADDR(DDRB)
|
5 | #define LCD_CS PB0
|
6 | #define LCD_RESET PB6
|
7 | #define LCD_RS PB7
|
8 | #define LCD_MOSI PB2
|
9 | #define LCD_MISO PB3
|
10 | #define LCD_SCK PB1
|
Demnach sieht es so aus, als ob alle Display-Steuer Signale zumindest vom gleichen Port kommen sollten.
Schade, naja. Intwischen komm ich halbwegs zurecht. Aber im Moment scheiter ich gerade an der Darstellung einer Linie. Gefüllte Rechtecke und und ungefüllte Rechtecke sind kein Ding. Punkte und Kreise auch nicht wirklich. Aber ne Linie :) habt ihr dafür irgendeine brauchbare Routine, meine eigene funktioniert nicht wirklich.
Hi Dake, Linie zeichnen? Schau die das mal an http://en.wikipedia.org/wiki/Bresenham's_line_algorithm welches der drei S65 Displays hast du denn? toxico
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.