Forum: Mikrocontroller und Digitale Elektronik Attiny84-20PU INT0 Interrupt


von iGast (Gast)


Lesenswert?

Hallo,

möchte mit meinem Taster, Anschluss an INT0, ein Interrupt Routine 
auslösen. Der Taster zieht beim betätigen das Potenzial auf Masse, 
unbetätigt 5V. Habe schon alles versucht jedoch kann ich den Modus des 
folgenden Programms beim betätigen des Tasters nicht ändern.
1
#include <avr/io.h>
2
3
#include <avr/interrupt.h>
4
5
 
6
7
#define F_CPU 8000000UL
8
9
 
10
11
int modus=0;
12
13
 
14
15
 
16
17
 
18
19
 
20
21
 
22
23
int main(void)
24
25
{
26
27
    DDRA=0xff;
28
29
       DDRB=0x00;
30
31
       
32
33
       PORTA=0xf0;
34
35
       
36
37
       MCUCR=0x02;
38
39
       GIMSK=0x40;
40
41
       
42
43
       
44
45
       sei();
46
47
       
48
49
       
50
51
       
52
53
       while(1)
54
55
    {
56
57
        if (modus==0)
58
59
             {
60
61
                    PORTA=0xf0;
62
63
             }
64
65
             else
66
67
             {
68
69
                    PORTA=0x0f;
70
71
             }
72
73
             
74
75
             
76
77
             //TODO:: Please write your application code 
78
79
    }
80
81
       return 0;
82
83
}
84
85
 
86
87
ISR(EXT_INT0_vect)
88
89
{
90
91
       modus=1;
92
}

Der Interrupt soll bei fallender Flanke ausgelöst werden. Welches 
Register könnte falsch eingestellt sein? Ist der Interrupt vektor 
richtig?

von Frank S. (hobbyist)


Lesenswert?

Du hast es nicht ausdrücklich erwähnt, daher frage ich mal. Ist ein 
Pullup Widerstand vorhanden? Ansonsten verursacht der Taster lediglich 
einen Kurzschluss.

von iGast (Gast)


Lesenswert?

Hallo,

ja, ein Pull Up Widerstand ist vorhanden.

von Christian D. (chris83)


Lesenswert?

modus sollte volatile sein.

volatile int modus=0;

von msx (Gast)


Lesenswert?

Bevor Du merkst, dass die Entprellung fehlt, ein Beispiel für ATtiny25 
und PCINT0. Beitrag "Re: EIN-AUS mit Taster per Interrupt, ATtiny25 o.ä."

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.