Gast
#2325708
Hallo Leute, ich habe ein Problem mit dem Sleep mode meines XMega(128A1). Er soll auf den Interrupt des RTC reagieren und damit eine LED blinken lassen. Wenn ich das ohne den Sleep Mode mach, dann blinkt die LED anstandslos. Aber eigentlich soll er zwischen den Interrupts in einen Sleep Mode gehen. Und hier hakt es. der Interrupt wird genau einmal ausgeführt. Im Debug mode mit AVR Studio ändert der Zustand der LED sich zwar auch, aber nur, wenn den Programmablauf unterbreche und dann weiterlaufen lasse. Mein Code sieht momentan so aus: [code] int main (void) { //Initialisierungen sei(); //enable the global interrupt flag sleep_enable(); //enable the sleep state sleep_cpu(); //enter the sleep state //hier hab ich auch statt sleep_enable() und sleep_cpu() sleep_mode() versucht. Keine Änderung while (1); //infinite loop return 0; } [\code] Der Interrupt: [code] ISR(RTC_OVF_vect) { uint8_t interrupt_flag = 0x00; //interrupt flag to store the global interrupt flag sleep_disable(); //disable the sleep state if ((SREG & CPU_I_bm) != 0x00) { //if the global interrupt is set cli(); //disable the global interrupt interrupt_flag = 0xFF; //set the flag } led_toggle (LED_BLINKING); //toggle the leds if (interrupt_flag != 0x00) { //if the flag is set sei(); //enable the global interrupt } sleep_enable(); //enable the sleep state sleep_cpu(); //enter sleep state } [\code] Eigentlich wollte ich extended Standby verwenden, aber das hier funktioniert nicht mal mit idle. Weiß jemand woran es liegen könnte?