Dog-M Display füllt weitere Zeile mit selbst kreierten Zeichen

Gast #4798981
Lesenswert?

Hallo zusammen,

ich habe ein Problem mit einer Skalenanzeige eines DOG-M Displays. Zur 
Anzeige eines Sensorwerts soll in der 2.Zeile eben eine Skala 
eingerichtet angezeigt werden.

Ich erzeuge dafür eine eigenes Zeichen mit folgender Funktion (ich weiß, 
das würde auch eleganter gehen):

void set_character_DOGM162 (uint8_t characterNumber, uint8_t data0, 
uint8_t data1, uint8_t data2, uint8_t data3, uint8_t data4, uint8_t 
data5, uint8_t data6, uint8_t data7)
{
  Disp_Command (0x38);
  Disp_Command (0x40+(characterNumber<<3));
  Disp_Char(data0); //Pixel die gesetzt werden sollen
  Disp_Char(data1);
  Disp_Char(data2);
  Disp_Char(data3);
  Disp_Char(data4);
  Disp_Char(data5);
  Disp_Char(data6);
  Disp_Char(data7);

  Disp_Command (0x39); // Instruction Set Tabelle 1

}

Im Hauptprogramm frage ich es dann folgenermaßen ab:

if (Leitwert != 0)
  {

    Disp_Command(0x80 + 0x40);  // Cursor auf 2. Zeile, Spalte 1

    Skala = round(Leitwert/3.875); //3.75

    if (Skala > 16)
    {
      Skala = 16;
    }

       for (i=0; i<Skala ; i++)
      {
          Disp_Char(5);
      }

    ...

  }

Das Problem ist, dass es, manchmal zu einen eigenartiges Effekt kommt. 
Und zwar wird, wenn die Skala weiter ausschlägt, die erste Zeile mit 
befüllt, allerdings nicht richtig, sondern nur mit minimalen Kontrast, 
siehe auch Bild anbei. Setze ich anstatt des eigenen Zeichens ein 
Standard-Zeichen, erscheint in der ersten Zeile nichts, auch bei 
größeren Ausschlägen.

Hat jmd. ne Ahnung, welcher Effekt das sein könnte?
Angehängte Dateien:
Gast #4799291
Lesenswert?

Danke für die Antwort. Müsste ich das Layout dann anpassen, um das 
Übersprechen der Segmentleitungen zu verhindern? Wenn die Skala nur zur 
Hälfte ausschlägt, dann sieht man nichts in der oberen Zeile.
#4799303
Lesenswert?

Stefan schrieb:
> Danke für die Antwort. Müsste ich das Layout dann anpassen, um das
> Übersprechen der Segmentleitungen zu verhindern?
Du sprichst von den Datenleitungen, die Segmentleitungen verlaufen ja 
nur auf dem Display - zwischen dessen Controller und LCD.
> Wenn die Skala nur zur
> Hälfte ausschlägt, dann sieht man nichts in der oberen Zeile.
Da kannst du nicht viel machen außer der Kontrast zu verringern, lass 
mal in der 1. Zeile was anzeigen dann fällt es weniger auf.


Sascha
Gast #4799825
Lesenswert?

Sascha W. schrieb:
> Da kannst du nicht viel machen außer der Kontrast zu verringern, lass
> mal in der 1. Zeile was anzeigen dann fällt es weniger auf.

Ich habe den Kontrast kleiner gemacht, tatsächlich zeigt sich der Effekt 
nun weniger. Gegen das Übersprechen der Segmentleitungen kann man 
mittels eingefügter Bauteile oder per Software nichts machen?

Es ist schon eigenartig, dass sich dieser Effekt bei unterschiedlichen 
Display-Inidviduen mal zeigt, mal nicht.
(Firma: ELECTRONIC ASSEMBLY GmbH) #4801092
Lesenswert?

Hallo Stefan,

diese kontrastarme, graue Darstellung ist nicht normal für die EA DOG 
Displays. Es sieht so aus, als würden in der 1. Zeile andere, 
selbstdefinierte Zeichen stehen, die aber dort immer wieder gelöscht 
oder durch Leerzeichen überschrieben werden.

Auch der extrem schwach sichtbsre Cursor (oder ein selbstdefinierter 
Block) am Ende der 1.Zeile ist merkwürdig.

Halte dein Programm doch mal an (Breakpoint) und schau was dann auf dem 
Display steht.

Ralph
Gast #4801104
Lesenswert?

