S65 Display Kleines Testprogramm.

Gast #777385
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
Gast #777514
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?
Gast #777915
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?
Gast #778258
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?
#778268
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.
Gast #778287
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?
Gast #778378
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?
Gast #778403
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
#778412
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.
#778482
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.
Gast #778536
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?
Gast #779096
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.
Gast #779611
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren