fix nrf51822 i2c & spi conflict

Dependencies:   BLE_API eMPL_MPU6050 nRF51822

Fork of Seeed_Tiny_BLE_Flash by Darren Huang

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers battery.h Source File

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__