SPI Slaves + Schieberegister

Gast #6735035
Lesenswert?
• ▲
▼
Hallo!
Ich hab nen ATmega88, an dem per SPI drei Motortreiber für 
3D-Drucker-Stepper hängen.
Nun würde ich das ganze noch um 4 kaskadierte Schieberegister (CD4021) 
ergänzen und diese auch übers SPI-Interface auslesen.
Nun stellt sich mir die Frage, ob das nicht zu Problemen mit den 
SPI-Motortreibern führt, da die Schieberegister kein ChipSelect haben. 
Sie hängen also immer an der CLK- und MISO-Leitung mit dran, selbst wenn 
gerade mit einem Motortreiber kommuniziert wird...
Gast #6735041
Lesenswert?
• ▲
▼
Johnny D. schrieb:
> Nun stellt sich mir die Frage, ob das nicht zu Problemen mit den
> SPI-Motortreibern führt, da die Schieberegister kein ChipSelect haben.
> Sie hängen also immer an der CLK- und MISO-Leitung mit dran, selbst wenn
> gerade mit einem Motortreiber kommuniziert wird...

ja, wird es.
"Einfach" die Taktleitung der Schieberegister vom Bus entkoppeln, wenn 
sie nicht angesprochen werden sollen. Also ein manuelles Chip-Select.
Anders dürfte es nicht gehen.
Gast #6735176
Lesenswert?
• ▲
▼
STK500-Besitzer schrieb:
> "Einfach" die Taktleitung der Schieberegister vom Bus entkoppeln, wenn
> sie nicht angesprochen werden sollen. Also ein manuelles Chip-Select.
> Anders dürfte es nicht gehen.

Es geht auch anders: Den Atmega88 "einfach" durch einen Atmega328PB 
ersetzen. Der hat zwei SPI-Schnittstellen.

LG, Sebastian
Gast #6735821
Lesenswert?
• ▲
▼
TriState Treiber klingt für mich nach der besten Variante. Sehe ich das 
richtig, dass man für die Leitungen CLK <-> SCK und Q7 <-> MISO je einen 
TriState-Treiber braucht?
Dann könnte man die Signale CS und PL verbinden
#6735827
Lesenswert?
• ▲
▼
Johnny D. schrieb:
> TriState Treiber klingt für mich nach der besten Variante.

Das ist die Lehrbuchvariante. Der Trick mit dem Widerstand geht auch und 
ist deutlich einfacher.

> Sehe ich das
> richtig, dass man für die Leitungen CLK <-> SCK und Q7 <-> MISO je einen
> TriState-Treiber braucht?

Nö. SCK wird direkt verbunden.

> Dann könnte man die Signale CS und PL verbinden

ja
Gast #6735982
Lesenswert?
• ▲
▼
Eigentlich ist nur und immer der Ausgang ein Problem, den Du einliest. 
Den müsstest Du irgendwie mit Tristate versehen. Ein CS für Clock und 
Daten brauchst Du nicht, das macht der P/S-Control.

Zudem musst Du schauen, ob die Logik des Chips (wann genau die Clock 
welche Flanke macht) mit der Deiner Treiber übereinstimmt.

Bei so einem Baustein und z.B. nur eine Abfrage jede ms, lohnt sich der 
Aufwand meist nicht. Bitbanging kostet da keine Leitung mehr. (einfach 
anderen Input statt CS)

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.