Forum: Mikrocontroller und Digitale Elektronik ATMEGA8 mit Grafik-Display DOGM-132-5 in Assembler


von Timo T. (timmo)


Angehängte Dateien:

Lesenswert?

Einen schönen guten Tag alle miteinander,

ich habe folgendes Problem:

Ich habe mir ein EA-DOGM-132S-5 (Grafikdisplay 132x32) besorgt und gemäß 
datenblatt angeschlossen. Das ganze läuft komplett mit 3.3V.

Mein Ziel ist erstmal das Teil dazu zu bewegen, irgendwelche Pixel 
anzeigen zu lassen. Da sämtliche Informationen und Code-Beispiele in C 
verfasst sind oder aber sofort nach Problemlösung keine Infos mehr 
verbreitet werden, komme ich nicht weiter.

Seid ihr so gut, schaut in meinen Quelltext und weißt mich auf Fehler 
hin?

3.3V
ATMEGA8 mit internen 8MHz

DOGM132-5:
CS1B dauerhaft low (direkt an GND)
A0 an PB 1
RESET an PB0
SI an PB3(MOSI)
SCL an PB5 (SCK)

verwendete Kondensatoren WIMA MKS-2 1µF gemäß "LOW-POWER"Beschaltung 
[1]S.4

Datenblätter:
[1] http://www.lcd-module.de/pdf/grafik/dogm132-5.pdf
[2] http://www.lcd-module.de/eng/pdf/zubehoer/st7565r.pdf


QUELLTEXT:
siehe Anhang


Besten Dank im voraus, Timmo

von spess53 (Gast)


Lesenswert?

Hi

>CS1B dauerhaft low (direkt an GND)
>A0 an PB 1
>RESET an PB0
>SI an PB3(MOSI)
>SCL an PB5 (SCK)

Und was hängt an PB2? Das ist das SS-Pin. Und wenn das Eingang und offen 
ist, schaltet sich früher oder später der Mastermode ab. Entweder als 
Ausgang schalten oder wenn Eingang auf H legen.


>ldi    temp1, (1<<SPE) | (1<<MSTR) | (1<<CPOL)

Da brauchst du nur SPE und MSTR setzen.

MfG Spess

von Timo T. (timmo)


Angehängte Dateien:

Lesenswert?

>Und was hängt an PB2? Das ist das SS-Pin. Und wenn das Eingang und offen
>ist, schaltet sich früher oder später der Mastermode ab. Entweder als
>Ausgang schalten oder wenn Eingang auf H legen.

-> DDR als Ausgang für PB5,3,2,1 und 0 gesetzt

>>ldi    temp1, (1<<SPE) | (1<<MSTR) | (1<<CPOL)
>Da brauchst du nur SPE und MSTR setzen.

-> erledigt


leider keine Besserung

von Thomas F. (igel)


Lesenswert?

1
SPI_cmd_send:
2
    sbis SPSR, SPIF        ; solange, bis Interrupt aus!!
3
    rjmp SPI_cmd_send
4
  out SPDR, DOG_CMD
5
SPI_cmd_send_wait:            ;  in temp1, SPSR
6
    sbis SPSR, SPIF        ; solange, bis Interrupt aus!!
7
    rjmp SPI_cmd_send_wait
8
  ret

Warum wartest du doppelt? Ein sbis SPSR, SPIF am Aafang reicht 
eigentlich aus.
1
SPI_data_send:
2
    sbis SPSR, SPIF        ; solange, bis Interrupt aus!!
3
    rjmp SPI_data_send
4
  sbi  DOG_DDR, DOG_A0

Meinst du hier nicht eher:
1
sbi  DOG_PORT, DOG_A0

1
cbi  DOG_DDR, DOG_A0
Siehe oben...
Besser gleich nach ganz oben setzen, direkt unter
1
SPI_cmd_send:
2
  cbi  DOG_Port, DOG_A0

von Timo T. (timmo)


Lesenswert?

Teilcode angepasst an:
1
SPI_cmd_send:
2
  sbis SPSR, SPIF
3
  rjmp SPI_cmd_send
4
  out SPDR, DOG_CMD
5
  ret
6
7
SPI_data_send:
8
  sbi  DOG_PORT, DOG_A0
9
  sbis SPSR, SPIF
10
  rjmp SPI_data_send
11
  out SPDR, DOG_CMD
12
  cbi  DOG_PORT, DOG_A0
13
  ret

leider keine Besserung / änderung

von spess53 (Gast)


Lesenswert?

Hi

>leider keine Besserung / änderung

Mess mal die Spannung an Pin32 (VOUT). Da sollten etwa so 10..11V 
anliegen.

>verwendete Kondensatoren WIMA MKS-2 1µF gemäß "LOW-POWER"Beschaltung

Warum nimmst du da teure Folien-Kondensatoren? 1µ Keramik reichen:

http://www.reichelt.de/Vielschicht-SMD-G0805-High-Cap/X7R-G0805-1-0-25/3/index.html?&ACTION=3&LA=2&ARTICLE=89730&GROUPID=4339&artnr=X7R-G0805+1%2C0%2F25

Ist auch die Empfehlung von Electronic Assembly.

MfG Spess

von Thomas F. (igel)


Lesenswert?

Probier am Anfang mal eine Reset-PAuse für das LCD:
Also so was:
1
cbi DOG_Port, DOG_Reset
2
rcall wait1ms
3
sbi DOG_Port, DOG_Reset

von Timo T. (timmo)


Lesenswert?

>>Mess mal die Spannung an Pin32 (VOUT). Da sollten etwa so 10..11V
anliegen.

~~ 8,5V gegen GND

liegts an den Kondensatoren?


>>Warum nimmst du da teure Folien-Kondensatoren? 1µ Keramik reichen
... weil ich nur die (neben ELKO) in 1µF da hatte
Bestellung für Kerko ist raus


>>Probier am Anfang mal eine Reset-PAuse für das LCD:
>>Also so was:
>>cbi DOG_Port, DOG_Reset
>>rcall wait1ms
>>sbi DOG_Port, DOG_Reset

ist bereits drin mit
1
DOG_INIT_RESET:
2
  sbi    DOG_PORT, DOG_RESET ;eig. Überflüssig da schon HIGH
3
  rcall  delay50us
4
  cbi    DOG_PORT, DOG_RESET
5
  rcall  delay1ms   (<==auch andere Zeiten versucht)
6
  sbi    DOG_PORT, DOG_RESET
7
  rcall  delay1ms



zu den Kondensatoren => wenn die Kerkos da sind, löte ich alles auf ne 
Lochrasterplatine. Nicht dass da der Kontakt zu einem C fehlerhaft 
ist...
Läuft zu Testzwecken gerade auf einem Steckbrett...



Einstellungen für das SPI soweit OK?

von Timo T. (timmo)


Angehängte Dateien:

Lesenswert?

Habe das Problem gelöst.

Nachdem die Kerkos ankamen, gleich alles die Chance genutzt und sauber 
auf Platine gelötet. Anschließend angeschlossen und die Ernüchterung, 
daran lag es nicht.

Alles von vorn, Code durchgesehen und Schritt für Schritt durchgegangen.

Ende vom Lied, ich hab in einer Schleife auf SPI-Ready-Flag gewartet, 
welches jedoch zuvor nicht gesetzt werden konnte, da vorher nie Daten 
das Haus verlassen haben.


Für alle die, die ein ähnliches Problem bekommen sollten, hab ich den 
funktionierenden Code angefügt.

Besten Dank an alle und weiterhin alles Gute,
Timmo

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.