Forum: Mikrocontroller und Digitale Elektronik S65 Display Kleines Testprogramm.


von Dake78 (Gast)


Lesenswert?

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

von Niels H. (monarch35)


Lesenswert?

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....

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Wenn Du keine Zeit hast, Dich damit zu befassen: lass es.

von Dake78 (Gast)


Lesenswert?

Hmm, verdammt hilfreich. Vielen Dank.
Das Programm sollte ja auch nur zur Orientierung dienen, damit ich weis, 
ob alles richtig verlötet ist.
MUG

von Niels H. (monarch35)


Lesenswert?

Dake78 wrote:

> Hmm, verdammt hilfreich. Vielen Dank.

Du kanntest die Seite noch nicht?

von Dake78 (Gast)


Lesenswert?

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?

von Dake78 (Gast)


Lesenswert?

Ach sorry, bin grad nen bisschen daneben. Ne ist natürlich klar was es 
ist.

von Dake78 (Gast)


Lesenswert?

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?

von Niels H. (monarch35)


Lesenswert?

Eine Section ist zu gross für die Zielplattform. Vermutlich ist ein 
Array zu gross dimensioniert, zuviel Programmcode oder einfach nur das 
Makefile falsch.

von Dake78 (Gast)


Lesenswert?

Hmm, aber das ist doch das Testprogramm von der glcd Libary und ich hab 
nur die Ports geändert.

von Niels H. (monarch35)


Lesenswert?

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.

von Dake78 (Gast)


Lesenswert?

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?

von Niels H. (monarch35)


Lesenswert?

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.

von Dake78 (Gast)


Lesenswert?

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?

von Niels H. (monarch35)


Lesenswert?

Wird der externe Quarz auch benutzt? Ohne die Default-Werte der Fuses 
angefasst zu haben läuft ein mega8 auf internen 1Mhz.

von Dake78 (Gast)


Lesenswert?

Denke das sollte so stimmen.
Also SUT1, CKSEL3, CKSEL2, CKSEL1, CKSEL0 sind an und SPIEN kann ich 
nicht ändern, aber ist auch an.

von Dake78 (Gast)


Lesenswert?

Also, das war jetzt mit PonyProg abgerufen.

von Niels H. (monarch35)


Lesenswert?

CKOPT sollte '0'(programmed) sein.

von Dake78 (Gast)


Lesenswert?

:) naja ist es ja auch. Du meintest ich sollte bei Ponyprog mal nen 
hacken dran machen?

von Dake78 (Gast)


Lesenswert?

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?

von Niels H. (monarch35)


Lesenswert?

Nö, die Verdrahtung erscheint mir richtig.

von SU (Gast)


Lesenswert?

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

von Niels H. (monarch35)


Lesenswert?

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.

von Dake78 (Gast)


Lesenswert?

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

von Simon K. (simon) Benutzerseite


Lesenswert?

Scherzkeks. Aber du könntest ja mal versuchen, das Display an die 
SPI-Pins vom Prozessor zu hängen (MISO, MOSI, SCK)...

von Niels H. (monarch35)


Lesenswert?

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.

von Dake78 (Gast)


Lesenswert?

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.

von Dake78 (Gast)


Lesenswert?

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?

von Niels H. (monarch35)


Lesenswert?

was ist "glcd"?

von Dake78 (Gast)


Lesenswert?


von SU (Gast)


Lesenswert?

>>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.

von Dake78 (Gast)


Lesenswert?

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.

von toxico (Gast)


Lesenswert?

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