CSSE

Dependencies:   BLE_API eMPL_MPU6050 mbed nRF51822

Committer:
tmushie
Date:
Thu Jun 04 06:06:28 2015 +0000
Revision:
4:0bb9b3bf75ba
Parent:
0:fbd73a00ef9c
kk

Who changed what in which revision?

UserRevisionLine numberNew contents of line
flywind 0:fbd73a00ef9c 1
flywind 0:fbd73a00ef9c 2
flywind 0:fbd73a00ef9c 3 #ifndef __BATTERY_H__
flywind 0:fbd73a00ef9c 4 #define __BATTERY_H__
flywind 0:fbd73a00ef9c 5
flywind 0:fbd73a00ef9c 6 #include "mbed.h"
flywind 0:fbd73a00ef9c 7
flywind 0:fbd73a00ef9c 8 class Battery {
flywind 0:fbd73a00ef9c 9 public:
flywind 0:fbd73a00ef9c 10 Battery(PinName pin) {
flywind 0:fbd73a00ef9c 11 uint32_t n = (uint32_t) pin;
flywind 0:fbd73a00ef9c 12 channel = 1 << (1 + n);
flywind 0:fbd73a00ef9c 13 }
flywind 0:fbd73a00ef9c 14
flywind 0:fbd73a00ef9c 15 float read() {
flywind 0:fbd73a00ef9c 16 uint32_t pre_enable_register = NRF_ADC->ENABLE;
flywind 0:fbd73a00ef9c 17 uint32_t pre_config_register = NRF_ADC->CONFIG;
flywind 0:fbd73a00ef9c 18
flywind 0:fbd73a00ef9c 19
flywind 0:fbd73a00ef9c 20 NRF_ADC->ENABLE = ADC_ENABLE_ENABLE_Enabled;
flywind 0:fbd73a00ef9c 21 NRF_ADC->CONFIG = (ADC_CONFIG_RES_10bit << ADC_CONFIG_RES_Pos) |
flywind 0:fbd73a00ef9c 22 (ADC_CONFIG_INPSEL_AnalogInputNoPrescaling << ADC_CONFIG_INPSEL_Pos) |
flywind 0:fbd73a00ef9c 23 (ADC_CONFIG_REFSEL_VBG << ADC_CONFIG_REFSEL_Pos) |
flywind 0:fbd73a00ef9c 24 (channel << ADC_CONFIG_PSEL_Pos) |
flywind 0:fbd73a00ef9c 25 (ADC_CONFIG_EXTREFSEL_None << ADC_CONFIG_EXTREFSEL_Pos);
flywind 0:fbd73a00ef9c 26
flywind 0:fbd73a00ef9c 27 NRF_ADC->TASKS_START = 1;
flywind 0:fbd73a00ef9c 28 while (((NRF_ADC->BUSY & ADC_BUSY_BUSY_Msk) >> ADC_BUSY_BUSY_Pos) == ADC_BUSY_BUSY_Busy) {
flywind 0:fbd73a00ef9c 29 }
flywind 0:fbd73a00ef9c 30
flywind 0:fbd73a00ef9c 31 uint16_t value = NRF_ADC->RESULT;
flywind 0:fbd73a00ef9c 32
flywind 0:fbd73a00ef9c 33 NRF_ADC->ENABLE = pre_enable_register;
flywind 0:fbd73a00ef9c 34 NRF_ADC->CONFIG = pre_config_register;
flywind 0:fbd73a00ef9c 35
flywind 0:fbd73a00ef9c 36 return (float)value * (1.0f / (float)0x3FF) * 1.2 * 12.2 / 2.2;
flywind 0:fbd73a00ef9c 37 }
flywind 0:fbd73a00ef9c 38
flywind 0:fbd73a00ef9c 39 private:
flywind 0:fbd73a00ef9c 40 uint32_t channel;
flywind 0:fbd73a00ef9c 41 };
flywind 0:fbd73a00ef9c 42
flywind 0:fbd73a00ef9c 43 #endif // __BATTERY_H__