Charly_cs
07.07.2007, 17:56
Hallo!
Sitz hier schon eine gute Weile und komme einfach nicht weiter. Folgendes Problem: Ich möchte den Mega8 in den Powerdown modus schicken. Das funktioniert wunderbar. Nach einem Tastendruck, soll er wieder in den Activemode gehen und nach 5 Sekunden wieder in den Powerdown Mode.
Ich schaffs nur lieder nicht ihn wieder in den Activemode zu bekommen.
Zwischen PORTD2(int0) und Masse hängt ein Taster.
Könnt ihr euch bitte meinen Code anschauen, ob da etwas falsch ist?
#define F_CPU 16000000
#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
int main(void)
{
int i;
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
DDRD &= ~(1<<PD2);
PORTD |= (1<<PD2);
//INT0 aktivieren, auf fallende Flanke reagieren
GIMSK |= (1 << INT0);
MCUCR |= (1 << ISC01);
MCUCR &= ~(1<<ISC00);
for(;;)
{
cli();
for(i=0;i<500; i++)
{
_delay_ms(10);
}
sei();
sleep_mode();
}
return 0;
}
ISR(INT0_vect)
{
}
Gruß
Charly
Sitz hier schon eine gute Weile und komme einfach nicht weiter. Folgendes Problem: Ich möchte den Mega8 in den Powerdown modus schicken. Das funktioniert wunderbar. Nach einem Tastendruck, soll er wieder in den Activemode gehen und nach 5 Sekunden wieder in den Powerdown Mode.
Ich schaffs nur lieder nicht ihn wieder in den Activemode zu bekommen.
Zwischen PORTD2(int0) und Masse hängt ein Taster.
Könnt ihr euch bitte meinen Code anschauen, ob da etwas falsch ist?
#define F_CPU 16000000
#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
int main(void)
{
int i;
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
DDRD &= ~(1<<PD2);
PORTD |= (1<<PD2);
//INT0 aktivieren, auf fallende Flanke reagieren
GIMSK |= (1 << INT0);
MCUCR |= (1 << ISC01);
MCUCR &= ~(1<<ISC00);
for(;;)
{
cli();
for(i=0;i<500; i++)
{
_delay_ms(10);
}
sei();
sleep_mode();
}
return 0;
}
ISR(INT0_vect)
{
}
Gruß
Charly