Forum: Mikrocontroller und Digitale Elektronik Geisterzeichen bei DOGM


von Karl-Heinz (Gast)


Lesenswert?

Hallo,

hab mir zum Basteln ein DOG-M 16x2 geholt, welches per SPI an einen 
Mega2561 angeschlossen ist. Display funktioniert soweit, nur wird der 
Text an einer falschen Stelle wiedergegeben. Die Wartezeiten zwischen 
den Kommandos und Daten sind eigentlich großzügig überdimensioniert, der 
SPI läuft in der langsamsten Stufe.

Was könnte ich übersehen haben? Habe mich an den hier zu findenen DOG-M 
Routinen und am Datenblatt des Displays orientiert.

von XMEGA (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,


Karl-Heinz schrieb:
> Was könnte ich übersehen haben?


Habe dir mal meinen Code mit einem Atmega644V angehängt.

Das ist zwar nur ein Software-SPI, dafür funktioniert er auf allen 
Atmegas...

Zumindest kannst du den Code mit deinem vergleichen.

Gruß XMEGA

von Lehrmann M. (ubimbo)


Lesenswert?

Karl-Heinz schrieb:
> Was könnte ich übersehen haben?

Ich will dir mal das von dir gelieferte Informationsniveau an einem 
adäquaten Vergleich zeigen. "Mein Auto, VW Golf Baujahr 1992 ist defekt 
- weitere Informationen gebe ich nicht heraus - was muss ich machen, 
damit er wieder läuft?" Der ADAC-Mann wird bei dieser Informationsfülle 
nichts machen können.

Darum:

1. Schaltung, Beschreibung
2. Bild von der Schaltung (Kabel, etc)
3. Source-Code (!)
4. Genaue Fehlerbeschreibung

Diese 4 Punke sollen wir wohl erraten? Fragen wir die Glaskugel ...

Nein im Ernst - bitte bemühe dich um eine konkrete Beschreibung, nur so 
können wir effektiv helfen.

von Armin (Gast)


Lesenswert?

> 1. Schaltung, Beschreibung
> 2. Bild von der Schaltung (Kabel, etc)
> 3. Source-Code (!)
> 4. Genaue Fehlerbeschreibung

Dachte eigentlich mit 4. hätte ich gedient. Für 1-3 müsste ich mehr Zeit 
investieren als ich in den Aufbau und Programmierung für einen 
Schnelleinstieg uC+Display gesteckt habe. Ich bastel das nun auf 4bit 
um, wenn der Fehler immer noch auftritt, weiß ich, wo ich suchen muß. 
Geht schneller...

Danke XMEGA für den Sourcecode. Werde den mal anschauen, vielleicht 
finde ich noch was.

von hunz (Gast)


Lesenswert?

Hier ist auch noch Beispielcode - zwar für das DOGM163 an 5V via SPI, 
aber ist ja ähnlich: 
https://github.com/znuh/unsorted/blob/master/gm_counter/main.c

von spess53 (Gast)


Lesenswert?

Hi

>Diese 4 Punke sollen wir wohl erraten? Fragen wir die Glaskugel ...

Unterlasse bitte dieses 'wir'. Es gibt hier mit Sicherheit nicht viele, 
die mit dir in einen Topf geworfen werden wollen. Und da Text auf dem 
Display erscheint, ist die Hardware uninteressant. Die funktioniert ja.

>Was könnte ich übersehen haben? Habe mich an den hier zu findenen DOG-M
>Routinen und am Datenblatt des Displays orientiert.

Hast du dir auch das Datenblatt vom Displaycontroller angesehen? Das ist 
maßgebend. Manchmal gibt es da kleine, aber feine Unterschiede zum 
EA-Datenblatt.

Poste mal deinem Code.

MfG Spess

von Armin (Gast)


Lesenswert?

> Hast du dir auch das Datenblatt vom Displaycontroller angesehen? Das ist
> maßgebend. Manchmal gibt es da kleine, aber feine Unterschiede zum
> EA-Datenblatt.

Ja, aber ich schau's mir nochmal durch. Vielleicht ziehe ich dem Display 
nach nem Kommando zu schnell RS/CS weg? Mal ausprobieren.

> Poste mal deinem Code.

Ja, erst noch etwas säubern. Der entstand so nebenbei bei nem Bierchen 
auf'm Balkon :-)

von faustian (Gast)


Lesenswert?

Wie lang ist die Verdrahtung?
Steht ein Oszilloskop zur Verfuegung?
Ist die Stelle immer konsistent gleich falsch?
Ist bekannt dass die Addressluecke bei 44780-artigen Displays mitunter 
an bescheuerten Stellen liegt?

von Armin (Gast)


Lesenswert?

> Wie lang ist die Verdrahtung?

4cm.

> Steht ein Oszilloskop zur Verfuegung?

Mehrere. Sauberes Signal. Ist ja auch ein niedriger SPI-Takt. Wobei der 
SPI-Takt auf das Symptom keine Auswirkungen zu haben scheint.

> Ist die Stelle immer konsistent gleich falsch?

Nein. Der Text wird an der gewollten Stelle ausgegeben, gelegentlich 
wird ein falsches Zeichen dargestellt, entweder im Text oder an einer 
zufälligen Stelle. Vermutlich Timingproblem.

> Ist bekannt dass die Addressluecke bei 44780-artigen Displays mitunter
> an bescheuerten Stellen liegt?

Ja. Das Display funktioniert ja auch soweit, nur tauchen, besonders bei 
schnellem Textwechsel diese Geisterzeichen auf. Ich muß mal noch mit nem 
Delay bei Register Select / Chip Select spielen. Kann sein, dass da der 
16MHz Mega2561 das Display überrennt.

von Armin (Gast)


Angehängte Dateien:

Lesenswert?

Der Source...

von Igor (Gast)


Lesenswert?

#define DOGM_DELAY_S  500
#define DOGM_DELAY_L  5000

  _delay_us(DOGM_DELAY_L);
  SPI_Data(0x06);
  _delay_us(DOGM_DELAY_S);


http://linux.die.net/man/3/_delay_us

void _delay_us (double __us):

...

The maximal possible delay is 768 us / F_CPU in MHz.

Wie wärs mit _delay_ms ?

von Peter D. (pdiener) Benutzerseite


Lesenswert?

>SPCR = (1<<SPE) | (1<<MSTR) | (1<<SPR0);

Der SPI mode ist falsch.

CPHA und CPOL müssen gesetzt sein (mode 3).
Sonst ist der Leerlaufpegel von SCK nicht high, so wie gefordert.

Siehe Seite 47 im Controllerdatenblatt.

Grüße,

Peter

von Peter D. (pdiener) Benutzerseite


Lesenswert?

@Igor:

Das ist zwar unschön, dass _delay_us mit 5000 aufgerufen wird, führt 
aber schlimmstenfalls dazu, dass die Verzögerung länger ist, als 
erwartet.

Siehe: 
http://www.nongnu.org/avr-libc/user-manual/group__util__delay.html

"If the user requests a delay greater than the maximal possible one, 
_delay_us() will automatically call _delay_ms() instead. The user will 
not be informed about this case."

Daran wird es also vermutlich eher nicht liegen. Zudem lässt sich das 
mittels Oszi ja leicht prüfen.

Grüße,

Peter

von Armin (Gast)


Lesenswert?

Peter Diener schrieb:

> Der SPI mode ist falsch.
> CPHA und CPOL müssen gesetzt sein (mode 3).
> Sonst ist der Leerlaufpegel von SCK nicht high, so wie gefordert.
> Siehe Seite 47 im Controllerdatenblatt.

SPI ist wohl nicht SPI, schon wieder was dazu gelernt. Werde das mal 
ändern.

Heißt das auch, daß ich bei mehreren SPI-Slaves ggf. je nach Slave den 
SPI-Mode ändern muß?

Vielen Dank!

von spess53 (Gast)


Lesenswert?

Hi

Unter Umständen, ja.

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.