Hallo!
Ich versuche z.Zt. die Länge eines Impulses der an P2.0 (MSP430F1121)
anliegt zu messen. Ein Timer soll bei steigender Flanke gestartet
werden und bei fallender Flanke gestoppt werden.
Initialisiert habe ich den Port so:
1 | P2IE |= 0x01; // P2.0 int enabled
|
2 | P2IES |= 0x00; // P2.0 low/high edge
|
3 | P2IFG &= ~0x01; // P2.0 IFG clear
|
Meine ISR: (da steckt irgendwo der Fehler denke ich...)
1 | #pragma vector=PORT2_VECTOR
|
2 | __interrupt void Port_2(void)
|
3 | {
|
4 | // int bei low -> high
|
5 | if (P2IES & 0x00)
|
6 | {
|
7 | start_timer();
|
8 | // int bei high -> low
|
9 | P2IES &= ~0x01;
|
10 | }
|
11 | else
|
12 | {
|
13 | stop_timer();
|
14 | // int wieder bei low -> high
|
15 | P2IES |= 0x00;
|
16 | }
|
17 | P2IFG &= ~0x01;
|
18 | }
|
Findet ihr den Denkfehler? Bin für jede Hilfe dankbar