Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[Problem] Using array to store read voltage level

Status
Not open for further replies.

VoltVolt

Junior Member level 1
Joined
Sep 15, 2013
Messages
15
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
124
Hi all,
I'm try to use array to store voltage read from ADC module...
But it seems some logical errors...
Desired result: voltage[0] = xxx, voltage[1] = xxx ,voltage[2] = xxx......

Code:
void main() {

    LCDinit();
    init_ADC();
    delay_ms(10); //idle period

    while (1) {

        int adc_eqn;
        float voltage[16];
        char strStore[16];

        for (int channel = 0; channel < 10; channel++) {
            if ((channel == 1) || (channel == 5) || (channel == 9)) {
                //AN0 CHANNEL
                ADCON0 = channel;
                for (int i = 0; i < 3; i++) {
                    //ADC start
                    GO_DONE = 1;

                    //wait for ADC to complete
                    while (GO_DONE) {
                        continue;
                    }

                    //retrieve adc equavalent value
                    adc_eqn = ((ADRESH << 8) | ADRESL);
                    voltage[i] = (float) (adc_eqn * 5.0 / 1023);

                    sprintf(strStore, "ADC %d %f V", i, voltage[i]);
                    LCDWrite(strStore, 10, 0, 0);

                    delay_ms(1000);
                }
            }
        }
    }
}

Thank you...View attachment Test Program.X.rarView attachment Test Program.X.rar
 


Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
float voltage[16];
char strStore[16];
int channel = 0;
 
void main(){
 
    LCDinit();
    init_ADC();
    delay_ms(10); //idle period
 
    while (1) {
 
        for (channel = 0; channel < 10; channel++){
            if ((channel == 1) || (channel == 5) || (channel == 9)){
                //AN0 CHANNEL
                ADCON0 = channel;
                for (int i = 0; i < 3; i++) {
                    //ADC start
                    GO_DONE = 1;
 
                    //wait for ADC to complete
                    while (GO_DONE);
 
                    //retrieve adc equavalent value
                    
                    voltage[i] = ((ADRESH << 8) | ADRESL) * 5.0 / 1023.0;
 
                    sprintf(strStore, "ADC %d %f V", i, voltage[i]);
                LCDWrite(strStore, 10, 0, 0);
 
                    delay_ms(1000);
                }
            }
        }
    }
}

 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top