Forum: Mikrocontroller und Digitale Elektronik PISO-Schieberegister - Funktion richtig verstanden?


von Harald (Gast)


Lesenswert?

Hallo,

ich entwerfe gerade eine Porterweiterung für einen Atmega8 mittels 2
PISO-Schieberegistern, allerdings habe ich ein bischen Zweifel, ob ich
richtig verstanden habe, wie das dann am SPI abläuft.
Bisher hab´ich das so verstanden:

- Die S//L-Eingänge der Register werden high gesetzt.
- Daraufhin setzen die Register ihre Port-Latches und frieren
so die Werte an den Eingängen ein.
- Der MC veranlasst die SPI-Schnittstelle, ein Byte zu lesen.
- SPI sendet 8 Takte an die Schieberegister
der Controller empfängt die ersten 8 Bit des Schieberegisters, welches
als erstes am Controller angeschlossen ist.
- Byte verarbeiten/speichern.
- Der MC veranlasst die SPI-Schnittstelle abermals, ein Byte zu lesen.
- Es werden weitere 8 Takte gesndet, jetzt kommen die 8 Bit aus ehemals
dem nächsten Schieberegister (die beim ersten Mal in das Prozessornähere
Register gewander waren).
- Speichern/Verarbeiten
- S//L wird zurückgesetzt, die Register sind bereit für neue
Eingangswerte.

Stelle ich mir das so richtig vor?`

Zweite Frage: Wenn ich den SPI auch noch für die Programmierung des MC
nutzen will, und die Schieberegister parallel dazu am SPI hängen,
genügt es dann, wenn S//L nicht gesetzt wird, damit kein Schlamassel
passiert, oder sollte die Leitung dann besser galvanisch getrennt
werden?

Gruß,
Harald

von Rahul D. (rahul)


Lesenswert?

ja, das geht so. Du musst die Schieberegister halt kaskadieren (wie du
schon beschrieben hast).
Für jedes Teil, das du an die SPI hängst, brauchst du eine eigene
Select-Leitung.
Dann muss noch sichergestellt werden, dass die Ausgänge deiner
Periferie in nicht-selektierten Zustand hochohmig sind, damit es keinen
Kurzschluß auf der Leitung gibt.

Gruß Rahul

von Harald (Gast)


Lesenswert?

Hallo Rahul,

wozu die Select-Leitung? Ich dachte, die Schieberegister kann ich
einfach eins nach dem anderen lesen? (Während ich das erste lese,
werden ja schon die Daten aus dem zweiten in das erste geschrieben,
oder?)

Gruß,
Harald

von Rahul D. (rahul)


Lesenswert?

Wenn du zwei Schieberegister hintereinander hängst ist das ja auch kein
Problem.
Ich hab noch nicht gefrühstückt...
Um die Eingänge auch noch für die ISP nutzen zu könne, solltest du
zwischen Controller und Schieberegister noch ein paar Widerstände
einfügen. Also die ISP-Verbindung direkt an den Controller und dann
über Widerstände an die Schieberegister.
Ich dachte, du wolltest auch noch andere Bausteine mit an die SPI
hängen. Dafür bräuchstest du noch mehr Select-Leitungen und hochohmige
Ausgänge.

Gruß Rahul

von Harald (Gast)


Lesenswert?

Hallo Rahul,

hoffentlich bist du inzwischen zum Frühstücken gekommen :-).

Was die Widerstände zwischen MC und Schieberegister betrifft:
Mir ist die Wirkung dieser Widerstände, vermutlich aufgrund der
Unkenntnis der genauen Funktion des ISP, im Moment nicht klar.
Vielleicht könntest du mir das noch näher erläutern?

Gruß,
Harald

von Rahul D. (rahul)


Lesenswert?

kann ich leider nicht (wirklich gut).
Zum Frühstück gab es den ersten Weihnachtsmann diesen Jahres...

Die Widerstände begrenzen in erster Linie den Strom.
Es gibt bei Atmel dazu aber auch irgendeine Application Note.
Vermutlich eine über ISP-Programmer.
Am besten mal gucken.
Ich glaube, durch die Widerstände sorgt man auch bei fehlendem
ISP-Adapter für Ruhe auf dem Bus.

Gruß Rahul

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.