Re: I2C Capture funktioniert sicher? Kategorie: I²C-Bus (von Joerg C. - 20.12.2008 10:37) | ||
Als Antwort auf Re: I2C Capture funktioniert sicher? von Detlef - 18.12.2008 23:16 | ||
| ||
Hallo Detlef, im Zusammenhang mit dem Zugriff auf deine globalen "shared" Variablen: hast Du den Zugriff selbst auch über ein capture geschützt (mit Hilfe des Moduls cap !)? Bedenke, dass ein Zugriff durchaus durch einen Threadwechesel unterbrochen werden kann, und damit inkonsistente Daten (z.B. bei einem struct) auftreten. Ich verfolge bei meiner Steuerung auch den Ansatz eines globalen shared memory pools (wie von Rene bereits beschrieben); zusätzlich sind die Zugriffe durch mehrere capture geschützt (also eine sinnvolle Aufteilung der globalen, um die Blockade möglichst kurz zu halten). Im Prinzip sieht's folgendermassen aus: a) capture der relevanten (Eingangs-)Daten b) anlegen einer lokalen Kopie der Eingangsdaten c) release der relevanten (Eingangs-)Daten d) ... eigentliche Funktion ... e) capture der relevanten (Ausgangs-)Daten f) Kopie der lokal erzeugten Daten nach (Ausgangs-)Daten g) release der relevanten (Ausgangs-)Daten Hoffe das hilft weiter. Viele Grüsse Joerg C. > Hallo Jörg, > > ja, daran habe ich schon gedacht. > Da das System aber "geordnet" spinnt, > (bspw. fahren plötzlich alle Jalousien eines Raumes wie von Geisterhand herunter) wird es wohl > nicht am Bus generell liegen. > Vielmehr erkennt ein Thread wohl "Eingangssignale", die es gar nicht gibt. > Guck ich mir diesen Thread aber separat an, oder begrenze das Zusammenspiel auf zwei > weitere Threads, funktionierts auch monatelang ohne Probleme. Erst, wenn ich weitere Threads > hinzufüge, fängt der "Eingangssignallesethread" an "Geistersignale" zu lesen. Supersporadisch, > aber inakzeptabel! > > Viele Grü�e aus Leer (Ostfriesland) > > Detlef | ||
Antwort schreiben Antworten: Re: I2C Capture funktioniert sicher? (von Detlef - 23.12.2008 8:38) |