Forum: Mikrocontroller und Digitale Elektronik MSP430: Interrupt löst nicht aus


von Sandro G. (sandro_g)


Lesenswert?

Hallo,

ich habe an meinem MSP430F2122 an Port P1.0 einen Taster angehängt (zu 
GND), um den uP per Interrupt aufzuwecken und wieder schlafenzulegen. 
Allerdings wird der Breakpoint in der ISR nie ausgelöst.
Der Timer-Interrupt funktioniert aber.

Kann mir jemand helfen, den Fehler zu finden?

Der Port ist als Eingang mit dem eingebauten Pull-Up-Widerstand 
konfiguriert. Da dies der einzige Interrupt von P1 ist, entfällt die 
auswertung des Interruptvektors.

Den Taster habe ich überprüft, der funktioniert.
1
    // direction: 1=out
2
    P1DIR = 0x0C;   // P1.2 and P1.3 are outputs, the rest inputs
3
    
4
    // out signal: 1=high (or pullup, if REN=1)
5
    P1OUT = 0xF3;
6
    
7
    // resistor: 1=pullup/-down resistor enabled (see OUT)
8
    P1REN = 0xF3;
9
    
10
    // interrupt
11
    P1IE = 0x01;    // enable interrupt for P1.0 (On/Off button)...
12
    P1IES = 0x01;   // ...on high-to-low transition
13
    
14
    // special function selection
15
    P1SEL = 0x0C;
16
17
18
19
// P1 ISR (On/Off Button)
20
#pragma vector = 0x04
21
__interrupt void OnOffButton(void)
22
{
23
    // blah...
24
    __NOP();
25
    return;
26
}

von Sandro G. (sandro_g)


Lesenswert?

Soso, wenn ich den Pullup-Widerstand ausschalte dann gehts.
Allerdings etwas übersensibel: Schon das berühren der Beinchen des 
Tasters genügt...

von Sandro G. (sandro_g)


Lesenswert?

Gefunden! Eine andere Funktion hat aus dem Pull-Up einen Pull-Down 
gemacht... Ich verwende nun trotzdem einen dedizierten Pull-Up; zusammen 
mit einem Kondensator, um das Prellen des Tasters zu unterdrücken.

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.