Hallo!
Ich habe eine Schaltung mit einem ATtiny13, 2x 74HC595, zwei Darlington
Arrays und 16LEDs aufgebaut. Die LEDs sollen als Lauflicht fungieren.
Mein einziges Problem ist, dass immer wenn das erste Bit im
Schieberegister leuchten soll (Ausgang Q0 bzw. QA (je nach hersteller)),
dann leuchten alle LEDs an diesem Schieberegister.
Die Software sollte in Ordung sein. Ich habe zur Fehlereingrenzung
einfach statt vorher nun einem nun ein zweites Schieberegister
verwendet, da ich dachte, ich hätte einen Fehler in der
Schleifenbedingung (oder dergleichen), denke aber, dass ich dies nun
ausgrenzen kann, da auch das mittlere (also 9.) Bit den gleichen Fehler
beim zweiten Schieberegister hervorruft.
Hier der QT:
Es funktioniert doch wie gewünscht, daher nehme ich an, dass die taktung
stimmen muss. Die Beschaltung ist genauso, wie in dem verlinkten
Tutorial.
Übernommen wird bei ansteigender Flanke.
Das einzige Problem ist halt, dass wenn das 1. Bit des Registers
leuchtet, alle LEDs an dem Register leuchten.
Einen genauen Schaltplan kann ich frühestens morgen geben, da ich nicht
zu Hause bin.
Was soltle beim takten denn falsch gemacht werden? Ich takte doch so
oder si mit beiden Flanken ein Mal an gleicher Stelle...
Und warum funktioniert es dann sonst richtig? Das wäre dann doch ein
sehr großer Zufall, den ich mir auch, wenn ich mir den QT ansehe nicht
im geringsten erklären kann. Immerhin müsste sich in dem Fall auch nur
eine Veränderung alle 16*200ms, also 3,2s einstellen. 14 von 16 LEDs
leuchten ja zur richtigen Zeit am richtigen Ort... grübel
Sodele. Das ERgebnis ist: Die beiden Darlington Arrays waren falsch
herum eingesteckt... GND lag an Q0/QA an. Faszinierend, dass sie dennoch
so gut funktionierten... Die Schaltung funktioniert nun vollständig und
korrekt.
Es konnte eigentlich nurnoch an diesen beiden liegen, da die Beschaltung
der restlichen Hardware und die Software richtig sein mussten
(Überprüfung der Geschwindigkeit mit der Delay-Zeit usw.).
Vielen Dank für die Hilfen und Mühen!
Grüße Carsten
Nachdenken. ;-) Dem Fehler logisch auf die Schliche kommen. Das
Schieberegister hat ja soweit funktioniert, dass hätte es auf keinen
Fall, wenn eine Leitung vertauscht gewesen wäre. Ich habe dann einfach
noch einmal das Datenblatt vom Darlington-Array genommen und auf Anhieb
den Fehler festgestellt.
Der Effekt ergibt sich dadurch, dass, wenn Qo=0 ist, der Ausgang auf GND
liegt und der Array dadurch "normal" beschaltet ist. Wenn er nun High
wird, dann liegt die Masse vom Array auf +5V an. Scheinbar schalten dann
alle Transistoren irgendwie durch... Müsste man sich näher mal ansehen,
aber nun werde ich ersteinmal lieber den ATTiny13 durch den ATTiny2313
ersetzen und dann möchte ich eine serielle Schnittstelle und 4 PWM
Ausgänge zum Laufen bekommen. ;-)
Nachdenken kann man, hilft aber oft nicht weiter, weil sich die Fehler
manchmal außerhalb des Gedankenmodells befinden.
Deshalb empfehle ich probieren+nachdenken.