Es ist eben eigenartig, dass es bei Ersatzdisplay, die ich einbaue nicht 
zu diesem Effekt kommt. Manchmal, meistens direkt nach dem flashen einer 
neue Firmware gibt es keine Probleme, dann nach einen Neustarts des 
Systems taucht es wieder auf und geht nicht mehr weg. An der Sowftware 
kann es doch auch nicht liegen, sonst würde es ja auf allen Displays 
nicht funktionieren. Ein Einzeldefekt kann es aber auch nicht sein, da 
ich das Problem schon bei mehreren neuen Displays hatte.
Ich bin wirklich ratlos...
Gast #4801128
Lesenswert?

Ralph T. schrieb:
> ... und mal den Breakpoint einbauen ...

ich leider aktuell keine Möglichkeit für einen Hardware-Debug, oder wie 
könnte man das sonst durchführen?

Ralph T. schrieb:
> Und was passiert, wenn du bei einem Display das diesen Effekt nicht
> zeigt den Kontrast hochdrehst (absichtlich leicht übersteuerst)?

Dann wird alles einfach nur dunkler, und der Effekt noch stärker 
sichtbar.
Gast #4801146
Lesenswert?

Stefan schrieb:
> ich leider aktuell keine Möglichkeit für einen Hardware-Debug, oder wie
> könnte man das sonst durchführen?

Indem Du anstelle eines Breakpoints im Code da eine Endlosschleife setzt 
und auch Interrupts deaktivierst. Watchdog muß dann natürlich auch 
abgeschaltet sein.
Gast #4801175
Lesenswert?

Nop schrieb:
> Indem Du anstelle eines Breakpoints im Code da eine Endlosschleife setzt
> und auch Interrupts deaktivierst. Watchdog muß dann natürlich auch
> abgeschaltet sein.

Danke für den Hinweis, ich hab's folgenermaßen verwirklicht:

for (i=0; i<Skala ; i++)
      {
          Disp_Char(5);

        if (i==12)
        {while(1){};}
      }

In der oberen Zeile erscheinen leider auch die Zeichen in den gleichen 
Spalten als in der unteren Zeile.
Gast #4801237
Lesenswert?

Ich habe das selbstkreierte Zeichen jetzt noch angepasst, um den 
Kontrast innerhalb einer Zelle zu reduzieren.
Allerdings ist das auch keine Lösung, da in der oberen Zeile wieder ein 
Schatten entsteht. Der Kontrast ist auch schon auf fast niedrigster 
Stufe.
Lässt sich dieser Effekt auch nicht verhindern?
Die Erste Zeile muss an dieser Stelle leider leer bleiben.
Angehängte Dateien:
Gast #4801328
Lesenswert?

spess53 schrieb:
> Wie sieht denn deine Initialisierung genau aus?

// Veränderliche Variablen
//*******************************************
#define F_CPU    8000000UL  //Clockspeed in Hz
#define DDR_SPI  DDRB  // DD-Register des SPI-Ports
#define DD_MOSI  DDB3  // Port/Pin des MOSI
#define DD_SCK   DDB5  // Port/Pin des SCK
#define DD_RS    DDRB  // DDR von RS
#define PORT_RS  PORTB // Port an dem RS ist
#define PIN_RS   PB1   // Pin an dem RS ist
#define DD_CSB   DDRB  // DDR von CSB
#define PORT_CSB PORTB // Port an dem CSB ist
#define PIN_CSB  PB0   // Pin an dem CSB ist
#define VOLTAGE  5     // Voltage auf 5 oder 3 Volt
#define CONTRAST 0x75  // Von 0x73 bis 0x7F Hexadezimal >>74
//*******************************************

void InitDisp(void)
{
  PORT_RS &= ~(1 << PIN_RS); //low

  _delay_ms(300);

  int BIAS,PWR,FOLLOW;

  if (VOLTAGE == 5)
    {
     BIAS = 0x1c;
     PWR  = 0x51;
     FOLLOW = 0x6a;
    }
  else
    {
     BIAS = 0x14;
     PWR  = 0x55;
     FOLLOW = 0x6d;
    }


  Disp_Command(0x39); // Function Set ; 8 Bit; 1Zeile, Istr.Tab 1 0x31


  Disp_Command(BIAS); // Bias Set


  Disp_Command(PWR);  // Power Control


  Disp_Command(FOLLOW); // Follower Control


  Disp_Command(CONTRAST); // Kontrast setzten


  Disp_Command(0x38); // Instruction Table 0 setzten 0x30


  Disp_Command(0x0c); // Display ein, kein Cursor, kein Blinken

  Disp_Command(0x01); // Disoplay löschen
  _delay_ms(50);      // Auf Display warten
  Disp_Command(0x06); // Entry Mode set - Display wartet auf Eingabe
  _delay_ms(25);      // Auf Display warten


}
#4801334
Lesenswert?

