Forum: Mikrocontroller und Digitale Elektronik Dogm128 testen


von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Hallo liebes Forum,

ich soll ein paar Dogm-Displays testen. Es sind alles 128. Ich bin 
leider kein Fachmann auf dem Gebiet und habe daher die letzten Tage viel 
auf dieser Seite verbracht.

Hier mal kurz ein paar Infos zu meiner Umgebung:
AVR Studio 4.18
Atmega32 auf STK500
Programmiert wird mit einem JtagIce MK2
Das Display ist wie folgt mit dem Atmega verbunden:
PD7-> SCL
PD6-> SI
PD5-> A0
PD4-> RST
PD3-> CS

Das angehängte Programm habe ich zum größten Teil aus dem Forum hier.
Ich möchte im Prinzip einmal alle Pixel ansteuern und dann wieder zurück 
setzten. Leider tut sich auf dem Display garnichts.
Ist meine Routine grober Unfug oder kann es etwas anderes sein?

Ich möchte von euch kein fertiges Programm haben sondern nur wissen wie 
ich an die Sache heran gehe. Da ich demnächst wohl öfters auf dem Gebiet 
tätig sein werde, bin ich für jede Erfahrung dankbar.

Gruß Wolfgang

von holger (Gast)


Lesenswert?

>Ist meine Routine grober Unfug oder kann es etwas anderes sein?

Ich sage nur DDRx.

von Wolfgang (Gast)


Lesenswert?

Hallo Holger,

danke für die Info. Ich muss also mit DDRD = 0xff; den Port D als 
Ausgang deklarieren. Ist dies so richtig?
Muss dies an einer bestimmten Stelle(im Programm) geschehen oder ist das 
egal?

Gruß Wolfgang

von Wolfgang (Gast)


Lesenswert?

Ich habe es jetzt an verschiedenen Stellen probiert. Ohne Erfolg.
Auch die einzelne Deklaration mit bsp.: DDRD |= (1 << DOGCS); brachte 
keinen Erfolg.
Ich bin jetzt zuhause und habe nur ein Display mitgenommen. Kann es sein 
das genau dieses defekt ist?

Den Anschluss habe ich nach Datenblatt vorgenommen. Ich habe auch schon 
geprüft ob die 3,3V sauber anliegen.

Gruß Wolfgang

von ... .. (docean) Benutzerseite


Lesenswert?

du brauchst auf jeden Fall erstmal ein Gut-Muster, ohne geht gar 
nichts...

dann lese dich in SPI ein, voallem was da Ausgang ist und was Eingang

dann kannst an deinem GUT-Muster dein Programm testen.

von Wolfgang (Gast)


Lesenswert?

Hallo docean,

ich fürchte ich versteh dich nicht recht. Was ist ein Gut-Muster?

Und wenn ich mich nicht verguckt habe, muss das Display an einen Ausgang 
vom Microcontroller. Eingänge werde also nicht benötigt. Zumal ich vom 
Display auch keine Daten lesen kann.
Oder habe ich da was übersehen?

Gruß Wolfgang

von holger (Gast)


Lesenswert?

>Eingänge werde also nicht benötigt. Zumal ich vom
>Display auch keine Daten lesen kann.
>Oder habe ich da was übersehen?

Das ist korrekt.
Als erstes solltest du dafür sorgen das der Reset
Pin auch auf High ist wenn du in das Display schreibst;)

von Spess53 (Gast)


Lesenswert?

Hi

Alle Kondensatoren dran? Und welcher Typ?

MfG Spess

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe das Programm gerade mal überarbeitet.
Leider immernoch ohne Erfolg.
Ich habe in vielen Programmen gesehen das dort Header-Dateien verwendet 
wurden. Ist dies zwingend notwendig oder geht es auch ohne?

Ist es vll einfacher nur einen Pixel einzeln anzusteuern?
Ich will möglichst einfach anfangen und mich dann immer weiter 
vertiefen.
Das Prinzip einer SPI-Schnittstelle habe ich, so denke ich, verstanden. 
Es hapert immoment an der Ansteuerung...

Gruß Wolfgang

von holger (Gast)


Lesenswert?

>Ich habe das Programm gerade mal überarbeitet.

Reset ist immer noch low.

von holger (Gast)


Lesenswert?

>Reset ist immer noch low.

Upps, doch nicht. Was soll denn das in dogSPIout()?

von Spess53 (Gast)


Lesenswert?

Hi

>Ist es vll einfacher nur einen Pixel einzeln anzusteuern?

Nein, weil nicht möglich. Acht Pixel sind jeweils in einem Byte 
verpackt. Ehrlich gesagt solltest vielleicht erst mal das Datenblatt vom 
Display und vom verwendeten Controller (ST7565R) lesen.

MfG Spess

von Wolfgang (Gast)


Angehängte Dateien:

Lesenswert?

@Holger
Wenn die Funktion dogOut aufgerufen wird, werden ja auch die Daten 
übertragen. Daher muss hier Reset auf high, oder nicht?

@Spess
Das mit den "Datenwörtern" übertragen habe ich mir gerade nochmal 
angeschaut.
Ein irres Gewusel an einsen und nullen... Da bleibe ich wohl lieber 
erstmal bei meiner Variante.

Im Anhang ein Bild vom heimischen Aufbau.

von Spess53 (Gast)


Lesenswert?

Hi

>Im Anhang ein Bild vom heimischen Aufbau.

Elkos! Habe ich fast befürchtet. Ich habe es selbst nicht getestet, aber 
mit Elkos hatten hier schon etliche Probleme. Mit 1µ-Kerkos laufen die 
Dogs bei mir tadellos. Mess mal die Spannung an Vout. Sollte >=10V sein.

MfG Spess

von holger (Gast)


