Hallo, ich bin dabei mit den MSP430G2231 und seinen ADC10 mehrere Kanäle gleichzeitig zu messen. Mein Problem dabei ist das jetzt das die Messwerte in dem Array in dem ich die Ablege immer an unterschiedlichen stellen ist. Und das soll so ganz bestimmt nicht sein. Kann mir jemand sagen was bei mir falsch ist. Kann es sein das ich dem ADC nicht genug zeit lase? Danke schonmal für eure Hilfe.
1 | #include "msp430x20x2.h" |
2 | |
3 | void adc_init(void){ |
4 | static unsigned int res[11]; |
5 | |
6 | ADC10CTL0 &= ~ENC; |
7 | ADC10CTL0 = SREF_1 + REFON + ADC10ON + ADC10SHT_3 + ADC10IE + REF2_5V + MSC; |
8 | // use internal ref, turn on 2.5V ref, set samp time = 64 cycles REF2_5V
|
9 | |
10 | ADC10CTL1 = INCH_11 + CONSEQ_3 + ADC10DIV_1; |
11 | //Kanal auswählen; Art der Messung bestimmen;Teiler für ADC
|
12 | |
13 | ADC10DTC0 = ADC10CT; |
14 | ADC10DTC1 = 0x0B; |
15 | ADC10SA = (int)res; |
16 | ADC10CTL0 &= ~ADC10IFG; |
17 | ADC10CTL0 |= ENC + ADC10SC;; |
18 | }
|
19 | |
20 | #pragma vector=ADC10_VECTOR
|
21 | __interrupt void adc10_isr(void) { |
22 | |
23 | static unsigned int Toffset=11; |
24 | |
25 | unsigned long temp_V = ((ADC10MEM/ 1024)*2,5); //Ref 2,5 V Spannungsmessung |
26 | unsigned long temp_C=(((2.5*((float)ADC10MEM + Toffset))/1023)-0.986)/0.00355; //Temperatur berechnen |
27 | ADC10CTL0 &= ~ADC10IFG; |
28 | |
29 | |
30 | }
|