I'm having a problem getting the ADC to perform conversions from a single input.
Steps taken:
- Apply a high DC input voltage
- Setup and enable ADC12 (see setting below)
- Set ENC & ADC12SC bits
- Wait for ADC12BUSY to go low
- Wait for ADC12IFG0 to go high (not interrupt driven)
- Read ADC12MEM0 (first read)
- Apply a low DC input voltage
- Set ENC & ADC12SC bits
- Wait for ADC12BUSY to go low
- Wait for ADC12IFG0 to go high (not interrupt driven)
- Read ADC12MEM0 (last read)
The first-read is good, the last-read is wrong. Is there something wrong with this approach? (What am I missing?)
Here are my settings:
ADC12CTL0 0x0C72 ADC12 Control 0 [Memory Mapped]
SHT1 0000 - SHT1_0 ADC12 Sample Hold 0 Select 0
SHT0 1100 - SHT0_12 ADC12 Sample Hold 0 Select 0
MSC 0 ADC12 Multiple SampleConversion
REF2_5V 1 ADC12 Ref 0:1.5V / 1:2.5V
REFON 1 ADC12 Reference on
ADC12ON 1 ADC12 On/enable
ADC12OVIE 0 ADC12 Overflow interrupt enable
ADC12TOVIE 0 ADC12 Timer Overflow interrupt enable
ENC 1 ADC12 Enable Conversion
ADC12SC 0 ADC12 Start Conversion
ADC12CTL1 0x0200 ADC12 Control 1 [Memory Mapped]
CSTARTADD 0000 - CSTARTADD_0 ADC12 Conversion Start Address 0
SHS 00 - SHS_0 ADC12 Sample/Hold Source 0
SHP 1 ADC12 Sample/Hold Pulse Mode
ISSH 0 ADC12 Invert Sample Hold Signal
ADC12DIV 000 - ADC12DIV_0 ADC12 Clock Divider Select 0
ADC12SSEL 00 - ADC12SSEL_0 ADC12 Clock Source Select 0
CONSEQ 00 - CONSEQ_0 ADC12 Conversion Sequence Select 0
ADC12BUSY 0 ADC12 Busy
ADC12IFG 0x0000 ADC12 Interrupt Flag [Memory Mapped]
ADC12IE 0x0000 ADC12 Interrupt Enable [Memory Mapped]
ADC12IV 0x0000 ADC12 Interrupt Vector Word [Memory Mapped]
ADC12MEM0 0x0A67 ADC12 Conversion Memory 0 [Memory Mapped]
ADC12MCTL0 0x54 ADC12 Memory Control 0 [Memory Mapped]
EOS 0 ADC12 End of Sequence
SREF 101 - SREF_5 ADC12 Select Reference Bit 0
INCH 0100 - INCH_4 ADC12 Input Channel Select Bit 0