Lesenswert?

Beitrag "Library für EA-DOGM Grafikdisplays inkl. Font-Generator"

Um das mal abzukürzen. Da gibt es alles fertig.
Zwar nicht per Software SPI, aber man kann sich
einmal im Leben ja mal einen anständigen Controller kaufen;)

von Spess53 (Gast)


Lesenswert?

Hi

>Um das mal abzukürzen. Da gibt es alles fertig.
>Zwar nicht per Software SPI, aber man kann sich
>einmal im Leben ja mal einen anständigen Controller kaufen;)

Was hat das mit anständigen Controller zu tun? Im Gegensatz zur hier 
öfters propagierten Soft-UART ist eine Soft-SPI wesentlich einfacher und 
problemloser.

MfG Spess

von Wolfgang (Gast)


Lesenswert?

@Spess
AHA :) Wobei es ja eigentlich keinen Unterschied machen sollte, sofern 
richtig angeschlossen. Dies habe ich gerade nochmal geprüft. Aber ich 
werde mal morgen ein paar KerKos mitnehmen und es dann nochmal 
versuchen.

@ holger
Ich möchte eigentlich nicht auf etwas fertiges zurückgreifen. Ich will 
den langen Weg der Selbsterfahrung gehen, denn nur so sammel ich auch 
Erfahrungen. Und das AHA- Erlebnis ist einfach um Welten besser ;)


Ich habe gerade festgestellt das ich wohl einen kleinen Kabeldreher 
hatte. Leider gehts immer noch nicht.
Ist mein Programm denn soweit okay?

von Spess53 (Gast)


Lesenswert?

Hi

>AHA :) Wobei es ja eigentlich keinen Unterschied machen sollte,...

Was liegt denn nun an Vout (Pin32) an?

MfG Spess

von Wolfgang (Gast)


Lesenswert?

Hmm leider nur 2,32V. Das ist wohl zu wenig...
Also doch Kerkos !? Oder ist hat das Display eine Macke?

Gruß Wolfgang

von holger (Gast)


Lesenswert?

>Ich möchte eigentlich nicht auf etwas fertiges zurückgreifen. Ich will
>den langen Weg der Selbsterfahrung gehen, denn nur so sammel ich auch
>Erfahrungen. Und das AHA- Erlebnis ist einfach um Welten besser ;)

Und was hindert dich daran mal bei anderen reinzusehen die
diese Erfahrungen schon gesammelt haben? Da findest du wertvolle
Informationen. Stell dir mal vor es gäbe kein Internet.
Deine Frage nach Hilfe hier ist doch nichts anderes. Du möchtest
das dir jemand Code gibt oder deinen Code verbessert. Vieleicht
hat ja keiner Lust deinen Code anzusehen, den mit anderen zu
vergleichen und dir dann zu sagen was du falsch machst?

>Ich möchte eigentlich nicht auf etwas fertiges zurückgreifen.

So und jetzt mal ein bisschen härter; Dann mach deinen
Scheiß doch alleine! Ich tue es ja auch;)

von holger (Gast)


Lesenswert?

>Oder ist hat das Display eine Macke?

Auf dem Bild ist jedenfalls sowas wie ein Riss zu erkennen.

von Spess53 (Gast)


Lesenswert?

Hi

>Also doch Kerkos !? Oder ist hat das Display eine Macke?

Eher Ersteres.

MfG Spess

von Wolfgang (Gast)


Lesenswert?

@ Holger
Du hast ja recht;) Ich werde mich heute mal mit deinem Link beschäftigen 
und hoffe ich sehe dann ein paar Sachen klarer.
Der Riss ist in dem Touchpannel.

@Spess
Ich werde heute mal ein paar 1uF Kerkos besorgen.
Wie anfällig ist den der ST7565? Also kann es sein das der evtl. schon 
zerschossen ist?

Gruß Wolfgang

von spess53 (Gast)


Lesenswert?

Hi

>Wie anfällig ist den der ST7565? Also kann es sein das der evtl. schon
>zerschossen ist?

Bis jetzt habe ich noch keinen ins Jenseits befördert. Allerdings habe 
ich es auch nicht darauf angelegt.

MfG

von Wolfgang (Gast)


Lesenswert?

Hallo,
ich habe heute die Elkos gegen Kerkos getauscht und mir das Beispiel von 
Holger nochmal genau angeschaut, und ein paar fehler in meinem Programm 
gefunden. Nun geht das Display :)

Was ich noch nicht hinbekommen habe ist das, wenn er die Pixel alle 
angesteuert hat (#define DisplayBLK 0xA5) wieder alle Pixel löschen 
(#define DisplayCLR 0xA4)

Ich mache das in einer Schleife die so aussieht:
1
  while(1){
2
  DOGENABLE;
3
  dogSPIout(DisplayBLK);//Alle Pixel ansteuern
4
  DOGDISABLE;
5
   _delay_ms(2500);
6
  DOGENABLE;
7
  dogSPIout(DisplayCLR);//Alle Pixel ansteuern
8
  DOGDISABLE;
9
  _delay_ms(2500);
10
  }

Es bleiben aber immer ein paar Pixel "hängen".
Ich habe es jetzt mit Reset gelöst nur muss ich dann jedesmal die Init 
neu ausführen.

Gruß Wolfgang

von Bernd (Gast)


Lesenswert?

Hallo Wolfgang,

ich habe zur Zeit das gleiche Problem.
Ich wär dir sehr dankbar, wenn du den Programmcode mal posten könntest.

von Spess53 (Gast)


Lesenswert?

Hi

Die Befehle haben keinen Einfluss auf den Displayinhalt. Du musst nur 
einfach den Displayspeicher mit $00 beschreiben, um das Display zu 
löschen.

MfG Spess

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.