Hallo,
in meinem neuen Projekt verwende ich nun zum ersten Mal den xMega256A3U. Bisher läuft auch alles wunderbar.
In diesem Projekt und auch schon früher benutze ich für das Verwalten eines externen I2C-Eeproms den Device-Treiber UserDevice mit seinen Funktionen UsrDevOut,UsrDevInp etc. .
Ich lege meine Variablen mit {$UData} in den externen Bereich und spreche sie dann direkt mit den Namen an. In meiner UsrDevOut Prozedur wird dann nur die TWIOut Funktion aufgerufen und die Werte damit ins I2C-EEprom geschrieben. Bei größeren Datenmengen verwenden wir inzwischen einen Cache zum Schreiben. Das hat bisher immer ohne Probleme funktioniert.
Nun ist es so, dass wenn der angesprochene Typ größer als ein Byte(z.B. word, longword, etc.) ist, d.h. der DeviceTreiber die UsrDevOut Routine mehrmals aufruft, entsteht zwischen den Schreibvorgängen im UsrDevOut ein TimeOut von ca. 100ms, indem die TWIClock auf GND liegt. Erst dann wird das nächste Byte geschrieben. Wenn ich in der UsrDevOut Prozedur anstatt des TWI den I2CPort nehme, funktioniert alles prächtig.
Gibt es im Falle des DeviceTreibers noch ein Problem mit der TWI? Oder muß ich noch etwas beachten?
Gruß Mario
in meinem neuen Projekt verwende ich nun zum ersten Mal den xMega256A3U. Bisher läuft auch alles wunderbar.
In diesem Projekt und auch schon früher benutze ich für das Verwalten eines externen I2C-Eeproms den Device-Treiber UserDevice mit seinen Funktionen UsrDevOut,UsrDevInp etc. .
Ich lege meine Variablen mit {$UData} in den externen Bereich und spreche sie dann direkt mit den Namen an. In meiner UsrDevOut Prozedur wird dann nur die TWIOut Funktion aufgerufen und die Werte damit ins I2C-EEprom geschrieben. Bei größeren Datenmengen verwenden wir inzwischen einen Cache zum Schreiben. Das hat bisher immer ohne Probleme funktioniert.
Nun ist es so, dass wenn der angesprochene Typ größer als ein Byte(z.B. word, longword, etc.) ist, d.h. der DeviceTreiber die UsrDevOut Routine mehrmals aufruft, entsteht zwischen den Schreibvorgängen im UsrDevOut ein TimeOut von ca. 100ms, indem die TWIClock auf GND liegt. Erst dann wird das nächste Byte geschrieben. Wenn ich in der UsrDevOut Prozedur anstatt des TWI den I2CPort nehme, funktioniert alles prächtig.
Gibt es im Falle des DeviceTreibers noch ein Problem mit der TWI? Oder muß ich noch etwas beachten?
Gruß Mario