Hallo,
ich nutze den ADC10 vom MSP430F2132. Er funktioniert auch prinzipiell
aber ehrlich gesagt wundere ich mich warum, denn das Register ADC10AEx
wird bei mir zu keinem einzigen Zeitpunkt gesetzt.
Wieso also funktioniert mein ADC?
1 | void init_adc(void)
|
2 | {
|
3 | ADC10CTL1 = INCH_4; // INCH4, Source: ADC10SC, no Clk. Divider, Source: ADC10OSC
|
4 |
|
5 | ADC10CTL0 = SREF_0 + ADC10SHT_2 + ADC10ON; // Reference: VCC, Sampling Time 16xADC_CLK, ADC on
|
6 | }
|
7 |
|
8 | uint16_t convert_adc(void)
|
9 | {
|
10 | uint16_t adc_value = 0;
|
11 |
|
12 | ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
|
13 |
|
14 | while (ADC10CTL1 & ADC10BUSY); // ADC10BUSY?
|
15 | adc_value = ADC10MEM;
|
16 |
|
17 | return adc_value;
|
18 | }
|
DANKE!