Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: src/adc.cpp
- Revision:
- 11:01dcfb29fbc4
- Parent:
- 9:816b9a4e4f21
- Child:
- 12:fd1fd1857628
--- a/src/adc.cpp Fri Dec 07 17:39:01 2018 +0000 +++ b/src/adc.cpp Fri Dec 07 20:42:41 2018 +0000 @@ -27,15 +27,18 @@ //------------------------------------------------------------------------------- #include "mbed.h" +#include "adc_defs.h" #include "adc.h" #include "all_io.h" -#include "globals.h" void initADC(void){ } -void getADCresults(void){ +/******************************************************************************* + getADCresults +*******************************************************************************/ +struct adcValues getADCresults(void){ unsigned int v48x = 0; unsigned int v24x = 0; @@ -44,6 +47,7 @@ unsigned int i24x = 0; unsigned int i12x = 0; + struct adcValues avals; unsigned int loopCounter = LOOP_COUNTER; for(unsigned int i=0;i<loopCounter;i++){ @@ -54,42 +58,83 @@ i24x = i24x + IIN24.read_u16(); i12x = i12x + IIN12.read_u16(); } - v48 = v48x/loopCounter; - v24 = v24x/loopCounter; - v12 = v12x/loopCounter; - i48 = i48x/loopCounter; - i24 = i24x/loopCounter; - i12 = i12x/loopCounter; + avals.v48 = v48x/loopCounter; + avals.v24 = v24x/loopCounter; + avals.v12 = v12x/loopCounter; + avals.i48 = i48x/loopCounter; + avals.i24 = i24x/loopCounter; + avals.i12 = i12x/loopCounter; + + return avals; } -void getADCvolts(void){ +/******************************************************************************* + getADCvolts +*******************************************************************************/ +struct adcValues getADCvolts(void){ unsigned int v48x = 0; unsigned int v24x = 0; unsigned int v12x = 0; + struct adcValues avals; + for(unsigned int i=0;i<100;i++){ v48x = v48x + VIN48.read_u16(); v24x = v24x + VIN24.read_u16(); v12x = v12x + VIN12.read_u16(); } - v48 = v48x/100; - v24 = v24x/100; - v12 = v12x/100; + avals.v48 = v48x/100; + avals.v24 = v24x/100; + avals.v12 = v12x/100; + + return avals; } -void getADCamps(void){ +/******************************************************************************* + getADCamps +*******************************************************************************/ +struct adcValues getADCamps(void){ unsigned int i48x = 0; unsigned int i24x = 0; unsigned int i12x = 0; + struct adcValues avals; + for(unsigned int i=0;i<100;i++){ i48x = i48x + IIN48.read_u16(); i24x = i24x + IIN24.read_u16(); i12x = i12x = IIN12.read_u16(); } - i48 = i48x/100; - i24 = i24x/100; - i12 = i12x/100; + avals.i48 = i48x/100; + avals.i24 = i24x/100; + avals.i12 = i12x/100; + + return avals; +} + +/******************************************************************************* + calcDisplayValues +*******************************************************************************/ +struct displayValues calcDisplayValues(struct adcValues avals){ + + struct displayValues dvals; + + if(!raw){ + dvals.v48f = VOLTAGE_48_FACTOR*avals.v48; + dvals.v24f = VOLTAGE_24_FACTOR*avals.v24; + dvals.v12f = VOLTAGE_12_FACTOR*avals.v12; + dvals.i48f = (avals.i48-CURRENT_48_OFFSET)/CURRENT_48_DIV_FACTOR; + dvals.i24f = (avals.i24-CURRENT_24_OFFSET)/CURRENT_24_DIV_FACTOR; + dvals.i12f = (avals.i12-CURRENT_12_OFFSET)/CURRENT_12_DIV_FACTOR; + }else{ + dvals.v48f = 1.0*avals.v48; + dvals.v24f = 1.0*avals.v24; + dvals.v12f = 1.0*avals.v12; + dvals.i48f = 1.0*avals.i48; + dvals.i24f = 1.0*avals.i24; + dvals.i12f = 1.0*avals.i12; + } + return dvals; } \ No newline at end of file