Mehrere AVRs an 1x SPI?

Gast #360959
Lesenswert?
• ▲
▼
Hallo!

Ich bin gerade dabei eine kleine Schaltung mit µC zu realisieren.

Konkret habe ich eine fertige Platine (nein nicht extra Entwickelt,
sondern bereits Fertig, soll wieder verwendet werden), auf der ein
Tiny15 sitzt.
Ich möchte jetzt mit einem Mega128 mit möglichst wenigen Datenleitungen
(über ein Busssystem) von 8 der vorhandenen Platinen Werte übertragen.

Geht das über SPI (ich meine mit insgesammt 9 AVRs an 1x SPI) oder
brauche ich hierfür was anderes?
Gast #360962
Lesenswert?
• ▲
▼
Generell gilt (mal abgesehen von der o.a. Problematik, was den Tiny15
betrifft): Im Prinzip kann man an SPI beliebig viele Slaves
anschließen. Nur wächst mit der Slave-Anzahl auch die Anzahl der
benötigten Slave-Select-Leitungen (SS). Bei 8 Slaves also entweder 8
Leitungen (für jeden Slave eine separate) oder gemultiplext 3
Leitungen, die dann aber für jeden Slave einen Adressdecoder
erforderlich machen. Wenn der Master nicht über ausreichend Portpins
für 8 separate SS-Leitungen verfügt, kann man ihm natürlich direkt
einen 3-zu-8-Demultiplexer vorschalten und damit jedem Slave separat
eine Select-Leitung zuführen, am µC aber nur drei Pins
'verschwenden'. Das Verfahren mit separaten SS-Leitungen bietet sich
v.a. dann an, wenn die Slaves 'sternförmig' verteilt sind, dann sind
es nur 4 Leitungen zu jedem Slave.

Ansonsten gäbe es die Möglichkeit mit TWI. Die hat den großen Vorteil,
dass sie unabhängig von der Anzahl der Slaves mit zwei Leitungen
auskommt. Allerdings ist die Anzahl der Slaves begrenzt (128 bei den
AVRs) und das Protokoll ist halt wesentlich komplizierter. TWI kann man
zur Not auch per Software implementieren.
Gast #360963
Lesenswert?
• ▲
▼
Wenn die Übertragung etwas länger dauern darf,kann man das ganze
vielleicht auch Ringförmig machen.Der eine horcht auf ein Paket von
seinem Hintermann und reicht es zum Vordermann durch.In das Paket kommt
ein Primitiv-protokoll (ID des Senders,ID des Empfängers,Flag ob die
Daten gültig sind und das Datum).

Echtzeitfähig ist das ganze definitiv nicht und man kann dann auch
nicht mit 1MHZ den SPI takten,aber wenn es nur ein paar Werte pro
Sekunde geht....
Gast #360964
Lesenswert?
• ▲
▼
Also grundsätzlich ist es so, dass die Tiny15 einen Analog-Wert einlesen
sollen und dieser Wert muss eigentlich nur bei einer Änderung übertragen
werden.
--> Das Analog-Signal ändert sich voraussichtlich max 2mal pro Sekunde
(eine Abfrage 1x pro Sekunde würde vermutlich ausreichen, wobei mir
eine 2malige Abrage  wesentlich lieber währe.

Von den Tiny15 sind allerdings nur PB0,PB1 und PB2 Frei und
herausgeführt, 4 Leitungen wird also leider nicht funktionieren.

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.