mikrocontroller.net

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


Autor: Harald (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harald (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harald (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.