Hi Leute,
ich hab gerade ein kleines Problem.
Und zwar zeigt mein ADC immer was an obwohl er in der Luft hängt, auch
wenn ich eine Spannung anleg wandelt der nichts um. Ich kann mir das
nicht erklären, ich meine vorgestern ging das mit dem Code noch
einwandfrei.
Vll. sieht einer von euch den Fehler, meiner nicht geschulten Meinung
nach passt das so.
1 | #include <msp430x14x.h>
|
2 | #include <math.h>
|
3 | float sum;
|
4 | unsigned int i=0;
|
5 | unsigned int j=0;
|
6 | float RMS;
|
7 |
|
8 | void main(void)
|
9 | {
|
10 | WDTCTL = WDTPW + WDTHOLD; // Stop WDT
|
11 | P4DIR |= 0x0F; // P4.0 output
|
12 | P4OUT=0; //Reset Outputs
|
13 | CCTL0 = CCIE; // CCR0 interrupt enabled
|
14 | CCR0 = 3; //32768/4 =8192
|
15 | TACTL = TASSEL_1 + MC_1; // ACLK, upmode
|
16 | //Test
|
17 |
|
18 | _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
|
19 | }
|
20 |
|
21 | // Timer A0 interrupt service routine
|
22 | #pragma vector=TIMERA0_VECTOR
|
23 | __interrupt void Timer_A (void)
|
24 | {
|
25 | i++;
|
26 | P4OUT ^= 0x0F; // Toggle P1.0
|
27 | P6SEL |= 0x03; // Enable A/D channel A0
|
28 | ADC12CTL0 = ADC12ON+SHT0_0+MSC; // Turn on ADC12, set sampling time
|
29 | ADC12CTL1 = SHP+CONSEQ_0+CSTARTADD0; // Use sampling timer, set mode
|
30 | ADC12IE = 0x03; // Enable ADC12IFG.0
|
31 | ADC12MCTL0 = EOS+INCH_0+SREF_0;
|
32 | ADC12CTL0 |= ENC; // Enable conversions
|
33 | ADC12CTL0 |= ADC12SC; // Start conversion
|
34 |
|
35 | }
|
36 |
|
37 | #pragma vector=ADC12_VECTOR
|
38 | __interrupt void ADC12ISR (void)
|
39 | {
|
40 | long int temp=0;
|
41 | long int temp1=0;
|
42 | temp=(ADC12MEM0);
|
43 | temp=(ADC12MEM1);
|
44 | temp1=temp*temp;
|
45 | ADC12CTL0 &= ~ENC; // Enable conversions
|
46 | }
|