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

ADC help

Can someone tell me why this code doesnt do its job? I am new to uVision. The code should turn on the LED diodes as you turn the potentiometer. For example, if its on position 0V the first LED should be lit, and if its on position 3.3V the last one. Tnx in advance

#include <stdio.h>
#include <stdlib.h>
#include <LPC214x.h>

void delay(int i){
unsigned int j;
for(j=0; j < i; j++);
}

int main (void) {
unsigned int rez;
IODIR1 = 0x00FF0000; //diode postavljene kao output
AD0CR = 0x00200402; //ADC1: 10-bit AIN1 @ 3MHz

while(1){ AD0CR |= 0x01000000; // start AD konverzije

while ((AD0DR1 & 0x80000000) == 0); // cekanje da se konverzija zavrsi

AD0CR &= ~0x01000000; //stop AD konverzije rez = AD0DR1 & 0x0000FFC0; if(rez < 128) IOSET1 = 1 << 16; else if(rez > 128 && rez < 256) IOSET1 = 1 << 17; else if(rez > 256 && rez < 256+128) IOSET1 = 1 << 18; else if(rez > 256+128 && rez < 512) IOSET1 = 1 << 18; else if(rez > 512 && rez < 512+128) IOSET1 = 1 << 19; else if(rez > 512+128 && rez < 768) IOSET1 = 1 << 20; else if(rez > 768 && rez < 768+128) IOSET1 = 1 << 21; else if(rez > 896 && rez < 1024) IOSET1 = 1 << 22; else IOSET1 = 1 << 23;

delay(100000);
}

}

Parents Reply Children
  • Did you spend time with the manual, reading about the PINSELx registers?

    Dod you read through the full chapter about the ADC in the user manual?

    Did you specifically read the information in the paragraph 19.5.3 Accuracy vs. digital receiver?

    The NXP user manual is the #1 document to read through when using the processor.

    As I said earlier, I don't work with any LPC21xx chips. So I don't have a reason to invest the time to read up on all the details. I spend my time reading the documentation for the processors I use.

    But you have a big reason to invest the time with the LPC214x user manual.
    www.nxp.com/.../UM10139.pdf

  • It worked, even tough I dont quite get it. I add this code

    PINSEL1 = 0x01080000;        // Select DAC (AOUT) & AIN1
    

    to the source. Btw, I did read the manual many times...
    Tnx for your help, both!