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?
Hallo, sieht nach Überspechen der Segmentleitungen aus und zeigt sich oft bei solchen 0-1-Mustern wenn der Kontrast zu hoch eingestellt ist. Sascha
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.
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
Hallo, die Segmentleitungen befinden sich auf dem Glas im Inneren des Displays. Mit freundlichem Gruß
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.
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.
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
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...
Und was passiert, wenn du bei einem Display das diesen Effekt nicht zeigt den Kontrast hochdrehst (absichtlich leicht übersteuerst)? ... und mal den Breakpoint einbauen ... Ralph
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.
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.
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.
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.
Stimmt deine Betriebsspannung? Olaf
Olaf schrieb: > Stimmt deine Betriebsspannung? Müsste stimmen, habe in der Display-Initialisierung 5V eingestellt, und tatsächlich verwende ich auch 5V.
Hi
>Müsste stimmen, habe in der Display-Initialisierung 5V eingestellt, ...
Wie sieht denn deine Initialisierung genau aus?
MfG Spess
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 }
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
Sascha W. schrieb: > siehst du mit noch weniger dann nichts mehr? Ich seh schon noch was, aber es sieht dann nicht mehr gut aus.
Stefan schrieb: > Die Erste Zeile muss an dieser Stelle leider leer bleiben. Schon mal versucht mit Leerzeichen aufzufüllen?
Hubert G. schrieb: > Schon mal versucht mit Leerzeichen aufzufüllen? Ja habe ich, bringt leider keine Besserung.
Sascha W. schrieb: > Wenn ich mich recht erinnere war doch der Kontrast über 2 Register > einzustellen! Ich habe noch ein wenig gegoogelt, da ist es auch nur mit einem Register verwirklicht.
Dit sieht wirklich komisch aus. Was ist das denn für eine Type? Und welche von Dir getesteten Typen zeigen das Verhalten nicht?
Stefan schrieb: > Sascha W. schrieb: >> Wenn ich mich recht erinnere war doch der Kontrast über 2 Register >> einzustellen! > > Ich habe noch ein wenig gegoogelt, da ist es auch nur mit einem Register > verwirklicht. zeig doch mal deinen Code zur Initialisierung. Du hast das Display mit 8-Bit angeschlossen? Sascha
Es handelt sich um das DOG-M 162, die anderen Display waren vom selben Typ. Aber weil das Problem immer wieder mal auftaucht, kann's auch kein Defekt sein.
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 ...
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.
Stefan schrieb: > BIAS, PWR und FOLLOW sind ja im Code schon drin und definiert, in > Abhängigkeit von der Spannung. O.K. - übersehen - sorry ..
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).
Stefan schrieb: > Es handelt sich um das DOG-M 162 Ja aber was für eines? Sieht aus wie ein w-a, die sind bekannt für Kontrastprobleme, deswegen nehm ich lieber die grünen, auch wenns nicht so hip ist. Hast Du wahrscheinlich einfach eine schlechte Charge erwischt...
@Stefan, 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. Sascha
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.
Timm T. schrieb: > Ja aber was für eines? Sieht aus wie ein w-a, die sind bekannt für > Kontrastprobleme, deswegen nehm ich lieber die grünen, auch wenns nicht > so hip ist. Ich habe das weiße in Verwendung.
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.
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.
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.
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.
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?
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.
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.
:
Bearbeitet durch User
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
Nein, passen nicht - sind für einen quadratischen Pin mit 0,64mm Kantenlänge gemacht (siehe Datenblatt). Da machen die Pins von Display keinen ordentlichen Kontakt.
Hi 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 geht genau so gut. MfG Spess
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"
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.