Forum: Compiler & IDEs SPI über Schieberegister, zu langsam?


von Nix D. (hankey)


Angehängte Dateien:

Lesenswert?

Moin, hab mich mal mit SPI beschäftigt und nen Schieberegister
angeklemmt.
Controller: mega16
Schieberegister: Mos 4094 (DB im Anhang)

Aufgabenstellung:Es sind 4 LED's angeschlossen und 2 sollen leuchten.
Problem: Die richtigen 2 leuchten zwar, aber ganz zu Anfang, sobald der
Mikrocontroller Strom hat, Leuchten die ersten 3 LED's (nichtmal 1
Sekunde)

Ich würde jetzt sagen das liegt daran, das die Bits "durchgeschoben"
werden und schon gleich aktiv sind. Hab gedacht man kann das mit
"Output Enable" aktivieren aber dem ist anscheind nicht so.

Da die Bezeichnung der Pins vom Schieberegister anders ist, als alles
was ich in dem Zusammenhang gefunden hab musste ich erstmal noch einer
"Übersetzung" suchen. Kann sein das da der Fehler liegt.

Die Beschaltung ist auch im Anhang zu finden + Quellcode.

Wäre nett wenn mir jemand helfen könnte ;).

von Nix D. (hankey)


Lesenswert?

Könnte mir dann vielleicht jemand ne richtige "Übersetzung" der Pins
am schieberegister geben ?

von micro1 (Gast)


Lesenswert?

Ja du musst ja auch ein CS signal anklemmen.

Erst werden die Daten reingeschoben und dann das CS sIgnal von low auf
high gesetzt dann werden die daten übernommen

von Simon K. (simon) Benutzerseite


Lesenswert?

Joa, beim 4094 heißt das "Strobe"

von Nix D. (hankey)


Lesenswert?

Ah danke. Endlich mal was konstruktives. Dachte "Output Enable" wäre
für CS, kein wunder das es nicht geklappt hat. Werd mal testen und mich
wieder melden wenn noch was ist ;).

von Nix D. (hankey)


Lesenswert?

Also ich hab jetz "Strobe" vom Schieberegister an PortA vom
Mikrocontroller gelegt & Outputenable weggenommen (Quellcode bleibt).
Allerdings hab ich das selbe Problem wie vorher. Bei Stromzuführung
Leuchten die ersten 3 Led's und kurz danach halt nur die 1 & 3, so wie
es sein soll.

Es ist aber natürlich sehr von nachteil wenn ganz zu Anfang Pins auf
high liegen die noch nicht sein sollen.

Hoffe mir kann jemand helfen, ist echt dringend ;).

von Nix D. (hankey)


Lesenswert?

Ich hab jetzt mal nen Warteschleife eingebaut, dass der Eigentliche
Prozess (Bits ins Register schieben & ausgeben) erst ein paar Sekunden
nach Stromzufuhr beginnt. Nun leuchten die LED's sobald Strom kommt
"faden" aus und kurz darauf leuchten dann die 1 & 3. Ich versteh
einfach nicht warum zu Anfang alle LED's leuchten.

P.S. es leuchten alle 4 LED's zum Anfang nicht nur 3, bei der letzten
war nen Wackelkontakt deswegen blieb sie bis jetzt immer aus ;).

von micro1 (Gast)


Lesenswert?

Du musst den OE enable eingang auf defeniertes aus potential mit pull up
oder pll down legen dann geht das auch

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.