ich probiere gerade Shift Register aus und bin auf eine Sache gestossen, die ich nicht so verstehe.
Wenn ich den atmega328p zurücksetze ( reset ) reagiert darauf der Shift Register nicht.
Die LEDs am Shift Register bleiben an
Jetzt frage ich mich warum ?
Ich habe mich nach diesen Beispielen hier gehalten:
Eine Antwort wäre von der beschaltung deines Schieberegisters abhängig. Wenn du die also in digitaler Form hast wäre es ganz gut wenn du sie Posten könntest. Grundsätzlich sei jedoch zu sagen das ein 74hc595 im grunde aus 2 Registern besteht. Zum ersten das schieberegister, in welches du die Daten schiebst , und einem output Register. Dieses Register sind die Zustände an den Pins. Wenn du nun Daten in das schieberegister schiebst, dann liegen diese nicht sofort an den Ausgängen an. Dies geschieht erst durch einen kurzen high Impuls am RCK, dem storage Register clock Pin.
Resetest du nun deinen arduino ohne das du neue Daten in das schieberegister schreibst und diese mittels des RCK an das outputregister übernimmst, so passiert am Ausgang des schiebereigsters gar nichts da das storage Register immernoch die Daten hält. Anders sieht es aus wenn du die Reset Pins beschaltet hast und nicht fest auf 5V oder 0V hältst. Aber das kann uns erst dein Schaltplan verraten.
Das IC hat mit Pin 10 einen "Master Reset" Pin, der Low-aktiv ist. Sowie ich das sehe löscht der aber erst mal nur die internen Speicher-Register. Man braucht danach immer noch einen Puls am Latch-Pin, damit das auf die Ausgangsregister übertragen wird (Seite 5). Das könnte man aber ganz am Anfang in setup() machen.
EDIT:
Die Pin-Bezeichnungen weichen etwas von Firma zu Firma ab (deshalb heißt das woanders "shift register clear"), aber die Funktionalität ist die gleiche. Das NXP Datenblatt ist IMO etwas schöner.