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 PeterS - 29.06.2009 10:45)
Als Antwort auf Re: IIC Bus und Multithreading von Ellen Ramcke - 29.06.2009 10:04
Ich nutze:
C-Control Pro Mega32, C-Control Pro Mega128, CC-Pro 32 Application Board, CC-Pro 128 Application Board, Pro-Bot128
> 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)