Probleme mit 74HC959 und LCD

Hallo miteinander,

vor einigen Monaten habe ich mir ein kleines 'Terminal' bestehend aus einem LCD 16x2 und ein paar Tasten auf Lochraster aufgebaut. Das LCD wird über zwei Portpins und einem 74HC595 angesteuert. Die Library ShiftRegLCD123 übernimmt die Fütterung des 74HC959.

Das hat bisher auch wunderbar funktioniert. Am Wochenende wollte ich mit einer kleinen DDS-Platine experimentieren, aber jetzt wird ein lcd.print nur noch fehlerhaft ausgeführt. Von jeder auszugebenden Zeichenkette wird nur das erste Zeichen ausgegeben.

Der 74HC959 wurde erfolglos getauscht. Ebenso erfolglos LCD und den Uno. Die Verdrahtung der Schaltung hab ich wohl drei mal kontrolliert. Auch das hat nichts gebracht. 5Volt liegen stabil an. Die Signale der Portpins sind sauber, Flanken sind steil, Pegel stabil (sowohl an den Ein- und Ausgängen des 74HC959 wie auch an den Eingängen des LCD). Irgendwie bin ich mir zu 99.995% sicher, dass die Hardware sauber ist.

Die eingesetzte Library wurde nicht aktualisert. Es ist immer noch die bisher verwendete Version von 2012. Selbst das entsprechend Beispiel der Library (HelloWorld_2_wire_SRLCD123) macht den Fehler.

Ich bin mittlerweile absolut ratlos. Jede Zeichenkette in einzelne Zeichen zu zerpflücken und die dann einzeln zu printen klappt zwar, diese 'Lösung' ist aber mehr als unbefriedigend, zumal ich schon gern wüsste, was da klemmt.

Hat jemand noch einen Tip?

Graubart

Ich vermute du verwendest eine andere IDE.
Dieser Fehler ist mir von der 1.6.6 bekannt.

Wenn nicht evtl. Ein Fehler auf dem Steckbrett.

Danke für die Mühe, aber....

Dieser Fehler ist mir von der 1.6.6 bekannt.

Wenn es an der IDE liegt, dann hat die 1.6.8 auch noch den Fehler. Die hab ich grad schnell mal installiert.

Wenn nicht evtl. Ein Fehler auf dem Steckbrett.

Sehr unwahrscheinlich, weil das Steckbrett unbenutzt daneben liegt :-))) Ich hab alles auf Lochraster aufgebaut.

Gruß

Graubart

Edit: Danke für Deinen Hinweis. Nicht immer ist das neue besser. Hab gerade noch mal die Version 1.6.0 installiert und siehe da: es klappt! HURRA!!!! Jetzt werd ich mich mal auf die Suche nach den Unterschieden machen. Ich befürchte, dass es geänderte gcc-Optionen oder sogar Änderungen am gcc selbst sind.

Besten Dank noch mal.

Graubart:
Danke für die Mühe, aber....

Dieser Fehler ist mir von der 1.6.6 bekannt.

Wenn es an der IDE liegt, dann hat die 1.6.8 auch noch den Fehler. Die hab ich grad schnell mal installiert.

Wenn nicht evtl. Ein Fehler auf dem Steckbrett.

Sehr unwahrscheinlich, weil das Steckbrett unbenutzt daneben liegt :-))) Ich hab alles auf Lochraster aufgebaut.

Gruß

Graubart

Edit: Danke für Deinen Hinweis. Nicht immer ist das neue besser. Hab gerade noch mal die Version 1.6.0 installiert und siehe da: es klappt! HURRA!!!! Jetzt werd ich mich mal auf die Suche nach den Unterschieden machen. Ich befürchte, dass es geänderte gcc-Optionen oder sogar Änderungen am gcc selbst sind.

Besten Dank noch mal.

Prima, freut mich.
Das du es nicht auf dem Steckbrett hattest, konnte ich nicht wissen. Da liegt es auch oft dran.
Welche IDE hättest du denn vorher?
Die 1.6.5 kannst du auch nehmen, die ist fehlerfrei, ich verwende die schon seit einiger Zeit.

HotSystems:
Das du es nicht auf dem Steckbrett hattest, konnte ich nicht wissen. Da liegt es auch oft dran.
Welche IDE hättest du denn vorher?
Die 1.6.5 kannst du auch nehmen, die ist fehlerfrei, ich verwende die schon seit einiger Zeit.

Steckbretter sind auch praktisch. Wenn es den aber über 2-3MHz geht, dann klatsch ich die Schaltung lieber UglyStyle auf ein Stück doppelseitige Leiterplatte mit eingefrästen kleinen Kupferinseln.

Ich meine auch, lange mit der 1.6.5 gearbeitet zu haben. Die 1.6.0 hatte ich nur gerade auf der Platte. Ich werde mal die Unterschiede in den Compileroptionen der beiden raussuchen und dann meine 1.6.6 anpassen. Die Compiler sind bei beiden Versionen identisch. Das hab ich schon geprüft.

Graubart

Graubart:
Steckbretter sind auch praktisch. Wenn es den aber über 2-3MHz geht, dann klatsch ich die Schaltung lieber UglyStyle auf ein Stück doppelseitige Leiterplatte mit eingefrästen kleinen Kupferinseln.

Ja, ich bin auch eher ein Freund des "Lötens". Aber wenn es mal schnell gehen soll, wird gesteckt.
Und da ich hier leider meistens mehrere Projekte parallel bearbeite, ist das mit dem Steckbrett am einfachsten.

Ich meine auch, lange mit der 1.6.5 gearbeitet zu haben. Die 1.6.0 hatte ich nur gerade auf der Platte. Ich werde mal die Unterschiede in den Compileroptionen der beiden raussuchen und dann meine 1.6.6 anpassen. Die Compiler sind bei beiden Versionen identisch. Das hab ich schon geprüft.

Ja das wäre schon interessant. Sowie auch, dass die Version 1.6.8 doch noch Fehler aufweist.

Hab mich jetzt mal durch die Compilerausgaben der 1.6.5 und 1.6.8 gefräst und nur einen Unterschied bei den Aufrufen gefunden. Die Version 1.6.8 hat zusätzlich den Parameter -std=gnu++11. Der ist so neu, dass ich den nicht mal in der offiziellen Doku finde. Ich habe ihn probeweise mal raus genommen. Hat aber nichts gebracht. Merin LCD will einfach nicht.

Da ich aber mit der Version 1.6.5 eine brauchbare Alternative hab, ist mein Elan, weitere Unterschiede zu finden, momentan eher begrenzt. Falls ich demnächst mal ein paar Stunden Langeweile hab, stöber ich noch mal ein bisschen. Sollte ich zu sensationellen Erkenntnissen kommen, dann werd ich es hier kund und zu wissen geben.

Graubart

-std=gnu++11 bedeutet dass du C++11 verwenden kannst:

Das hat eine ganze Reihe sehr schöner Features die das Leben leichter machen können. Die braucht man aber hier nicht. Geht übrigens schon seit 1.5.7. Vorher war es nur nicht aktiviert.