Hallo. Ich benutze einen MSP430 F2272 Ich hab ein riesen Problem mit meinem AD Wandler. An P3.7 hängt ein Poti. Wenn ich nun das erste mal das Programm durchlaufe bekomme ich einen Wert in das ADC10MEM. Drehe ich jedoch beim Poti ändert sich der Wert darin nicht. Auch nicht wenn ich das Programm beende, am Poti drehe und die Debbug Session wieder starte. ich bekomme immer den Wert ADC10MEM 0x03A4. Was ist an meinem Programm falsch? Danke im voraus. Lg Waldner Günther
1 | #include <msp430x22x2.h> |
2 | |
3 | |
4 | void wait(unsigned int i); // prototypen |
5 | int main(void); |
6 | |
7 | int main(void) |
8 | {
|
9 | WDTCTL = WDTPW + WDTHOLD; // watchdog aus |
10 | P1DIR=0xFF; // port 1 = output (8 LEDs) |
11 | P3DIR=0x00; // port 3 = input Ppotis) |
12 | P1SEL=0x00; // port 1 komplett als GPIO nutzen |
13 | P3SEL=0xC0; // P3.6 und 3.7 als A/D-Wandler benutzen, den Rest als GPIO |
14 | |
15 | P1IE=0x00; // interrupt ausmachen |
16 | |
17 | P1OUT=0xFF; // initial alle LEDs aus (low aktiv) |
18 | |
19 | ADC10CTL0 = ADC10ON+ADC10SHT_0+REFON+REF2_5V; // ADC10 anschalten, Sample Time auf 4*ADC10CLKs,referenz auf 2,5V setzen |
20 | ADC10CTL0 |= ENC; // jetzt anfangen ... |
21 | ADC10CTL1 = INCH_7+SHS_3+CONSEQ_2; // P3.7, TA2 trigger sample start , Repeat single channel Modus |
22 | ADC10AE0 |= BIT7; // P3.7 ADC10 option select |
23 | |
24 | for(;;) |
25 | { // infinite loop |
26 | ADC10CTL0 |= ADC10SC; // konvertierung durchfuehren |
27 | wait(10000); |
28 | if (ADC10MEM <= 0x0A4) |
29 | P1OUT=0x00; // alle LEDs an |
30 | else P1OUT=0xFF; // alle LEDs aus |
31 | }
|
32 | }
|
33 | |
34 | void wait(unsigned int i) // delay function |
35 | {
|
36 | unsigned int j; |
37 | for(j=0;j<i;j++); |
38 | }
|