Hi,
folgendes Problem...
Ich möchte mein 24C128 EEPROM auslesen, und zu dem zweck muss ich logischerweise eine FOR-Schleife 16000 mal durchlaufen.
Code:
void read_eeprom(void){
volatile uint16_t address = 0;
uint8_t data[3];
uint8_t zero = 10;
//uint8_t wait = 0;
//zero = 0;
for(address = 0 ; address < 16000 ; address++){
data[0] = (address & (11111111 << 8)) >> 8;
data[1] = (address & 0xFF);
data[2] = 0;
uartsendchar(data[0]);
uartsendchar(data[1]);
zero = 10;
/*Kommentare*/
}
uartsendchar(68);
uartsendchar(111);
uartsendchar(110);
uartsendchar(101);
uartsendchar(33);
}
Da die Funktion nie funktionierte hab ich mir mal erlaubt, den funktionellen Code auszukommentieren, und mir nur die generierten Adressen anzusehen.
Die 16-Bit Variable address wird in 2 Bytes aufgespalten (high [data[0]], low [data[1]]). Diese werden dann via uartsendchar(); über UART ausgegeben.
Das funktioniert ganz klasse ... bis address = 2047 (7 , 255) dann springt meine generierte Addresse an 0 (0, 0). Das lustige ist aber, dass die Schleife exakt 16000 mal durchlaufen wird.
Frage: Woran liegts?
(Ich verwende -Os)
Ich danke euch für die Hilfe, ich hab nämlich z.Zt. schlicht keinen Plan mehr, an was es liegen könnte.
VLG Tobi
Lesezeichen