This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

LPC21xx ADC Problem

I have just started writing a simple application for the LPC2129. I have a problem with polling the DONE bit of the ADC.

The ADC clock is 3.68 MHz. I set the ADC to be 10 bits, single shot. I start the ADC and then poll the done bit like this:-
while( !(ADDR & 0x80000000) );
The code is compiled using the Keil ARM tools (demo version). When I run the code on the simulator it works correctly, when I run it on the target it returns incorrect values.

The returned value does track the input voltage but is quantised to 0x0000, 0x6000, 0x8000 or 0xE000 (Only 4 discrete values).

If I single step or place a delay function before polling the DONE bit then the code runs correctly.

Am I doing something wrong or is there a problem with polling this bit?

Parents
  • "The ADC registers are defined like this ...

    I think that's correct."


    I do too, so a few more things:

    • There is ADC errata on this device. It wouldn't seem to apply to your situation, but without seeing how you are controlling the ADC, it's impossible say.
    • Double-check the ADC configuration and control used to initiate conversion.
    • Examine the assembly code to be certain there's nothing fishy going on.

Reply
  • "The ADC registers are defined like this ...

    I think that's correct."


    I do too, so a few more things:

    • There is ADC errata on this device. It wouldn't seem to apply to your situation, but without seeing how you are controlling the ADC, it's impossible say.
    • Double-check the ADC configuration and control used to initiate conversion.
    • Examine the assembly code to be certain there's nothing fishy going on.

Children
No data