Forum: Mikrocontroller und Digitale Elektronik Mehrere AVRs an 1x SPI?


von newbee (Gast)


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?

von johnny.m (Gast)


Lesenswert?

Das SPI-Interface vom Tiny15 ist aber nur zum Programmieren brauchbar.
Da müsstest Du ein Software-SPI implementieren...

von Bernhard (Gast)


Lesenswert?

Hallo newbee,

zuerst solltest du mal ein paar Worte über die benötigte Datenrate
verlieren. Deiner Frage nach soll es ein Master-Slave-System werden?

Viele Grüße,
Bernhard

von johnny.m (Gast)


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.

von Ronny (Gast)


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....

von newbee (Gast)


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.

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.