First test with Seeed Tiny BLE streaming realtime data over BLE and USB Serial. This program is based in the "Tiny BLE Getting started" using the eMotion Driver 5.12 pulling the sensor values from the DMP.

Dependencies:   BLE_API eMPL_MPU6050 mbed nRF51822

battery.h

Committer:
valecapaldi
Date:
2018-09-20
Revision:
5:ab49c12aab25
Parent:
0:26da608265f8

File content as of revision 5:ab49c12aab25:



#ifndef __BATTERY_H__
#define __BATTERY_H__

#include "mbed.h"

class Battery {
public:
    Battery(PinName pin) {
        uint32_t n = (uint32_t) pin;
        channel = 1 << (1 + n);
    }
    
    float read() {
        uint32_t pre_enable_register = NRF_ADC->ENABLE;
        uint32_t pre_config_register = NRF_ADC->CONFIG;
        
        
        NRF_ADC->ENABLE = ADC_ENABLE_ENABLE_Enabled;
        NRF_ADC->CONFIG = (ADC_CONFIG_RES_10bit << ADC_CONFIG_RES_Pos) |
                          (ADC_CONFIG_INPSEL_AnalogInputNoPrescaling << ADC_CONFIG_INPSEL_Pos) |
                          (ADC_CONFIG_REFSEL_VBG << ADC_CONFIG_REFSEL_Pos) |
                          (channel << ADC_CONFIG_PSEL_Pos) |
                          (ADC_CONFIG_EXTREFSEL_None << ADC_CONFIG_EXTREFSEL_Pos);
                          
        NRF_ADC->TASKS_START = 1;
        while (((NRF_ADC->BUSY & ADC_BUSY_BUSY_Msk) >> ADC_BUSY_BUSY_Pos) == ADC_BUSY_BUSY_Busy) {
        } 
        
        uint16_t value = NRF_ADC->RESULT;
        
        NRF_ADC->ENABLE = pre_enable_register;
        NRF_ADC->CONFIG = pre_config_register;
        
        return (float)value * (1.0f / (float)0x3FF) * 1.2 * 12.2 / 2.2;    
    }
    
private:
    uint32_t channel;
};

#endif // __BATTERY_H__