Hi,
folgendes Problem...
Ich möchte mein 24C128 EEPROM auslesen, und zu dem zweck muss ich logischerweise eine FOR-Schleife 16000 mal durchlaufen.
Da die Funktion nie funktionierte hab ich mir mal erlaubt, den funktionellen Code auszukommentieren, und mir nur die generierten Adressen anzusehen.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); }
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







Zitieren

Lesezeichen