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

Re: Heftiger Fehler im Modul eeprom Kategorie: Sonstige Hardware (von André H. - 13.04.2009 16:39)
Als Antwort auf Heftiger Fehler im Modul eeprom von Udo - 22.02.2009 15:18
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, C-Control II Station, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.1
> Hallo,
>
> im Modul eeprom befindet sich ein ziemlich heftiger Fehler.
> Mich wundert eigentlich, dass er noch nicht aufgefallen ist,
> da er den Umgang mit Longarrays praktisch unbenutzbar macht.

Mich wunderts auch. :-)


> Konkret enthält das Modul eeprom folgende Funktion:
>  ...
>      i2c.write((data[i]) shr (8*(3-i%4)));   <---- hier ist der Fehler
>

> ...
> Die markierte Zeile sollte daher durch folgende ersetzt
> werden:
>
>     i2c.write((data[i/4]) shr (8*(3-i%4)));

Danke für den Hinweis.
Ich werde in kürze eine neue Version von eeprom.c2 hochladen.
Allerdings habe ich u.a. die Funktion gleich etwas optimiert:
const lrshift[]=24,16,8,0;
function writelongarray(byte eepromaddr,int addr, long data[], long len) returns int
// Für "addr" sollten nur geradzahlige Werte übergeben werden!
{long i;
 if len < 1 return 0;
 if write(eepromaddr,addr)
  {
   len=len*4;
   for i=0 ... <len
    {
     if ((addr+i) % Pagewrite[eepromaddr])==0 and i
     {i2c.stop();
      if not write(eepromaddr,addr+i) {lasterr=0xB0000 or (i shr 2);return 0;}
     }
     i2c.write((data[i shr 2]) shr lrshift[i and 3]);
    }
   i2c.stop();
   return -1;
  }
 lasterr=0xB0000;
 return 0;
}


Es waren noch ein paar weitere kleine versteckte Bugs im Modul, welche
erst bei 512kBit EEProms auffallen.

Bei der Version 2.5, die ich hochladen werde gibt, es auch die neue Funktion init(),
wodurch die Pagegrö�e für jedes EEProm an unterschiedlichen Adressen
einzeln festgelegt werden.
Diese Funktion mu� dann zwingend aufgerufen werden. Der Parameter 0 für Pagesize
bewirkt dann ein Festlegen auf den Wert, welcher in der Konstante DefaultPagewrite
hinterlegt ist. (Bis V2.41 "Pagewrite")

MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: