Internes EEPROM Kategorie: Verschiedenes (von Joerg - 16.04.2010 11:29) | ||
| ||
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) { } } | ||
Antwort schreiben Antworten: Re: Internes EEPROM (von PeterS - 18.04.2010 13:14) Re: Internes EEPROM (von Joerg - 19.04.2010 8:48) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum