Re: IIC Bus und Multithreading Kategorie: I²C-Bus (von UlliS - 29.06.2009 13:24) | ||
Als Antwort auf Re: IIC Bus und Multithreading von PeterS - 29.06.2009 10:45 | ||
| ||
> > Hallo Ulli, > > das ja einfach genial. > > Die CC Pro bietet doch erheblich mehr als eine CC1. > > Die Mühe des Umstiegs lohnt sich. > > > > Ich möchte noch einmal auf mein Beispiel zurückkommen. > > Das heist also, jeweils am Anfang und am Ende eines Kommunikationsblocks > > setzt man ein Thread_lock in jedem thread, wenn ich das richtig verstanden habe. Genau! > > > > Frage: Ist es in jedem Fall ausgeschlossen, dass sich dann 2 threads gegenseitig blockieren, > > wenn im Multithreading gleichzeitig der Aufruf entsteht? (wirklich gleichzeitig geht ja nicht,oder?) > > Das passiert wohl nur in 1 : 1 Mio Fällen rein zufällig. > > (Die gefüchteten Softwarefallen. "Ein halbes Jahr lief die Anlage störungsfrei. > > Dann stand Sie plötzlich. Nach Reset ging wieder alles. Keiner weis warum" > > Nach meinen Wissensstand Ausgeschlossen, viel. kann unser Peter noch mehr dazusagen. Das Threading arbeitet ja trotzdem immer nur kleine Scheibchen ab und nichts "Gleichzeitig". > > > > Was passiert mit einem parallel laufendem Interupt z.B. 20 ms Timerinterrupt. > > > > A Der Interupt wird in jedem Fall ausgeführt auch bei thread_lock > > Ein Interrupt hat immer Vorrang. > > Gruss Peter > > > > > B Der Interrupt wird gestoppt > > > > B1 Timer hält an bis thread unlock. Danach läuft Irq servive Routine weiter > > B2 Timer läuft weiter > > B21 unlock vor Timerende --> Restzeit für Irq service wird ausgeführt > > B22 unlock nach Timerende --> Irq service wird nicht mehr ausgeführt > > > > C Das Interruptsystem wird gestoppt. Nach unlock wrid der nächste 20ms Tick > > dann wieder ausgeführt. > > > > Viele Grüsse > > Ellen > > > > > > > > > > > > > > > > > > > > > > > > Ich habe eine weiterführende Frage zum IIC Bus an die Experten dieses Forums. > > > > Wie verhält sich das Multithreading, wenn gemeinsame Resourcen verwendet werden? > > > > > > > > Beispiel: > > > > Thread1 fragt eine IIC Bus Tastatur ab > > > > Thread2 bedient einen 1 Wire Converter DS 2482 > > > > Thread3 macht Ausgaben an ein IIC Display > > > > > > > > Wie wird ein Bus Konflikt auf dem IIC Bus gelöst? > > > > Oder kann der garnicht auftreten? > > > > > > > > > > > > Gru� > > > > Ellen > > > > > > Hallo, > > > > > > du musst dabei den Thread mit Thread_Lock() sperren, damit kein > > > anderer Thread auf den I2C-Bus zugreifen kann. > > > > > > Thread_xyz() > > > > > > Thread_Lock(1) 'Threading sperren > > > > > > macht was auf den I2C-Bus... > > > > > > Thread_Lock(0) 'Threading wieder freigeben > > > > > > End Sub > > > > > > > > > Grü�e Ulli | ||
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum