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

Re: Multithreading I2C Timer2 Kategorie: Programmierung C (von PeterS - 8.07.2009 16:42)
Als Antwort auf Re: Multithreading I2C Timer2 von ThomasJ - 8.07.2009 10:02
Ich nutze:
C-Control Pro Mega32, C-Control Pro Mega128, CC-Pro 32 Application Board, CC-Pro 128 Application Board, Pro-Bot128
> > Hallo,
> >
> > beim Multithreading mit dem I2C Bus stellt sich mir die folgende Frage
> >
> > Was passiert wenn im
> >
> > Thread1:  Thread_Delay() abläuft
> >
> >  während im
> >
> > Thread2:  while(1)
> >                {Threat_Lock(0)
> >                  I2C Abfrage
> >                 Thread_Lock(1)}
> > abläuft.
> >
> >
> >  Läuft der Timer2 und der  Counter von Thread_Delay weiter oder kommt es zu einem erheblichen Zeitfehler?  

Ja der Counter von Thread_Delay läuft bei einem Thrad_Lock weiter.

> >
> > Im voraus vielen Dank fĂĽr eine Antwort
> >
> > MfG
> > Thomas
>
> Hallo,
> noch eine Frage.
>
> Ist Threat_lock auĂ?er fĂĽr die extrene Harware(LCD, I2C...) auch fĂĽr die interne Hardware
> z.B. Speichervorgänge auf dem EEprom erforderlich?

Nein. Zugriffe auf das Interne EEPROM sind atomar. Auch fĂĽr die externe Hardware ist es nur
selten erforderlich. Nur wenn ich 2 laufende Threads (das Hauptprogramm ist auch ein Thread)
habe, die gleichzeitig auf das gleiche Device zugreifen wollen, muĂ? ich synchronisieren.
Im Falle eines Bus wie I2C oder SPI, ist der ganze Bus das Device. Das heiĂ?t nur ein Thread
sollte gleichzeitig auf einen Bus zugreifen, sonst kann es zu folgenden Problem kommen:

Thread 1 adressiert I2C Device A

Thread 2 adressiert I2C Device B
Thread 2 schreibt auf Bus

Thread 1 schreibt auf Bus, aber erwischt das falsche Device, da Thread 1
  denkt Device A sei noch adressiert


Gruss Peter

>
> Danke
>
> MfG
> Thomas


    Antwort schreiben


Antworten: