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

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: