Led Display UC1609 19264-05 V3.2

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

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Pluto25 schrieb:

      Dafür gibts ja das "*BASIC:"
      Das bedeutet nicht, dass man dann in Basic unbedingt programmieren kann. Sondern deutet auf den Skope vom Basic-Editor.
      Teilweise gehen dann auch Befehle wie Set PortB.1 und sowas in der Lib.
      Aber Print ist ne völlig andere Liga. Da worden durch die Parameter und Stackberänderungen und die Routionen, welche die Parameter auf den Stack legen, die Register si verändern, dass ein Absturz vorprogrammiert ist.
      Deswegen PushAll und PopAll.

      Man kann Assembler und Basic nicht einfach mischen, wenn man nicht genau weis, wie das im Hintergrund funktioniert.
      Das sollte man trennen und im Hinterkopf behalten.

      Pluto25 schrieb:

      @Genus nicht in der Hilfe ?
      Nein steht nicht drin, wie so vieles nicht.

      @genus wert entspricht den Basic-Pendant Waitus wert.
      Der Compiler generiert hier eine µs-genaue Verzögerung, sofern $Crystal mit den tatsächlichen Systemtakt übereinstimmt.
    • Die "*Basic:" Anweisung in der Lib hat verschiedene Variationen und es gibt auch Basic ohne Stern oder auch nur Stern.

      Der * bedeutet, dass man Bezug nimmt auf etwas, was in Basic geschrieben wurde.
      Etwa eine Variable oder Konstante.

      Will man auf sowas in der Lib zugreifen, kennt die lib nicht diese Konstante bzw. Variable. Deswegen der Stern.

      "Basic:" bedeutet, dass eine Basic-Anweisung folgt.
      Hier kann aber nicht jeder Befehl angewendet werden, weil die Parameter von basic-Anweisungen Register überschreiben, die in der Lib dann zum Crash führen können.

      In Maßen kann man "Basic:" aber verwenden, wenn man im Basic-Programm z.B. Pins definiert wie PortB.1,
      dann kann man in der Lib das auch verwenden:
      *Basic: Set PortB.1

      "Basic wird hier verwendet, weil ein Basic-Befehl folgt.
      Und weil auf eine Definition zugegriffen wird, die in Basic erfolgte, muss der Stern verwendet werden.

      Das ist das was ich dazu herausfinden konnte in eigenen Experimenten.
    • Danke für die bisherige Arbeit a_17_af3b400f

      Hab folgenden Code eingegeben, das SCK schmeckt ihm aber nicht (unknown config parameter)
      Gebe ich SCL ein, dann kommen "no more space for BIT" Fehler.

      BASCOM-Quellcode

      1. $lib "glcd-UC1609_192x64.lib"
      2. Config Graphlcd = 192x64 , Cd = Portb.0 , Rst = Portb.1 , Cs = Portb.2 , Sda = Portc.4 , Sck = Portc.5
      3. Cls
      4. Waitms 100
      5. Locate 1 , 1
      6. Lcd "Test"
      7. Do
      8. Loop
      Alles anzeigen
    • Da bin ich auch drüber gestolpert. Daher habe ich die benötigten Pins "zu Fuß" eingegeben: (Bei Dir)

      Quellcode

      1. Const _glcd_port_si = Portc
      2. Const _glcd_si = 4 'SDA
      3. Const _glcd_port_scl = Portc
      4. Const _glcd_scl = 5 'SCK
      5. Const _glcd_port_cs1 = Portb 'CS
      6. Const _glcd_cs1 = 2
      7. Const _glcd_port_a0 = Portb 'CD
      8. Const _glcd_a0 = 0
      Der Reset wird (noch?) nicht genutzt. Er würde (Port) _GLCD_PORT_RST (Pin) _glcd_rst heißen.
      PS Ich habe nicht geprüft wie das Config die Pins belegt. Vermutlich können einige der 8 Const weggelassen werden.
      PS Es arbeitet im Spi Modus, heißt wenn Du i2c für irgendwas brauchst funktioniert es nicht mehr da die TWI lib sich dann C4 und 5 "schnappt"
      PPS Das Cls wird beim Config Graphlcd ausgeführt. Wenn das nicht erwünscht ist in der lib Zeile 43 ein ; vor dem rcall _clear_text.
      Auch die nötigen Waits sind darin Es kann also sofort "gestresst" werden ;)
      a_71_f9c57bbe Nicht alle. Vor dem Config sollte ein Waitms 10 falls mehr als 1Mhz Takt
      Das war in der abgeklemmten Reset Routine a_67_e210de67

      Versuchs mal damit:
      Config Graphlcd = Custom , Cols = 192 , Rows = 64 , Cd = Portb.0 , Rst = Portb.1 , Cs = Portb.2 , Sda = Portc.4 , Scl = Portc.5

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

    • Leider konnte ich es immer noch nicht testen.
      Also Locate 0, 0 geht nicht, Locate 1, 0 würde gehen.

      BASCOM-Quellcode

      1. $lib "glcdUC1609_192x64.lib"
      2. Waitms 10
      3. Const _glcd_port_si = Portc
      4. Const _glcd_si = 4 'SDA
      5. Const _glcd_port_scl = Portc
      6. Const _glcd_scl = 5 'SCK
      7. Config Portc.4 = Output
      8. Config Portc.5 = Output
      9. Config Graphlcd = Custom , Cols = 192 , Rows = 64 , Cd = Portb.0 , Rst = Portb.1 , Cs = Portb.2
      10. Cls
      11. Waitms 50
      12. Locate 1 , 1
      13. Lcd "Test"
      14. Do
      15. Loop
      Alles anzeigen
      Es kommt kein Fehler. Es wird aber es auch nichts angezeigt.
    • Ist Dein Rst High? Es wird nicht behandelt. Ein Set Portb=7 evt Portc=48 vor dem Config sollte helfen.
      PS Das $Chrystal stimmt? Wie schnell ist er? Ich habs ur bis 8Mhz getestet.

      Sonic schrieb:

      (Lcdat , Line , Pset etc) machen,
      Lcdat funktioniert,
      Line verweigert Bascom: (Es war auch nicht in der ursprünglichen lib)
      Label not found [_SET_ADDRESS] , in File : C:\PROGRAM\BASCOM-AVR\LIB\GLCD.LBX
      funktioniert aber mit Cls und gline jedoch nicht diagonal
      Ein Pset ist ach nicht da aber könnte rein. Bedenke das es immer ein Byte schreibt. z.b. Pset 0,2 klappt aber Pset 0,4 würde das zweite wieder löschen. Pset 0,2 .. 1,3 würde gehen

      Wenn
      $asm
      _set_address:
      rjmp _setcol
      $end Asm
      eingefügt wird läst es sich aufrufen. Versuch mal was dabei raus kommt a_27_b277ca12

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

    • Pluto25 schrieb:

      Ist Dein Rst High? Es wird nicht behandelt. Ein Set Portb=7 evt Portc=48 vor dem Config sollte helfen.
      PS Das $Chrystal stimmt? Wie schnell ist er? Ich habs ur bis 8Mhz getestet.
      Reset war hardwaremäßig High, im Programm jetzt mit Set PortB.1 vor der Config.
      Crystal stimmt, läuft standardmäßig mit 8MHz.

      Bin jetzt zufällig in die Lock und Fuse bits um Einstellungen zu kontrollieren.
      Es gehen jetzt fast alle Pixel auf dem LCD an.

      Die Einstellungen haben das ganze irgendwie getriggert. Nun zeigt es mir immer das an.
      Ohne Reset sind alle Pixel aus.
      1658847479717.jpg

      Edit: "Set Portb=7 evt Portc=48" kennt er nicht bzw. ist Fehlerhaft
      Edit 2: Ich glaube meine Verbindungen zum LCD machen Probleme. Ich bau es schnell mit Steckbrücken auf.
      Edit 3: Mit Steckbrücken hab ich das gleiche Problem.

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

    • Simon1234 schrieb:

      Set Portb=7 evt Portc=48" kennt er nicht
      Klar a_45_132ca9f5
      Das muß Portb=7 oder
      set porb.0
      set porb.1
      set porb.2
      heißen
      ob
      portc=48 nötig ist weiß ich nicht - ich denke schon
      Seine Pinns sollten alle High sein (daher das Portb = $FF)
      ich versuche das in der lib zu bringen jedoch hadere ich damit ein "set portx.y = Output" vernünftig hin zu bekommen. Das muß doch schöner gehen :

      Quellcode

      1. !ldi r26,_glcd_port_rst
      2. !subi r26,$e1
      3. !clr r27
      4. !ld r17,x
      5. !ldi r16,_glcd_rst
      6. !Ldi r18,1
      7. !tst r16
      8. !breq +4
      9. !Lsl r18
      10. !dec r16
      11. !brne -2
      12. !Or r17,r18
      13. !st x,r17
      Alles anzeigen
      Vielleicht über eine weitere const ?
      *basic:Const _glcd_ddr_si = _glcd_port_si - 1

      sbi _glcd_ddr_si,_glcd_si

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

    • Das Pset sollte nun klappen glcdUC1609_192x64_050.zip
      @ Sonic teste mal, sollte da vielleicht eine dritte Option sein? 1=pixel set , 0=pixel löschen (bei schwarzem Display)
      2=pixel löschen auf weißem Display???
      Es setzt nun auch die Outputs selbst, und das waitms vorher kann weg.
      @Simon 1234 Bei mir wird es über b.2 mit Strom versorgt, das hatte ich total vergessen. Es bekam bei jedem Brennen einen Kaltstart. Bei Dir nicht, vielleicht daher das Problem. Mit der neuen Lib sollte es dann funktionieren?
    • Hier die "final"-Version? Es setzt die benötigten Pins selbst auf Ouput und löscht das Display im Init. Falls eine definierbare Variable das nicht verhindert. Drei weitere können definiert werden um Ausrichtungen und Kontrast ein zu stellen. Fals es auf dem Kopf steht oder schwarz wird a_28_2c02f089

      Das Bascom Line (a,b)-(c,d) ist nicht eingebaut. Vor einer weile hatte ich ein SSD1306 Oled. Das konnte auch seinen Speicherinhalt nicht ausgeben. Das bekam dann V- und H-Line jedoch nicht richtig zufriedenstellend. s. Pset

      Wenn keine weiteren Anregungen kommen werde ich das Projekt erstmal beenden. Wenn etwas mehr Zeit ist vielleicht eine Spi - Version? Es ist auch so recht schnell und für Videos gehen auch nicht über Spi :D

      UC1609_192x64_50.zip