Hallo Zusammen
Ich habe da ein Problem:
Ich möchte gerne alle 30 sekunden eine Funktion aufrufen.
Das blöde ist, sobald die 30 sekunden erreicht sind bekommt mein ATmeg128
ein Reset.
Wenn ich die Funktionen jedoch normal im main() aufrufe funktionieren sie einwandfrei.
Ich hoffe Ihr könnt mir helfen, hier mal der Code:
countSeconds ist ein int volatileCode:void init_Timer1(void){ TCCR1B|=(1<<WGM12)|(1<<CS12)|(1<<CS10); //set timer to CTC mode and prescalor to 1024 OCR1BH=0x0F; //set compare register B to 3907 = ~1second OCR1BL=0x43; TIMSK|=(1<<OCIE1B); //enable compare interrupt TCNT1H=0x00; //set the timer starting position to 0 TCNT1L=0x00; sei(); //enable Global interrupt } //***Compare match Interrupt Timer 1*** ISR(TIMER1_COMPB_vect){ countSeconds++; lock=0; if(countSeconds==30){ send_String_to_Display("ZZ",DispLine_3); wdt_reset(); //reset Watchdog getAddress(6,deviceAddress); tempTankT12=getTemperature(deviceAddress); wdt_reset(); //reset Watchdog countSeconds=0; } TCNT1H=0x00; //set the timer starting position to 0 TCNT1L=0x00; }
die zwei "Z" erscheinen dabei noch auf dem Display kurz danach wird der AVR wahrscheinlich vom Wachtdog zurück gesetzt, weil er wahrscheinlich in "getTemperature" stecken bleibt.
Vielen Dank für Eure Hilfe
Beni







Zitieren

Lesezeichen