Re: IIC Bus und Multithreading Kategorie: I²C-Bus (von PeterS - 29.06.2009 10:45) | ||
Als Antwort auf Re: IIC Bus und Multithreading von Ellen Ramcke - 29.06.2009 10:04 | ||
| ||
> 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. > > 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" > > > 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: Re: IIC Bus und Multithreading (von UlliS - 29.06.2009 13:24) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum