LCD Keypad Shield lässt sich nicht ansteuern

    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!

    • LCD Keypad Shield lässt sich nicht ansteuern

      Hallo,
      ich habe mir einen UNO und ein LCD Keypad Shield gekauft, um mal schnell ohne großen Aufwand eine kleine simple Steuerung zu bauen.
      Da meine Heizung schon seit Jahren mit einem MEGA super läuft, kann das ja nicht so schwer sein - dachte ich...
      Leider schaffe ich es jetzt nicht einmal das 16x2 LCD zum Laufen zu bekommen.
      Vielleicht hat jemand eine Idee?IMG_20211126_124547.jpg

      Defaultwerte.BAS
    • Vielen Dank für die schnelle Antwort!

      Leider habe ich mit dem Testprogramm den gleichen Fehler.
      Einen Unterschied zu meiner Version sehe ich auch nicht...
      Hab´ schließlich nach vielen vergeblichen Versuchen diese Codes mir aus dem Forum geholt.

      Welchen Konfigurationsfehler meinst Du?

      Gruß
      Karl
    • Das Display aus Beitrag 1 zeigt ja was an, also hat die Initialisierung im Ansatz geklappt.
      Was wird angezeigt?
      O - 0100_1111
      o - 0110_1111
      ? - 0011_1111
      ö - 1110_1111
      / - 0010_1111
      Alle haben als Low-Nibble 1111

      Es könnte ein Hardware-Problem sein, dass eine Datenleitung nicht durchkommt. Alles durchgemessen?
      Es könnte ein Timing-Problem sein, aber das Programm ist schon auf 16Mhz compiliert und langsamer geht immer beim LCD.
      Wartezeiten sind im Programm, sollte passen.
      Es könnte ein Initialisierungsproblem sein, es gibt LCDs mit anderen Chipsätzen, Dogm oder KS77
      Dazu kann Config LCD mit Parametern gesetzt werden:
      avrhelp.mcselec.com/index.html?config_lcd.htm
    • Vielen lieben Dank!

      Ich hatte mir vorsorglich schon mal ein neues LCD Keypad Shield bestellt.
      Kam heute mit der Post.
      Es liegt tatsächlich daran, dass das Erste defekt ist. Werde es bei Gelegenheit mal auf Kurzschluss und Unterbrechung durchmessen. Optisch ist nichts zu sehen.

      Die toggle portb Schleife hab ich raus genommen.
      Es fehlt zwar noch einiges, aber wenigstens sehe ich jetzt was ich mache :)

      So läuft es jetzt:
      Defaultwerte.BAS

      LG Karl
    • stefanhamburg schrieb:

      Wo steht das im Programm?
      Von "Natur aus" / nach dem Einschalten sind alle Interrupts aus und alle Ports Eingänge. Braucht man welche müssen sie eingeschaltet werden. Mit Enable int irgendwas und config Portx.y as Output.
      Das Config Lcdpin schaltet die benötigten Ausgänges selber ein. Alle Ints müssen zusätzlich noch global eingeschaltet werden damit sie arbeiten (Enable Interrupts)
      @karpol Schön das es geht - die Dinger können nerven.
      Falls Du optimieren magst können Zeile 40,62,65,66 und 70 teilweise, vielleicht alle weg bleiben.
      Ein Getadc braucht ca 5000 Takte in einer Isr könnte das zu Problemen führen wenn das Programm umfangreicher wird. (Der Simulator zeigt nur 45)

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

    • Pluto25 schrieb:

      Von "Natur aus" / nach dem Einschalten sind alle Interrupts aus und alle Ports Eingänge. Braucht man welche müssen sie eingeschaltet werden. Mit Enable int irgendwas und config Portx.y as Output.
      Das Config Lcdpin schaltet die benötigten Ausgänges selber ein. Alle Ints müssen zusätzlich noch global eingeschaltet werden damit sie arbeiten (Enable Interrupts)
      Ja, alles richtig.
    • Ich freue mich über jeden Tip :)
      Bin auch schon fleißig beim Umsetzen deiner Optimierungsvorschläge Pluto25 :thumbup:
      Hab bisher nur mit 1Wire Sensoren gearbeitet und das vor gefühlten 10 Jahren. Die Analogeingänge sind für mich Neuland.
      Dass ein Getadc in einer Isr nicht gut aufgehoben ist, habe ich aber schon gemerkt. a_35_aee4835d

      Mein Programm ist noch lange nicht fertig, aber zum Testen des LCD Keypad Shield reicht es schon mal.

      Die Tasten sollen erst aktiv werden, wenn sie länger gedrückt werden.

      Defaultwerte.BAS

      LG
      Karl
    • karpol schrieb:

      Die Tasten sollen erst aktiv werden, wenn sie länger gedrückt werden.
      Zur Zeit bis zu einer Sekunde? Gabs keine Probleme mit Prellen? Wurde keine falsch erkannt und dann nach einer weiteren Sekunde erst richtig?
      Zeile 45 (Tccr1a = 0) kann auch entfallen.
      (Seltsam: Nach meinem Datenblatt hätte da 1 stehen müssen, aber der Simulator gibt Dir recht, dann ist wohl mein Datenblatt kaputt ^^ )
    • Ja genau, bis zu einer Sekunde. Bei mir funktioniert es so wie ich will. Das zusätzliche Entprellen sollte, denke ich, durch den Getadc überflüssig sein.

      Tccr1a = 0 habe ich aus meinen alten Programmen übernommen.
      Ich bin mir nicht sicher, aber ich glaube, das wurde damals von Michael so vorgeschlagen...

      Noch was anderes - bei diesem LCD Keypad Shield wird der Fußpunkt der Hintergrundbeleuchtung direkt auf den Portb.2 geführt.
      Und obwohl dieser Port unkonfiguriert auf Input steht, zieht er sauber den Fußpunkt auf 9mV herunter. Wie das? Hier fließen doch mindestens 5 bis 10mA
      Wenn ich dann im Output Zustand den Portb.2 auf 1 setze zieht der Port sogar bis auf gigantische 3mV den Fußpunkt runter. Können das alle Ports des ATMEGA328P. Ich kann es mir nicht vorstellen...
    • Können die. :D (Ich hab mal nen BLCD mit den Pins gesteuert )
      Normalerweise kann einer 20mA(max 40mA) und insgesammt sollten nie 200mA überschritten werden.
      In dem LCD wird ein Transistor verbaut sein. Als Eingang ziehen die nicht runter, können aber mit einem eingebauten Pullup (ca 20kOhm) hochziehen. (Config portx.y = input / Set Portx.y)
      Würdes Du b.3 verwenden könnte der per Pwm die Helligkeit beeinflussen.

      Vielleicht ist dem Pin böses widerfahren. :evil: Hier ist ein Mega verunglückt, seid dem braucht er 100Ohm Reset Pullup. Der zieht alleine runter ;(
    • Das Rätsel um die aktive Hintergrundbeleuchtung bei unkonfiguriertem Portb.2 sollte geklärt sein.
      Die Kathode der LED geht auf den Kollektor eines NPN Transistors. Dessen Basis geht dann über einen Vorwiderstand auf den Anschluss 10. Das ist zwar optisch nicht zu erkennen, aber gut auszumessen.
      Das erklärt auch die unterschiedlichen Fußpunkt-Spannungen an der Kathode der LED. Der begrenzte HFE des Transistors ist dafür verantwortlich.
      Das heißt aber im Umkehrschluss, dass bei unkonfiguriertem Portb.2 ein Pullup aktiv sein muss.

      So nebenbei - an meinem defekten LCD Keypad Shield kann ich ohmisch nichts feststellen. Entweder habe ich nach dem Erhalt zu schnell Spannung drauf gegeben (geschwitzt?), oder ich bin bei meinen Messungen abgerutscht...


      Noch einmal vielen Dank für die nette Unterstützung!


      LG

      Karl
    • karpol schrieb:

      Das heißt aber im Umkehrschluss, dass bei unkonfiguriertem Portb.2 ein Pullup aktiv sein muss...
      oder ich bin bei meinen Messungen abgerutscht...
      Der widerrum hätte es vermutlich geschafft die Hintergrundbeleuchtung ab zu schalten. Unkonfiguriert ist alles Low, auch die DDR (z.B. DDRB=7 - pins 0-2 Ausgang die restlichen Pinns des Port B Eingang )
      An dem ersten mal gemessen welche Spannugngen an d0-3 anliegen? Die sollten gleich sein Gnd?
      Das wäre aber viel Pech wenn ein Abrutscher es gleich zerschossen hätte. Die sind nicht unkaputtbar, aber eher hart im nehmen.
    • OK - ich hab´ mal ein bisschen gemessen.

      IMG_20211130_145047.jpg

      Der R1, R2 und der Transistor sowie die LED (Hintergrundbeleuchtung) sind irgendwo auf dem LCD Keypad Shield verbaut.
      Den Portb.2 habe ich als output konfiruriert.
      Mit Portb.2 = 1 schalte ich das Licht ein. Dabei messe ich am Messpunkt 1 = 0,85 V
      Mit Portb.2 = 0 schalte ich das Licht aus. Dabei messe ich am Messpunkt 1 = 0,02 V

      Ich habe es hier mit einem Tri-State zu tun.

      Um mal schnell wieder den "Urzustand" herbeizuführen wollte ich mit "erase Chip" meinen Flash leeren. Bascom sagt auch "CHIP erased"
      Keine Ahnung was da gemacht wurde - auf jeden Fall nicht das was ich wollte a_56_df238249 wahrscheinlich nur ein Verständnisproblem meinerseits 8)