Forum: Mikrocontroller und Digitale Elektronik TWI/SPI mit zusätlicher interrupt leitung


von D. Laszlo S. (lazlo)


Lesenswert?

Hallo zusammen!

ich habe eine frage bzw. würde mich über hinweise freuen bezüglich der 
forgehensweise in folgendem szenario.

ich habe ein "gerät" welches aus zwei microcontrollern besteht. bei 
laufen mit dem gleichen takt (12MHz) aber nicht mit dem selben (will 
meinen sie sind nicht synchronisiert über gemeinsame taktleitung oder 
derartiges).

einer der chips (A) soll von dem anderen (B) daten empfangen. dabei kann 
man sich A als hauptsystem und B als eingabegerät vorstellen.

wenn ich jetzt in A mein systemprogramm abarbeite und daten von B 
empfangen möchte kann ich soweit mit bekannt entweder:

- zyklisch B fragen ob neue daten anliegen (vielleicht via TWI oder SPI)

oder

- A und B an einem pin miteinander verbinden und diese verwenden um von 
B aus A zu signalisieren dass daten abzuholen sind (so zu sagen ein 
interrupt)

soweit hoffentlich nicht total daneben.

jetzt zu meiner derzeitigen überlegung. da B ein eingabegerät sein soll 
und die hauptarbeit in A passiert möchte ich A jeweils nur dann von B 
daten lesen lassen wenn auch wirklich welche da sind. so würde ich also 
eine leitung zwischen beiden als interrupt verwenden und sagen wir mal 
TWI verwenden um dann die slave addresse zu senden und dann auf die 
daten von B zu warten und sie zu lesen.

jetzt bin ich mir unsicher ob ich TWI oder SPI verwenden sollte mit 
einem "von hand gebasteltem" interrupt (für meinen geschmack 
wiederspricht dies dem "nur master redet" konzept in TWI). dazu würde 
ich gerne wissen wie ihr das seht. ich habe beispielsweise beim RFM12 
(433mhz spi funkmodul) gesehen dass es dort eine interrupt leitung gibt 
und sonst glaube ich derartiges schon ein mal gesehen zu haben oder 
halte es für vorstellbar (nur vielleicht eben nicht schön). also, kann 
ich im grunde einfach TWI oder SPI verwenden?

weiter stellt sich noch die frage der (zeitlichen) synchronisierung bzw. 
den dingen die ich in der firmware für einen asynchonen betrieb 
bereitstellen muss (fifo für eingehende daten von B). aber das fürt 
vielleicht auch schon zu weit.

schon ein mal danke fürs lesen und für eine hilfreiche antwort.

lazlo

(sorry für den roman ;)
von Stefan H. (stefan_h16)


Lesenswert?

D. Laszlo Sitzer schrieb:
> (für meinen geschmack
> wiederspricht dies dem "nur master redet" konzept in TWI)

Ich glaube du gehst das ganze viel zu theoretisch und dogmatisch an.
Erlaubt ist was sinnvoll ist. Und wenn du nicht andauernd pollen willst, 
nimmst du halt eine eigene Interruptleitung die dem Master sagt es gibt 
was zum abholen. Damit wird ja auch das Master - Slave konzept an sich 
nicht verletzt, weil die Interruptleitung ja außerhalb von TWI und SPI 
läuft.
Bei sehr vielen TWI oder SPI Bausteinen, nicht nur beim RFM gibt es eine 
Interruptrückleitung um dem Master über Änderungen zu benachrichtigen, 
sie sind überaus sinnvoll und meistens sehr willkommen.
von D. Laszlo S. (lazlo)


Lesenswert?

danke für die antwort! ich denke ich werde es, wie du meintest einfach 
mal versuchen. ob jetzt spi, twi oder parallel .. wird sich noch alles 
raustellen ; )

danke,

lazlo
von sebastian (Gast)


Lesenswert?

Die extra Interrupt-Leitung brauchst du eigentlich garnicht.
B kann auch als TWI-Master die Daten dann senden, wenn neue anliegen.

Nur weil A das "Hauptsystem" ist, muss es nicht auch der TWI-Master 
sein.

Wenn du ausser diesen Daten nichts anderes über TWI übertragen willst, 
spricht da nichts dagegen.

Wenn A für irgendwelche anderen Nachrichten TWI-Master sein soll, geht 
das auch. Du hast dann ein Multimaster System. Vorsicht, AVRs haben 
anscheinend einen Bug was Multimaster-Betrieb angeht (Benutz die Suche 
wenn du mehr drüber wissen willst).
von D. Laszlo S. (lazlo)


Lesenswert?

Hallo Sebastian!

danke für deine Antwort! An derartiges habe ich auch schon gedacht .. 
aber so ganz entschlossen bin ich noch nicht. Deine Annahmen sind aber 
soweit volkommen richtig. Denke werde auch deinen Vorschlag versuchen in 
einem Experiment umzusetzen und überlegen welches model sich besser 
eignet.

Noch mal danke : )

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