Forum: Compiler & IDEs PCINT und SLEEP verwenden


von clecksi (Gast)


Lesenswert?

Hi,
Ich möchte auf meinem µC (ATtiny13) über 2 verschiedene Eingänge eine 
LED schalten. D.h. sobald einer der beiden Taster gedrückt wird soll 
eine Interruptroutine aufgerufen werden, die mir einen Merker setzt 
(zustand ein/aus), und anschließend (im mainloop) die LED anhand des 
Merkers ein bzw ausgeschaltet werden.
Dazu soll noch ein SleepMode (PowerDown) verwendet werden, der dann bei 
Tasterdruck beendet wird.

Dazu habe ich mehrere Fragen:

1.   Benötige ich für jeden Taster/Eingang eine ISR, und brauche ich 
auch das define?

1
#define PCINT2_vect      _VECTOR(2)
2
#define PCINT3_vect      _VECTOR(2)

Taster1:
1
ISR (PCINT2_vect)
2
{
3
     //code
4
}
Taster2:
1
ISR (PCINT3_vect)
2
{
3
     //code
4
}


2.   Kann ich die beiden ISR zusammenfassen zu einer (beide sollen das 
gleiche auslösen)?


3.   Wo ist es am besten den SleepMode zu aktivieren? Am Ende des 
mainloops, nach einer bestimmten Zeit,...?

mfg clecksi

von Peter D. (peda)


Lesenswert?

Die ISR zum Aufwachen läßt man am besten leer.
Das Tasten einlesen macht man nach alt bewährter Methode über den 
Timerinterrupt:

Beitrag "Re: AVR Sleep Mode / Knight Rider"

Von den Hardwaredefines laß mal die Finger weg, die stehen alle richtig 
in der <avr/io.h>.


Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.