PG-12864-D will nicht :(

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Also wenn ich den code so anschaue sieht der teil hier für mich komisch aus:

      1. 'Waitms 50
      2. 'Cls
      3. 'Glcdcmd &H3E , 1 : Glcdcmd &H3E , 2 ' both displays off
      4. 'Cls
      5. 'Waitms 10
      6. 'Glcdcmd &H3F , 1 : Glcdcmd &H3F , 2 'both on

      Ganz klar schreibst du laut den Anmerkungen Befehle zum ein/auschalten, nur warum? Ich hab jetzt nicht ins Datenblatt geschaut was die Befehle genau bewirken und vor allem ob sie bei deinem Display nicht was falsches hervorrufen.
      In meinen funktionierenden Programmen brauch ich sowas nicht, die haben alle als Basis ein beispiel aus Stefans Buch.

      Lass doch die zeilen mal weg und probiers nochmal.

      Tobias
    • a_27_b277ca12 ... a_45_132ca9f5
      Und das haste du gesehen, so ganz ohne brille? Ich nimmer.
      An sich muss das Display ja funktionieren, nur hatten die günsten vom Pollin ja immer einen extra Spass faktor dabei. Sonst sind die da nämlich auch nicht so billig.
      Als gegenleistung für die vergessene Brille schick ich dem treadersteller gerne nen 128x64 in Paralell gegen portoersatz zu, allerdings ist die Bauform etwas kleiner. Das funktioniert ,kommt aus bis dato funktionierendem Gerät.

      Tobias
    • Ein Datenblatt hatte ich schon im Eingangsthread mit verlinkt gehabt, zumindest das was ich dazu gefunden hatte.
      Ich habe nun die anderen "LIBs" die Bascom bietet ausprobiert und es werden zum Teil noch mehr Pins vom LCD verlangt welche das LCD nicht bieten kann, wie z.B. "WR" und "FS". Die einzige LIB die von der PINanzahl gut passen würde ist die glcdSED1520.lib da die keinen Reset Pin verlangt.
      tschoeatsch, ich kann dir gerne eins zukommen lassen wenn du dich auch mal daran versuchen willst. Mir gelingt es jedenfalls nicht es zu irgendeiner Anzeige zu bewegen.
    • Noch ne Idee. Es scheint ja eine reset-Logik drauf zu sein. Der Kontroller hat pin 93 als reset-pin. Bist du vielleicht mit deinem Programm zu schnell? Oder die reset-Logik ist zu langsam. Versuch doch mal an pin 93 zu messen, wann der high wird. Oder bau ein wait in dein Programm.
      serdisplib.sourceforge.net/ser/doc/ks0108b.pdf als Zählhilfe :D

      Noch was, idealerweise könnte man das resetSignal vom Lcd an den AVR führen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von tschoeatsch ()

    • Ok, aber von welchem der drei Controller auf der Platine? Es sind drei die Gleichen nehm ich mal an. Ich habe nun von zweien ermittelt wo deren Reset Pins (Pin 93) nun hingehen und im Bild eingezeichnet. Der IC SCI 7661 ist ein DC Wandler und wird vermutlich als Ladungspumpe für die negative Kontrastspannung verwendet. Datenblatt. Vom linken Controller geht Reset direkt auf Pin 13 des LCD also der Betriebsspannung. ???
      Vom rechten Cotroller habe ich noch nicht finden können wo hin der Reset geht, suche aber weiter.....

      Reset Pins.JPG
    • Ich glaube!, es müssen 2 identische und ein weiterer chip sein (von den großen). Die identischen sollten die Kontroller ks0108 sein oder gleichwertig. Wenn nicht pinkompatiben, dann müsste man nochmal suchen.
      Nach meiner Theorie, reset des LCD braucht 'lange', sollte sich ja was verbessern, wenn du beim Stromdraufgeben deiner Gesamtschaltung dem AVR mit einem resetTaster verzögert starten lässt. Also resetTaster des AVR drücken und halten, Spannung auf das Gesamtsystem, bisschen warten und dann den Taster los lassen. In der Wartezeit sollte dann das LCD resettet werden und dann, wenn der AVR startet, bereit für Daten sein.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Ich könnte! mir vorstellen, dass D3 der 'common-driver' ist und D1+D2 die 'segment-driver' sind. Der 'common' wird von den 'segment' angesteuert und braucht vielleicht keinen reset > immer an Vcc. Die 'segment' sollten dann mit ihren resets verbunden sein.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von tschoeatsch ()

    • Mir ist gerade noch aufgefallen, dass du bei deinem Programm den Databereich mit den fonts zumindest nicht gepostet hast. Den hattest du schon mit compiliert? Nicht, das es ohne den zu compilieren war und durch das Fehlen das Programm abgeschmiert ist und dann auch keine Linie und Kreis mehr zeichnen konnte.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hast du die auskommentierten Befehle mal ausführen lassen? Nach deinem Bild mit den roten Linien schaut es für mich so aus, dass die reset-pins einfach auf high gelegt sind, ohne Logik dazwischen. Einen reset kann man laut Db auch per Befehl machen und das wären diese Zeilen code. Evtl noch die 'display start line z' auf 0 setzen, das macht ein hw reset noch.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Was mir jetzt noch nicht klar ist, wird von der lib der reset-pin und dessen Auswirkungn auf den display-controller benötigt, um Daten auf das display zu bringen, oder wird der reset einmalig bedient, um sicher einen Grundzustand zu bekommen. Nach dem Studium des Datenblatts vom KS0108, führt ein reset Befehle aus, die auch als Einzelbefehle über die Schnittstelle gegeben werden können. Wenn jetzt die lib bei einem Beschreiben des displays jedes mal auf diesem Grundzustand nach einem reset auf baut und dafür den pin bedient, ist das natürlich blöd. Aber, man könnte doch mit einem pcint an dem zugewiesenen pin diese reset-Befehle in einer isr ausgeben, oder liege ich damit falsch? Müsste man dazu 2 pins verbinden, um den Ausgang auf einen Eingang zu bringen?
      Wenn ich mir die lib ansehe, verstehe ich nur Bahnhof, könnte auch Bauernhof sein. Hat hier jemand mehr Verständnis, wie die lib so aufgebaut ist und vor allem, was die mit dem resetpin so macht?
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hi @Interner-Fehler, danke für das schöne display ^^ . Ich hab's mir komplizierter vorgestellt, das von dir bekommene display zum Anzeigen zu bringen. An meine AVR-Testplatine angeschlossen, Programm geflasht, geht.
      Ich hab nix gemacht, außer einen 10 Ohm-Vorwiderstand für die Hintergrundbeleuchtung eingebaut (R9).
      Vorwiderstand für Hintergrundbeleuchtung.jpg
      Das Programm ist das:

      BASCOM-Quellcode

      1. '-----------------------------------------------------------------------------------------
      2. ' Info: Programm für KS108 kompatibles LCD mit AT-MEGA168
      3. ' Autor: Thilo Sauer DL9NBJ geändert von tschoeatsch
      4. ' Homepage: www.darc-coburg.de
      5. '-----------------------------------------------------------------------------------------
      6. $regfile = "m168pdef.dat" ' Hier den µController Typ angeben
      7. $crystal = 16000000 ' Takt-Frequenz
      8. $lib "glcdKS108.lib" 'Bibliothek für LCD
      9. Config Graphlcd = 128 * 64sed , Dataport = Portd , Controlport = Portc , Ce = 0 , Ce2 = 1 , Rd = 3 , Cd = 4 , Enable = 5 , Reset = 2
      10. '*** INFO *** pin-Nummer des LCDs
      11. 'CE =CSA pin 17 Chip select
      12. 'CE2=CSB pin 18 Chip select second chip
      13. 'CD=Data/instruction pin 11
      14. 'RD=Read pin 10
      15. 'RESET = reset kein pin vorhanden
      16. 'ENABLE= Chip Enable pin 9
      17. Initlcd
      18. Do
      19. Cls 'LCD Inhalt löschen
      20. '*** TEXT ***
      21. Cls
      22. Setfont Font8x8
      23. Lcdat 1 , 1 , "PG12864LRS-DNN-H" , 1
      24. Setfont Font8x8
      25. Lcdat 4 , 1 , "Graphic LCD"
      26. Wait 1
      27. Lcdat 5 , 1 , "128x64 Pixel"
      28. Wait 1
      29. Lcdat 6 , 1 , "KS108 Controller"
      30. Wait 1
      31. Lcdat 8 , 1 , "+Ub = 5 VOLT "
      32. Wait 3
      33. '*** Linie ***
      34. Cls
      35. Wait 1
      36. Line(0 , 0) -(127 , 0) , 1
      37. Line(127 , 0) -(127 , 63) , 1
      38. Line(127 , 63) -(0 , 63) , 1
      39. Line(0 , 63) -(0 , 0) , 1
      40. Line(0 , 0) -(127 , 63) , 1
      41. Line(0 , 63) -(127 , 0) , 1
      42. Wait 2
      43. '*** Kreis ***
      44. Cls
      45. Circle(63 , 31) , 30 , 1
      46. Wait 2
      47. Loop 'springe nach DO
      48. End
      49. '$include "smallfont8x8.font" ' nur Zahlen
      50. $include "font8x8.font" ' kleine Schrift
      51. '$include "font8x8TT.font"
      52. $include "font16x16.font"
      Alles anzeigen
      wobei das initlcd nicht gebraucht wird, oder was verändert. Das Filmchen ist übrigens mit 1 MHz Takt aufgenommen (extra probiert), deswegen der etwas langsame Grafikaufbau.


      ich vermute daher einen technischen Defekt bei deinem Versuchsmuster. Die Lötstellen an den chips sind auch nicht alle sehr sauber, vielleicht hat es durch den Transport wieder eine Brücke gegeben, die bei der Fertigungskontrolle mal beseitigt wurde. Auf meinem display gibt es einen Popel zwischen 2 pins, der sichtbar weggekratzt wurde.
      Popel mit Kratzspuren.jpgUnsaubere Lötstellen.jpg
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von tschoeatsch ()