Stefan schrieb:
> Ich habe das selbstkreierte Zeichen jetzt noch angepasst, um den
> Kontrast innerhalb einer Zelle zu reduzieren.
> Allerdings ist das auch keine Lösung, da in der oberen Zeile wieder ein
> Schatten entsteht. Der Kontrast ist auch schon auf fast niedrigster
> Stufe.
siehst du mit noch weniger dann nichts mehr?
Wenn ich mich recht erinnere war doch der Kontrast über 2 Register 
einzustellen!

Sascha
Gast #4801483
Lesenswert?

Stefan schrieb:
> Disp_Command(0x39); // Function Set ; 8 Bit; 1Zeile, Istr.Tab 1 0x31
>   Disp_Command(BIAS); // Bias Set
>   Disp_Command(PWR);  // Power Control
>   Disp_Command(FOLLOW); // Follower Control
>   Disp_Command(CONTRAST); // Kontrast setzten
>   Disp_Command(0x38); // Instruction Table 0 setzten 0x30
>   Disp_Command(0x0c); // Display ein, kein Cursor, kein Blinken
>   Disp_Command(0x01); // Disoplay löschen
>   _delay_ms(50);      // Auf Display warten
>   Disp_Command(0x06); // Entry Mode set - Display wartet auf Eingabe
>   _delay_ms(25);      // Auf Display warten

BIAS ist wo definiert?
PWR ist wo definiert?
FOLLOW ist wo definiert?

Spess53 hat Dich nach der Initialisierung gefragt oder? Warum rückst Du 
nicht komplett damit heraus?

Ich denke, es geht ihm um den Unterschied zwischen der 3,3V und der 5V 
Initialisierung ...
Gast #4801491
Lesenswert?

Stefan schrieb:
> int BIAS,PWR,FOLLOW;
>
>   if (VOLTAGE == 5)
>     {
>      BIAS = 0x1c;
>      PWR  = 0x51;
>      FOLLOW = 0x6a;
>     }
>   else
>     {
>      BIAS = 0x14;
>      PWR  = 0x55;
>      FOLLOW = 0x6d;
>     }

Dieter F. schrieb:
> Spess53 hat Dich nach der Initialisierung gefragt oder? Warum rückst Du
> nicht komplett damit heraus?

BIAS, PWR und FOLLOW sind ja im Code schon drin und definiert, in 
Abhängigkeit von der Spannung.
Gast #4801519
Lesenswert?

