so, jetzt habe ich rumprobiert.
Mit IDLE scheints mit einem normalen Msleep zu gehen:
Code:
#include "asuro.h"
#include <avr/interrupt.h>
#include <avr/sleep.h>
//------------------------------------------------------------------
int main(void)
{
Init();
StatusLED(OFF);
BackLED(ON,ON);
MotorDir(FWD,FWD);
MotorSpeed(200,0);
Msleep(5000);
set_sleep_mode ( SLEEP_MODE_IDLE );
for (int16_t i = 1; i <= 10; ++i)
{
BackLED(OFF,OFF);
StatusLED(YELLOW);
sleep_enable();
sleep_mode();
sleep_disable();
Msleep(500);
}
MotorSpeed(0,0);
StatusLED(RED);
while (1);
return 0;
}
das gleiche mit PWR_SAVE wie zu erwarten leider nicht: die BackLEDs gehen brav aus, die StatusLED wird gelb, der Motor dreht sich schneller und so bleibts.
Code:
...
set_sleep_mode ( SLEEP_MODE_PWR_SAVE );
ASSR = (1<<AS2);
...
Mit Interrupts gehts wahrscheinlich - hilft mir bitte jemand dabei? (Ich kapiers nicht!)
da gibt es noch eine Anleitung: ...WinAVR-20070525/doc/avr-libc/avr-libc-user-manual/group__avr__sleep.html
und da:http://www.mikrocontroller.net/articles/Sleep_Mode
Gruss
M.
Lesezeichen