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?
Das SPI-Interface vom Tiny15 ist aber nur zum Programmieren brauchbar. Da müsstest Du ein Software-SPI implementieren...
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
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.
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....
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.