mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik dogm128 stürzt ab


Autor: Rudolph R. (rudolph)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe ein merkwürdiges Problem mit einem DOGM-128 Grafik-Display.

Die Initialisierung klappt, Controller ist ein 90CAN32 auf 16 MHz, der 
SPI läuft auf 4 MHz, der Controller auf 5V, das Display auf 3V.
Optimiert ist auf -O2.

/CS und /Reset werden über Transistoren angesteuert mit 
Pullup-Widerständen - also invertiert in der Software, SI, SCLK und A0 
sind über Spannungs-Teiler angeschlossen.

Hier mal der aufs Minimum reduzierte Test-Code.

---
 while(1)
 {
  PORTA |= (1<<PORTA0);              // select display

  for(display_page = 0; display_page < 8; display_page++)
  {
   PORTA &= ~(1<<PORTA2);           // Command, A0 Low

   SPDR = (0xB0 | display_page);    // Set page address to <page>
   while(!(SPSR & (1<<SPIF)));      // Wait for transmission complete
   SPDR = 0x10;                     // Set column address to 0 (4 MSBs)
   while(!(SPSR & (1<<SPIF)));      // Wait for transmission complete
   SPDR = 0x00;                     // Set column address to 0 (4 LSBs)
   while(!(SPSR & (1<<SPIF)));      // Wait for transmission complete

   display_var = (uint16_t)display_page * 128;
   PORTA |= (1<<PORTA2);            // Write Data, A0 High

   for(display_counter = 0; display_counter < 128; display_counter++)
   {
    SPDR = display_ram[display_var | display_counter];
    while(!(SPSR & (1<<SPIF)));     // Wait for transmission complete
   }
  }

  PORTA &= ~(1<<PORTA0);            // de-select display
  _delay_us(10);
 }
---

Pro Durchlauf wird der Inhalt eines 1KB grossen Puffers an das Display 
gesendet, dieser Puffer wurde vorher mit einem Bild gefüllt.

So wie das da steht läuft das gerade seit etwa >10 Minuten ohne Absturz, 
ab und zu flackert mal eine Spalte des Displays.

Jetzt das "Problem".
Wenn ich das "_delay_us(10)" rausnehme oder gar das Display dauerhaft 
aktiviere, stürzt das Display nach wenigen Sekunden ab.
Quasi unmittelbar beginnt eine der Spalten zu flackern und kurze Zeit 
später geht das Display ganz aus.

Zugegeben, der Code macht so keinen Sinn, eigentlich habe ich das 
Problem auch überhaupt nicht, da ich das Display in 32 Byte Häpchen 
bediene.

Nur bin ich aber neugierig und wüsste schon gerne, woran das liegen 
könnte.

Das Datenblatt von dem Display ist ja nun denkbar dünn.

****
Und in dem Datenblatt von dem Display-Controller habe ich auf dieses 
Verhalten auch keinerlei Hinweis gefunden.

Da steht nur drin das empfohlen wird das Setup in regelmässigen 
Abständen zu wiederholen für den Fall, dass das Teil durch eine 
verrauschte Umgebung gestört werden könnte.

Aber über das Timing eines einzelnen Zugriffs hinaus gibt es ja 
keinerlei Angaben.
****

Habe ich was übersehen? Braucht das Display Zeit um sein DRAM zu 
refreshen?
Oder spinnt das Ding einfach nur?

Ach so, ein zweiter identischer Aufbau hat das Problem auch.

Edit: Hinweis auf Datenblatt vom Display-Controller hervorgehoben...

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Hol dir doch einfach mal das Datenblatt vom Controller (lcd-module.de).
Da sollte mehr dirn stehen.

MfG Spess

Autor: Rudolph R. (rudolph)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das st7565r.pdf lässt sich über das Verhalten nicht aus.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>for(display_page = 0; display_page < 8; display_page++)

Das Display hat aber nur Page0...Page7.

>for(display_counter = 0; display_counter < 128; display_counter++)

Und auch nur Column0...Column127.

Falls ich das mangelnder C-Kenntnisse falsch interprtiert habe, 
Entschuldigung.

MfG Spess

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

naja, selbst ohne C ist < 8 max. 7 und < 128 max. 127... ;-))

Gruß aus Berlin
Michael

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das Display hat aber nur Page0...Page7.
Die for-Schleife bricht nach 7 ab. Also kein Problem.

Autor: Rudolph R. (rudolph)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
spess53 wrote:
>>for(display_page = 0; display_page < 8; display_page++)
>
> Das Display hat aber nur Page0...Page7.
>
>>for(display_counter = 0; display_counter < 128; display_counter++)
>
> Und auch nur Column0...Column127.
>
> Falls ich das mangelnder C-Kenntnisse falsch interprtiert habe,
> Entschuldigung.

Es läuft solange wie der Wert kleiner ist, das stimmt schon so.

Und das Display hat eine Seite 8 für Symbole, die Spalten gehen intern 
bis 132, ein Überlauf würde also nur zu einer falschen Anzeige führen.

Das würde ich wiederrum sofort an dem Bild sehen.

Es läuft jetzt bald eine Stunde so wie oben, die kleine Pause wird 
gebraucht, nur warum möchte ich wissen.

Autor: Tobias B. (roxxity)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab auch nen komischen Effekt. Beim Schreiben eines bestimmten 
Pixels besteht die Chance, dass sich das Display verabschiedet (wird 
weiß), und sich auch nicht wieder durch Initialisierung zum Leben 
erwecken lässt

Dazu kommt, dass der Booster spinnt...

Dadurch, dass das Ding bereits mit ner Beleuchtung verlötet ist, kann 
ich mir einen Umtausch wohl auch schenken -.-

Autor: Tobias B. (roxxity)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, Fehlinformation. Er scheint das nur zu machen, wenn ich SPI mit 10 
MHz bzw. f/2 betreibe.
Im Datenblatt steht, dass 20 MHz möglich wären...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.