Es ist natürlich an sich nicht unvernünftig gewisse mögliche Ursachen 
auszuschliessen. Aber es ist auch vernünftig sich klarzumachen, auf 
welchen Annahmen diese Schlussfolgerungen beruhen und sie zu verwerfen, 
wenn es nötig wird. Das wird dann nötig, wenn nach Ausschluss alles 
Unmöglichen nichts mehr übrig bleibt. (Arthur Conan Doyle lässt grüssen 
und den Spruch "Nichts ist trügerischer, als eine offensichtliche 
Tatsache" finde ich auch sinnig).


Also mal ganz von vorne und sieh bitte erst einmal von Einwänden gegen 
die Fragen ab. Wenn hier jemand absoluten Unsinn von Dir verlangt, gibt 
es ohnehin einen kollektiven Aufschrei:

1. Schaltplan inklusive Stromversorgung
2. Foto vom Aufbau
3. Vollständiger Programmcode (der das Problem zeigt) (Ggf. nicht 
notwendige Teile entfernen (Anwendung) aber das Ergebnis muss 
compilierbar und lauffähig sein).

Schön wären:
Link auf das Datenblatt vom Display.
Und da Du verschiedene Displays hast von denen einige gehen und andere 
nicht, noch Informationen über die Charge (ggf. Fotos von je einem 
Display das geht und das nicht geht, von allen Seiten - mindestens alles 
was Text oder Zahlen sind).
Gast #4802587
Lesenswert?

Sascha W. schrieb:
> in meinem Datenblatt steht für die Follower Settings 0x69 (5V) + 0x6D
> (3.3V).
> Das kannst du mal noch probieren, die Einstellung beeinflusst die
> Bereitellung der verschiedenen LED-Spannungen.

Das ändern auf 0x69 setzt bei nur den Kontrast deutlich nach unten, ich 
muss dann in den Kontrat-Einstellungen auf max. gehen, damit dsa Display 
gut aussieht. Der Effekt ist immer noch da.
(Firma: ELECTRONIC ASSEMBLY GmbH) #4803168
Lesenswert?

Stefan,
ich möchte nochmal auf die Hardware eigehen:
(1) "..verschiedene Displays, manche gehen, manche nicht" verwendest du 
dabei immer die gleiche Ansteuer-Elektronik? Evtl. sogar das gleiche 
Board?
(2) sind die Displays gesockelt oder eingelötet?
(3) kannst du den Schaltplan posten ?
(4) versorgst du das Disoplay mit 3,3V oder 5V?
(4) welche Spannungen misst du an den Pins 26-27 (bitte direkt am 
Display oben messen).
(5) welche Spannung zwischen den Pins 24 und 27?

Ralph.
Gast #4803213
Lesenswert?

Ralph T. schrieb:
> (1) "..verschiedene Displays, manche gehen, manche nicht" verwendest du
> dabei immer die gleiche Ansteuer-Elektronik? Evtl. sogar das gleiche
> Board?

Es handelt sich dabei immer um die selbe Ansteuerelektronik. Das Board 
ist dabei unterschiedlich, der Effekt kommt aber immer wieder vor. Es 
ist gut möglich, dass es sich auch um einen Fehler in der 
Ansteuerelektronik handelt.

(2) sind die Displays gesockelt oder eingelötet?

Prinzipiell gesockelt, und in der Tat habe ich schon öfter festgestellt, 
dass hier die Kontaktierung nicht so zuverlässig ist. Bei eingelöteten 
Displays tritt das Problem aber auch auf.

Ralph T. schrieb:
> (3) kannst du den Schaltplan posten ?

Schaltplan anbei

Ralph T. schrieb:
> (4) versorgst du das Disoplay mit 3,3V oder 5V?

5V

Ralph T. schrieb:
> (4) welche Spannungen misst du an den Pins 26-27 (bitte direkt am
> Display oben messen).
> (5) welche Spannung zwischen den Pins 24 und 27?

Kann ich leider erst später messen, die Werte liefere ich nach.
Angehängte Dateien:
(Firma: matzetronics) #4803284
Lesenswert?

Mir erschliesst sich im Moment nicht, wofür du einen 1k Widerstand in 
MOSI hast. Dem Display macht die Programmiererei über ISP nichts aus, es 
zeigt höchstens ein wenig Müll an, aber die Flanken werden dabei nicht 
besser, zumal SCL solch einen Widerstand nicht hat.
Mein Vorschlag wäre, den 1k durch eine Brücke zu ersetzen, oder in beide 
Leitungen zum Display einen gleich grossen Widerstand zu setzen. Das 
können aber auch 100 Ohm oder so sein - nötig sind sie nicht, da MOSI am 
DOGM nie zum Ausgang wird.
(Firma: ELECTRONIC ASSEMBLY GmbH) #4803314
Lesenswert?

Da die Pins des Displays sehr dünn sind (0,5x0,3mm), sind "normale" 
Buchsenleisten nicht geeignet (0,64x0,64mm). Gut passen IC-Sockel, die 
gibt es auch 1-reihig. Bekannt als "Präzisionssockel" oder "gedrehte 
Sockel".

Könnte nämlich sein dass das Display zwar scheinbar läuft, sich aber 
fremdversorgt. da passieren manchmal merkwürdige Dinge und für die 
fremdversorgenden Ein-/Ausgänge ist es langfristig ungesund.
Angehängte Dateien:
Gast #4803383
Lesenswert?

Ralph T. schrieb:
> Könnte nämlich sein dass das Display zwar scheinbar läuft, sich aber
> fremdversorgt. da passieren manchmal merkwürdige Dinge und für die
> fremdversorgenden Ein-/Ausgänge ist es langfristig ungesund.

Was ist mit fremdversorgt gemeint?
Das nicht alle Pins, die an 5V dran sein müssten, auch wirklich 
verbunden sind?
#4803391
Lesenswert?

Stefan schrieb:
> Ok, Danke für den Hinweis. Interessant ist es eben auch, das es nicht
> immer auftritt, und bei einem neuen Display es teils gar nicht auftritt.

Ralph T. schrieb:
> Könnte nämlich sein dass das Display zwar scheinbar läuft, sich aber
> fremdversorgt.

wenn das Erste nicht defekt ist scheint das Zweite unempfindlicher 
gegen Störung zu sein.

Ich tippe auf ungenügende Stromversorgung oder klaren 
Anschaltungsfehler.

EA DOG hatte ich auch mal, sind die VCC wirklich nah und genug gepuffert 
bzw. mit Abblockkondensatoren versorgt.
#4803492
Lesenswert?

Stefan schrieb:
> Was meinst du mit Anschaltungsfehler?

na was wohl, nicht die richtige VCC / GND erwischt, nicht alle, 
schlechte Kabel Lötverbindung usw.

oder sowas

Ralph T. schrieb:
> Da die Pins des Displays sehr dünn sind (0,5x0,3mm), sind "normale"
> Buchsenleisten nicht geeignet (0,64x0,64mm). Gut passen IC-Sockel, die
> gibt es auch 1-reihig. Bekannt als "Präzisionssockel" oder "gedrehte
> Sockel".

Die habe ich bei meinen EA DOG Versuchen genutzt und hatte nie Probleme, 
das jemand anderes benutzt muss ich erst mal realisieren.
Gast #4803495
Lesenswert?

Ralph T. schrieb:
> Da die Pins des Displays sehr dünn sind (0,5x0,3mm), sind "normale"
> Buchsenleisten nicht geeignet (0,64x0,64mm). Gut passen IC-Sockel, die
> gibt es auch 1-reihig. Bekannt als "Präzisionssockel" oder "gedrehte
> Sockel".

Wären diese hier auch geeignet?
Der Lochdurchmesser beträgt hier allerdings 0,7mm. Die sind aber auch 
"gedreht".

http://cdn-reichelt.de/documents/datenblatt/C140/DS_MPE_115.pdf
#4803532
Lesenswert?

spess53 schrieb:
> Eine durchgesägte IC-Fassung, wie

man kann auch keine Säge, sondern Cutter oder Seitenschneider nutzen

spess53 schrieb:
> Eine durchgesägte IC-Fassung, wie
>
> 
https://www.reichelt.de/IC-Sockel/GS-40/3/index.html?ACTION=3&LA=2&ARTICLE=8224&GROUPID=7429&artnr=GS+40&SEARCH=%252A

da hast du nun grad die billigste gezeigt, diese meide ich wo ich kann 
ich muss bei Sockel und Kotakte nicht sparen um jeden Preis!

spess53 schrieb:
> geht genau so gut.

eben nur bedingt, besser aus diesem Sortiment

https://www.reichelt.de/IC-Sockel/2/index.html?ACTION=2&LA=3&GROUP=C131&GROUPID=7429&START=0&OFFSET=16&SHOW=1;SID=92V9lQzawQATIAADm9fjIe499cd383e78e77a07573be671f12e25

wenns schon nicht wie oben gezeigt sein soll:
Beitrag "Re: Dog-M Display füllt weitere Zeile mit selbst kreierten Zeichen"
Gast #4803565
Lesenswert?

Hi

>da hast du nun grad die billigste gezeigt, diese meide ich wo ich kann
>ich muss bei Sockel und Kotakte nicht sparen um jeden Preis!

Na und? Ich habe damit schon etliche DOG-Displays kontaktiert. Für meine 
Display-Testplatinen habe nur solche Fassungen in Einsatz. Und die 
Fassungen dieses Typs auf meinem STK500 sind nach 15jährigem Gebrauch 
immer noch so fest, das ich ich die ICs aushebeln muss. Die mit den 
gedrehten hätte ich in der Zeit mindestens 2..3 mal wegen ausgeleierter 
Kontakte wechseln müssen.

MfG Spess
#4803571
Lesenswert?

spess53 schrieb:
> Und die
> Fassungen dieses Typs auf meinem STK500 sind nach 15jährigem Gebrauch

vielleicht gibt es dort unterschiedliche Qualitäten, ich habe mir diese 
Nutzung dieser Kontakte vor über 30 Jahren abgewöhnt, sie sind einfach 
auch mal gammelig geworden, vielleicht nicht wenn man die Erstbestückung 
nie wieder anfässt, vielleicht bei optimaler Lagerung und Betrieb, aber 
bei mir sind diese zur Fehlerquelle gewiorden, jedenfalls dieser Typ.
Mag sein das es unterschiedliche Qualitäten gibt die ich aber mit dem 
Auge nicht sehe, deswegen nein für mich.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren