Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > Hallo, > > ich habe mit einem Testprogramm die Zugriffzeiten auf das interne EEPROM gemessen. > Dabei ist mir aufgefallen, das ich bei einem wechseln der Daten eine um den > Faktor 100 erhöhte Zugriffzeit habe. > > Sind z.B. in dem EEPROM bereits Nullen und ich schreibe erneut Nullen herein, > dann benötige ich ca. 330ms für 4000 Werte. > Bei einem Wechsel von 0x00 auf 0xFF oder von 0xFF auf 0x00 benötige ich hingegen ca. 33000ms. > > > Lässt sich diese hohe Differenz erklären? > Oder liest der Treiber die Daten vorher aus und schreibt nur bei einer Veränderung neu? > > Grüße Jörg > > > #define LF 0x0A > #define CR 0x0D > #define SPACE 0x20 > > > > /* > Ausführungszeiten > Time 32 * 10ms > Time 33 * 10ms > Time 3338 * 10ms > Time 33 * 10ms > Time 3339 * 10ms > Time 3339 * 10ms > Time 34 * 10ms > Time 33 * 10ms > */ > > > > void main(void) > { > word counter; > word pos; > word time; > > > > > > Timer_TickCount(); > for(pos = 2; pos <= 4000; pos++) > { > EEPROM_Write(pos,0); > } > time=Timer_TickCount(); > Msg_WriteText("Time "); > Msg_WriteWord(time); > Msg_WriteChar(CR); > > > Timer_TickCount(); > for(pos = 2; pos <= 4000; pos++) > { > EEPROM_Write(pos,0); > } > time=Timer_TickCount(); > Msg_WriteText("Time "); > Msg_WriteWord(time); > Msg_WriteChar(CR); > > > > Timer_TickCount(); > for(pos = 2; pos <= 4000; pos++) > { > EEPROM_Write(pos,0xFF); > } > time=Timer_TickCount(); > Msg_WriteText("Time "); > Msg_WriteWord(time); > Msg_WriteChar(CR); > > > Timer_TickCount(); > for(pos = 2; pos <= 4000; pos++) > { > EEPROM_Write(pos,0xFF); > } > time=Timer_TickCount(); > Msg_WriteText("Time "); > Msg_WriteWord(time); > Msg_WriteChar(CR); > > > Timer_TickCount(); > for(pos = 2; pos <= 4000; pos++) > { > EEPROM_Write(pos,0x0F); > } > time=Timer_TickCount(); > Msg_WriteText("Time "); > Msg_WriteWord(time); > Msg_WriteChar(CR); > > > Timer_TickCount(); > for(pos = 2; pos <= 4000; pos++) > { > EEPROM_Write(pos,0); > } > time=Timer_TickCount(); > Msg_WriteText("Time "); > Msg_WriteWord(time); > Msg_WriteChar(CR); > > > Timer_TickCount(); > for(pos = 2; pos <= 4000; pos++) > { > EEPROM_Write(pos,0); > } > time=Timer_TickCount(); > Msg_WriteText("Time "); > Msg_WriteWord(time); > Msg_WriteChar(CR); > > > Timer_TickCount(); > for(pos = 2; pos <= 4000; pos++) > { > EEPROM_Write(pos,0); > } > time=Timer_TickCount(); > Msg_WriteText("Time "); > Msg_WriteWord(time); > Msg_WriteChar(CR); > > > > while(true) > { > } > } > >