Hallo,
ich möchte mit einem HC595 ein 4Bit LCD ansteuern (LCD16x2, HD44780).
Nun habe ich das Problem, dass bei dem überschreiben des Programms das
Display wie verrückt Daten bekommt. Teilweise wird es dabei so stark
gestört, dass ich nach dem Upload einen Reset am AVR machen muss, da
ansonsten das Display keine erkennbaren Zeichen liefert.
Das Schieberegister ist über SCK, MOSI und SS mit dem AVR verbunden.
OE/G ist auf GND. Kann man das ganze nun über die Schaltung selber so
einstellen, dass solange die ISP Programmierung stattfindet, der OE/G
HIGH ist oder aber das HC595 sich dauerhaft im Reset befindet? Möchte
keinen zusätzlichen Pin verwenden.
>Teilweise wird es dabei so stark>gestört, dass ich nach dem Upload einen Reset am AVR machen muss
Der ISP macht doch schon einen Reset.
Ein gutes LCDInit() sollte das auch ohne Tricks hinkriegen.
Deine Funktion ist ja leider nicht zu sehen.
Vogel schrieb:> Das Schieberegister ist über SCK, MOSI und SS mit dem AVR verbunden.> OE/G ist auf GND. Kann man das ganze nun über die Schaltung selber so> einstellen, dass solange die ISP Programmierung stattfindet, der OE/G> HIGH ist oder aber das HC595 sich dauerhaft im Reset befindet? Möchte> keinen zusätzlichen Pin verwenden.
!OE über Inverter an !RESET hängen. Im Normalbetrieb ist !Reset High,
und damit !OE low, beim ISP-Vorgang ist !Reset Low und damit !OE high.
fchk
Vogel schrieb:> Während des Uploads flackert das Display dennoch.
Bricht deine Spannung ein?
Waehrend des Uploads sollte SS hochohmig werden und der pullup das ganze
auf 1 ziehen. Das Display also gar keine Daten annehmen...
MfG
Stephan B. schrieb:> Vogel schrieb:>> Während des Uploads flackert das Display dennoch.>> Bricht deine Spannung ein?>> Waehrend des Uploads sollte SS hochohmig werden und der pullup das ganze> auf 1 ziehen. Das Display also gar keine Daten annehmen...>> MfG
Falls das nicht richtig rüber gekommen ist. Es flackern Zeichen auf dem
Display und das Display flackert selber auch, da am HC595 auch die Led
für das Display angeschlossen ist. 560Ohm Widerstand zwischen Kathode
und dem HC595 Pin.
Vogel schrieb:> Das Schieberegister ist über SCK, MOSI und SS mit dem AVR verbunden.> OE/G ist auf GND.
Was ist mit dem Reset-Pin? Verbinde mit dem Reset-Pin von AVR
Anschluss ist wie auch hier zu sehen. Nur das ich jetzt am SS Pin einen
PullUp drangemacht habe. Kerko 100nF an den Versorgungspins.
Belegung des LCD <-> HC595
LCD_DB4 0
LCD_DB5 1
LCD_DB6 2
LCD_DB7 3
LCD_RS 4
LCD_RW 5
LCD_EN 6
LCD_LED 7
Vogel schrieb:> Das Bild ist nur aus dem Wiki hier. Ich habe hier gerade keine Software> zum erstellen auf diesem PC (Eagle).
Dann mals mit der Hand, Papier und Bleistift und mach ein Foto davon.
Geht sowieso schneller als elektronisch.
Das kann eigentlich nicht sein.
Denn ein 595 reagiert nur bei steigender Flanke am RCK Pin.
Da während des Programmierens per ISP der SS Ausgang hochohmig ist,
sollte sich da an diesem Ausgang eigentlich überhaupt nichts tun.
Entweder hast du dich beim SS-Pullup verlötet oder deine
Versorgungsspannung bricht laufend ein wenig ein, was der 595 als Flanke
interpretiert.
Jedoch kommt immer mal wieder nach dem Upload nur noch ein Kauderwelsch
aufs Display. Hierbei passt die Struktur auf dem Display bedingt, nur
halt falsche Zeichen.
Das erste Bild zeigt den Fehler, das zweite ist nach dem ich die
Spannungsversorgung wieder eingeschaltet hab.
Auf dem Display soll in Zeile 1 stehen:
1
Dauer(ms):..1499
In der zweiten Zeile ist rechtsformatiert ein Zahlenwert. Geht der Wert
über 999 hinaus, soll ### angezeigt werden. Wie im Bild 2.
Bei Bild 1 wird dort 222 angezeigt. Der andere Text ist auch
verkrüppelt.
Um ehrlich zu sein:
Nach der Nummer
> Also mit PullUp flackert es, setze ich stattdessen einen PullDown ein, flackert
nichts.
traue ich deiner Spannungsversorgung nicht mehr über den Weg.
Aber warum soll die Stromversorgung nur beim Programmieren einbrechen?
Programmiere mit dem mkii. Die Spannungsversorgung erfolgt aus einem
Arduino Uno der an USB angeschlossen ist. Auf dem Uno kein Atmega328P
drin. Der wurde entfernt. Das Board ist nur für die Serielle
Schnittstelle eingeschaltet, da ich kein FTDI hier habe.
Ausser dem Display ist nichts angeschlossen.
Vogel schrieb:> Hallo Marc. Der Arduino UNO wird nicht verwendet. Der stellt lediglich> die 5V zur Verfügung. Ich habe bis auf 5V und VCC nichts verbunden.
Dann checke dort nochmal alle Verbindungen auf schlechte Lötstellen
und/oder Wackelkontakte.
Es ist NICHT normal, dass ein 595 bei hochgezogenem RCK Eingang an
seinen Ausgängen flackert. Irgendetwas ist da im Busch und an deinem
letzten Eregbnis siehst du ja, dass es nichts bringt dieses Problem zu
ignorieren. Es wird dich immer wieder einholen.
Habe alle Verbindung soweit überprüft, kann da nichts finden.
Programmiere ich den AVR, kommt es ab und zu, zu den Ergebnissen wie
oben. ~50:50 Chance
Das neue Programm landet aber vollständig auf dem AVR. Ziehe ich die
Spannungsversorgung und schließe sie wieder an, läuft alles korrekt.
Was mit nun auffällt, ich kann keinen anderen Pin für SPI_SS nutzen. PA0
und PB0 (mit DDRB) versucht. Da regt sich nichts.
Vogel schrieb:> Was mit nun auffällt, ich kann keinen anderen Pin für SPI_SS nutzen. PA0> und PB0 (mit DDRB) versucht. Da regt sich nichts.
Irgendwo ist da der Wurm drinn.
Ist das deine ganze Aussenbeschaltung?