Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Evtl. Fehler im Modul eeprom.c2 Kategorie: I²C-Bus (von Rolf - 11.07.2003 19:29)
Als Antwort auf Evtl. Fehler im Modul eeprom.c2 von Rolf - 11.07.2003 18:48

> Hallo Herr André Helbig,

mir ist soeben aufgefallen, das es sich um ein Timingproblem handelt.
Ein sleep 1000; nach dem Schreiben führt dann zum richtigen Ergebnis.
Evtl. können Sie aber in Ihrer Doku zum eeprom.c2 diesen Aspekt noch mal darstellen und aus
der Erfahrung heraus auch optimale Sleep-Werte nennen. 1 Sek. ist ja doch recht lang.
Eine Anpassung im Modul-Code wäre schöner aber ungleich schwieriger da für alle 8 möglichen Eeproms
(4 bei 24c512) sowas wie ein Timer mitlaufen müste, der den jeweiligen Thread vor dem zweiten Zugriff
so lange schlafen legt, bis das Eeprom wieder angesprochen werden kann.

Dies führt jedoch auch für mich als Programmierer zu einem Problem da ich nie weis, wann mein
Lese / Schreibthread das nächste mal dran kommt. Kommt er zu früh dran, gibts eine fehlerhafte Datenübergabe,
lege ich ihn jedesmal mit sleep schlafen, ist das ggf. nicht immer nötig. Da die Resourcenverwaltung jedoch
kassischer Weise dem Betriebssystem und deren Treibern obliegt, müste dies im Modul bzw. in entsprechenden
Treibern verwaltet werden. Beschreibe ich 2 oder mehr Eeproms zeitnah (habe jetzt 2x24c512), potenziert sich das
Problem noch, da ich im Tread auch nicht sagen kann, welchem Eeprom mein vorheriger Zugriffsversuch galt.
(und damit das Timeout-Kritterium zutrifft)
Ich habe also auch keine Patentlösung dafür ... aber evtl. können Sie dies in der Doku zumindest erwähnen.

> mystring=" i2c-Test";
> //----------------------
> // evtl. fehlerhaft
> //----------------------
> eeprom.writestr(y,z,mystring);
sleep 1000;
> mystring=" Fehler";
> eeprom.readstr(y,z,mystring);
> //----------------------
> lcdext.print(mystring);

> Mit freundlichem GruÃ?
> Rolf Diesing
>
>




    Antwort schreiben


Antworten: