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