Test code for Grove Node BLE
Dependencies: BLE_API nRF51822
Fork of BLE_LoopbackUART by
battery.h
00001 00002 00003 #ifndef __BATTERY_H__ 00004 #define __BATTERY_H__ 00005 00006 #include "mbed.h" 00007 00008 class Battery { 00009 public: 00010 Battery(PinName pin) { 00011 uint32_t n = (uint32_t) pin; 00012 channel = 1 << (1 + n); 00013 } 00014 00015 float read() { 00016 uint32_t pre_enable_register = NRF_ADC->ENABLE; 00017 uint32_t pre_config_register = NRF_ADC->CONFIG; 00018 00019 00020 NRF_ADC->ENABLE = ADC_ENABLE_ENABLE_Enabled; 00021 NRF_ADC->CONFIG = (ADC_CONFIG_RES_10bit << ADC_CONFIG_RES_Pos) | 00022 (ADC_CONFIG_INPSEL_AnalogInputNoPrescaling << ADC_CONFIG_INPSEL_Pos) | 00023 (ADC_CONFIG_REFSEL_VBG << ADC_CONFIG_REFSEL_Pos) | 00024 (channel << ADC_CONFIG_PSEL_Pos) | 00025 (ADC_CONFIG_EXTREFSEL_None << ADC_CONFIG_EXTREFSEL_Pos); 00026 00027 NRF_ADC->TASKS_START = 1; 00028 while (((NRF_ADC->BUSY & ADC_BUSY_BUSY_Msk) >> ADC_BUSY_BUSY_Pos) == ADC_BUSY_BUSY_Busy) { 00029 } 00030 00031 uint16_t value = NRF_ADC->RESULT; 00032 00033 NRF_ADC->ENABLE = pre_enable_register; 00034 NRF_ADC->CONFIG = pre_config_register; 00035 00036 return (float)value * (1.0f / (float)0x3FF) * 1.2 * 12.2 / 2.2; 00037 } 00038 00039 private: 00040 uint32_t channel; 00041 }; 00042 00043 #endif // __BATTERY_H__
Generated on Tue Jul 12 2022 21:43:25 by 1.7.2