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 ;)
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.
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
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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.