Hallo Leute! Hab hier ein kleines Testprogramm für einen MSP430F1232! Leider funktioniert der Code irgendwie nicht in meinem System. Die Taster sind aktiv high, also mit einem 10k pull-down widerstand beschalten. gegen high geht dann nur mehr der Taster. Warum aber geht der MSP430 immer wieder in die if abfragen rein. in 5sek. geht er die abfrage ca. 5 mal durch, das kann doch nicht sein, wenn der taster auf low ist...! Ich versteh das nicht ganz, kann mir jemand helfen? bzw. hat jemand das gleiche prob. ? kann es an meiner Hardware liegen? mfg, Geri Hier noch der C-Code:
1 | #include "io430.h" |
2 | #include "in430.h" |
3 | |
4 | #define SSR_on P2OUT |= BIT4
|
5 | #define SSR_off P2OUT &= ~BIT4
|
6 | |
7 | //Variablen
|
8 | volatile char SSR_state=0; |
9 | |
10 | //prototyp
|
11 | void wait(int i); |
12 | |
13 | void main( void ) |
14 | {
|
15 | // Stop watchdog timer to prevent time out reset
|
16 | WDTCTL = WDTPW + WDTHOLD; |
17 | |
18 | //SSR Ausgang auf Output schalten
|
19 | P2DIR |= BIT4; |
20 | |
21 | // Taster als Eingänge definieren
|
22 | P1DIR &= ~BIT2; // Taster 1 |
23 | P1DIR &= ~BIT1; // Taster 2 |
24 | |
25 | SSR_on; |
26 | |
27 | while(1) |
28 | {
|
29 | |
30 | if((P1IN & BIT2)){ |
31 | wait(2000); |
32 | SSR_state=0; |
33 | }
|
34 | |
35 | if((P1IN & BIT1)){ |
36 | wait(2000); |
37 | SSR_state=1; |
38 | }
|
39 | |
40 | if(SSR_state){ |
41 | SSR_on; |
42 | }
|
43 | else{ |
44 | SSR_off; |
45 | }
|
46 | }//while |
47 | |
48 | }//main |
49 | |
50 | |
51 | void wait(int i) |
52 | {
|
53 | int k; |
54 | for(k=0;k<=i;i++); |
55 | }
|