Hallo zusammen,

ich brauche euere Hilfe, bin total verzweifelt.
Es geht um eine Auswertung auf einem Atxmega

Code:
void datenAbrufen(){			
	while ((PORTC_IN & (1<<PIN_DATA)) > 0) { //warten bis DATA low
	}
	_delay_us(30);
	int i = 0;
	long ergebnis1 = 0;
	PORTC_DIRSET |= (1<<PIN_SCK); //Wenn Daten vorhanden SCK auf Ausgang schalten 
	for(i=0; i<26; i++){ //MSB abrufen
		PORTC_OUTSET |= (1<<PIN_SCK); //Clock setzen         <--- wenn Breakpoint ab hier gesetzt und Einzelschritt werden die Ports richtig ausgewertet
		_delay_us(10);
		if (PORTC.IN & 0x04){
			ergebnis1 |= 1;
		}else{
			ergebnis1 |= 0;
		}
		ergebnis1 = (ergebnis1 << 1);
		_delay_us(1);
		PORTC_OUTCLR &=  (1<<PIN_SCK); //Clock rücksetzen
	}
	
	PORTC_OUTSET |= (1<<PIN_SCK); //Clock setzen
	PORTC_OUTCLR &=  (1<<PIN_SCK); //Clock rücksetzen
	PORTC_DIRCLR &= (1<<PIN_SCK); //SCK
	
	GewLOW = ergebnis1 & 0xFF;
	GewMIB = (ergebnis1 & 0xFF00) >> 8;
	GewMSB = (ergebnis1 & 0xFF0000) >> 16;	
}
mein Problem:
läuft der Code ohne Breakpoint durch bleibt ergebniss1 also der Portin immer 0,
wenn ich aber einen Breakpoint setze und im Einzelschritt durchlaufe funktioniert alle und ich sehe auch dass in den Registern 1 steht...
Hatt jemand eine Idee an was sowas liegen kann?

Schon mal danke im voraus!