Hallo!
Mit dem ATtiny2313 steuere ich einen LED-Treiber mittels PWM (über Port
PB3) an und möchte, da die Schaltung mit 4 AA-Batterien versorgt wird,
den UC in den Power-Down-Mode versetzen sobald die LED über den Taster
an Pin PB0 ausgeschaltet wird.
Da ich noch selbst Anfänger bin, komme ich hier auch nach intesivem
Datenblattstudium nicht zurecht. PWM funktioniert aber einwandfrei.
Ich bitte um Hilfestellung! DANKE!!!
Hier der C-Code für das Testprogramm:
//************************************************** **
//* Testprogramm Sleep-Mode ATtiny 2313 *
//* Funktion: Taster = on --> LED = on *
//* Taster = off --> LED = off *
//* LED an PORTB3, Taster an PORTB0 *
//************************************************** **
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
//********************board************************* **
#define button_down (PINB & (1<<PIN0))
int main(void)
{
uint16_t taste=0;
ACSR |= (1<<ACD); //Analogcomparator OFF
DDRB |= (1 << DDB3); //led output enable
DDRB
|=((1<<DDB1)|(1<<DDB2)|(1<<DDB4)|(1<<DDB5)|(1<<DDB 6)|(1<<DDB7));//Register
B output enable
DDRD
|=((1<<DDB0)|(1<<DDB1)|(1<<DDB2)|(1<<DDB3)|(1<<DDB 4)|(1<<DDB5)|(1<<DDB6));//Register
B output enable
PORTD = 0xFF; // enable Pull-up
MCUCR = 0b00100000; // sleep-mode enable (SE-Bit = 1)
sei(); //enable Interrupts
while (1)
{
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_mode();
if (button_down)
{
PORTB = (1<<3); // LED ON
taste=1;
}
else
{
PORTB = (0<<3); // LED OFF
}
}
}
Lesezeichen