Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: IIC Bus und Multithreading Kategorie: I²C-Bus (von Ellen Ramcke - 29.06.2009 10:04)
Als Antwort auf Re: IIC Bus und Multithreading von UlliS - 26.06.2009 12:10
Ich nutze:
C-Control Pro Mega32
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

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 PeterS - 29.06.2009 10:45)
    Re: IIC Bus und Multithreading (von UlliS - 29.06.2009 13:24)