Pull request for i.a. sensor buffer template

Dependencies:   BLE_API MPU6050 mbed nRF51822

Committer:
JustinAtAlten
Date:
Thu Nov 15 15:20:46 2018 +0000
Revision:
11:8c38e284e9f7
Parent:
0:7c12d0922052
Added readme.txt

Who changed what in which revision?

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