mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik EA DOG-M162 Curserposition jedes X0 mal an falscher Stelle?


Autor: Basti M. (counterfeiter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab ein kleines Problem mit dem oben genannten LCD Display... es 
funktioniert erstmal alles... sogar die Curserposition... aber spradisch 
eben nicht... Ich betreibe das Display mit SPI (1MHZ) und erstmal mit 
20cm Flachbandkabel... obwohl ich dachte, es könnte zu Problemen kommen, 
war noch kein falsches Zeichen dabei... deswegen schließe ich auch aus, 
dass ein Übertragungsfehler bei der Curserposition entsteht... 
jedenfalls würde ich das sehr merkwürdig finden...
Außerdem kann man beobachten das die untere Zeile immer an die selben 
zwei Stellen des Displays falsch springt...
Manchmal ist es öfter, manchmal gar nicht... kann mir das nicht 
erklären...

Hab mit zusätzlichen Delayzeiten versucht, aber keine Besserung...

Ich hoffe es hatte schonmal jemand das selbe Problem... hier mal etwas 
Code...
        clear_home();
  fprintf(stderr, "Umin:     %5.2fV",(float)Spannung_Min*(*SU));
  set_cursor(40); //auf neue Zeile springen
  fprintf(stderr, "Imax:     %5.1fA",(float)Strom_Max*(*SI));

hier springt das Imax manchmal auf Umin oder auch auf Position 48...

hier die wichtigen funktionen:
void set_cursor (unsigned char pos)  // Cursor an Position setzen
  {
    CONTROLPORT &= ~_BV(CTRL_RS);
    SPDR = 128+pos;  
                
    _delay_ms(0.2);  
    ctoggle_RS ();
  }  

void clear_home (void)  // Display löschen, Cursor an Position home setzen
  {
    CONTROLPORT &= ~_BV(CTRL_RS);
    SPDR = 0b00000001;  
    _delay_ms(1.2);
    ctoggle_RS ();
  }


mfg basti

Autor: Tino Kühn (blumengiesser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
poste doch mal deine initialisierung.

Autor: Tino Kühn (blumengiesser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe deinen code nochmal gelesen. also dein display heißt DOG-M162, 
das bedeutet 16 zeichen / Zeile mit 2 Zeilen. Sprich du hast maximal 32 
Positionen. Du springst aber auf Pos 40, das ist dann wohl falsch, oder?

Ich mach das so:

#define CHARACTER_BUFFER_BASE_ADDRESS 128
#define CHARACTERS_PER_ROW 16

void set_cursor_DOGM163 (char row, char column)
{
    write_instruction_DOGM163 (CHARACTER_BUFFER_BASE_ADDRESS + row * 
CHARACTERS_PER_ROW + column);
}

und das funzt. Gib mal rückmeldung
Tino

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

> set_cursor(40); //auf neue Zeile springen

Die 2.Zeile beginn auf 0x40 .

MfG Spess

Autor: Tino Kühn (blumengiesser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genau, 0x40 oder 64. in deiner funktion wird 40 zu 128 dazuaddiert, das 
ist dann aber A8 und das gibs net...

Autor: Basti M. (counterfeiter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahh, ihr habt recht...

0x40 muss ich der Funktion übergeben...

Hatte keine Infos über die Position der nächsten Zeile im Datenblatt 
gefunden. Habs dann durch probieren herrausgefunden... oder eben auch 
nicht...
Aber schon blöd wenns dann zu 98% funktioniert und man nicht mehr dran 
glaubt das die Position evtl. doch falsch sein könnte...

Ich danke euch

mfg basti

Autor: Counterfeiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die 128 ist nur die 1 im msb die man angeben muss um zu sagen das man 
jetzt in den ddram schreibt... Also das passt soweit...

Funktioniert also nun alles bestens... Toller display mal sehen wie er 
mit den extremen temperaturen im kfz klar kommt....

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Hatte keine Infos über die Position der nächsten Zeile im Datenblatt
>gefunden.

Steht aber im Datenblatt. Vom ST7036.

MfG Spess

Autor: Tino Kühn (blumengiesser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
seite 19

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.