Forum: Mikrocontroller und Digitale Elektronik Schieberegister Fehlfunktion, AVR


von Gabriel Staudinger (Gast)


Lesenswert?

Hallo,

Ich habe eine simple Schaltung mit einem 8-bit Schieberegister 
aufgebaut.
8 LED's sind an das Schieberegister angeschlossen ( Die Schaltung dient 
nur zum Experimentieren).
Als Controller dient ein Arduino UNO (ATmega 32).

Das Problem: Wenn sich am Controller kein Programm im Speicher befindet 
blinken die LED' s willkürlich, wobei die oberen Bits mit einer höheren 
Frequenz blinken als die unteren ( Das 0-bit leuchtet dauernd).
Ich kann mir beim besten Willen nicht vorstellen, dass dies der 
Regelfall sein soll( Lasse mich gerne etwas Besseren belehren).
Auch bei der Übertragung der Daten auf den Controller blinken die LED's.

Wenn ich ein fertiges, funktionierendes Programm (z.B.: 8 bit Counter) 
auf den Controller lade, hängt sich dieses des Öfteren auf. Manchmal 
stoppen die LED's und laufen nach einiger Zeit weiter, oder man muss den 
Controller Resetieren um das Programm wieder laufen zu lassen.

Habe auch schon mehrere Schieberegister probiert, um den Fall 
auszuschließen, dass das Schieberegister defekt sein könnte.

Schieberegister: 74HC595

Ich hoffe es kann mir jemand helfen.

Mit freundlichen Grüßen

Gabriel Staudinger

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Gabriel Staudinger schrieb:
> Ich kann mir beim besten Willen nicht vorstellen, dass dies der
> Regelfall sein soll( Lasse mich gerne etwas Besseren belehren).

floating inputs => undefinierter Zustand

Das sind CMOS-Eingänge, die fangen sich irgendwas aus der Umgebung
ein und benutzen das als Takt und Daten.

von Gabriel Staudinger (Gast)


Lesenswert?

Wie lassen sich diese "floating -inputs" eliminieren?

von Gabriel Staudinger (Gast)


Lesenswert?

Habe die Lösung gefunden.

10k Ohm Widerstände parallel zu der Daten ,- Clock leitung.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Gabriel Staudinger schrieb:
> Wie lassen sich diese "floating -inputs" eliminieren?

Floatende Eingänge legt man auf Masse oder Vcc.

Betriebsmäßig benutzte Eingänge lässt man einfach nicht floaten.
Dann kannst du dir auch den Querstrom für die Pullwiderstände schenken.

von Gabriel Staudinger (Gast)


Lesenswert?

Wie lässt man sie nicht floaten?

Ich kann ja die Daten, bzw Clockleitungen nicht auf Masse oder Vcc 
legen.

von Reset (Gast)


Lesenswert?

Warum schaltest du die Ausgänge nicht erst durch, wenn dein Programm 
vernünfitig läuft? #OE kann helfen.
Und, der Baustein hat einen Reseteingang.

von Gabriel Staudinger (Gast)


Lesenswert?

Also den OE pin auch über den Controller steuern?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Gabriel Staudinger schrieb:
> Wie lässt man sie nicht floaten?

Indem du sie in der Initialisierungsphase der Firmware als Ausgang
konfigurierst.  Damit haben sie dann immer ein definiertes Potenzial.

Dass sie während des Reset mal floaten, ist in den meisten Fällen
tolerierbar.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.