Basti1204
27.10.2016, 21:52
Hallo zusammen,
ich brauche euere Hilfe, bin total verzweifelt.
Es geht um eine Auswertung auf einem Atxmega
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!
ich brauche euere Hilfe, bin total verzweifelt.
Es geht um eine Auswertung auf einem Atxmega
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!