yes Spada / Mbed OS programme
Committer:
loicguibert
Date:
Fri Mar 08 08:28:14 2019 +0000
Revision:
5:0d9e292a9d06
Parent:
4:bfe306335065
Child:
11:dbc310addbf6
Libraries done, except Logger.cpp.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
loicguibert 4:bfe306335065 1 #include "NRFDevKit.h"
loicguibert 4:bfe306335065 2
loicguibert 4:bfe306335065 3 #define VBAT_MAX_IN_MV 3300
loicguibert 4:bfe306335065 4
loicguibert 4:bfe306335065 5 // constructor
loicguibert 4:bfe306335065 6 NRFDevKit::NRFDevKit(Logger& logger)
loicguibert 4:bfe306335065 7 : m_logger(logger),
loicguibert 4:bfe306335065 8 m_led1(LED1, 0) {
loicguibert 4:bfe306335065 9 }
loicguibert 4:bfe306335065 10
loicguibert 4:bfe306335065 11 void NRFDevKit::blink1(void) {
loicguibert 4:bfe306335065 12 m_led1 = !m_led1;
loicguibert 4:bfe306335065 13 }
loicguibert 4:bfe306335065 14
loicguibert 4:bfe306335065 15 uint8_t NRFDevKit::getBatteryLevel(void) {
loicguibert 4:bfe306335065 16 // Configure ADC
loicguibert 4:bfe306335065 17 NRF_ADC->CONFIG = (ADC_CONFIG_RES_8bit << ADC_CONFIG_RES_Pos) |
loicguibert 4:bfe306335065 18 (ADC_CONFIG_INPSEL_SupplyOneThirdPrescaling << ADC_CONFIG_INPSEL_Pos) |
loicguibert 4:bfe306335065 19 (ADC_CONFIG_REFSEL_VBG << ADC_CONFIG_REFSEL_Pos) |
loicguibert 4:bfe306335065 20 (ADC_CONFIG_PSEL_Disabled << ADC_CONFIG_PSEL_Pos) |
loicguibert 4:bfe306335065 21 (ADC_CONFIG_EXTREFSEL_None << ADC_CONFIG_EXTREFSEL_Pos);
loicguibert 4:bfe306335065 22
loicguibert 4:bfe306335065 23 NRF_ADC->EVENTS_END = 0;
loicguibert 4:bfe306335065 24 NRF_ADC->ENABLE = ADC_ENABLE_ENABLE_Enabled;
loicguibert 4:bfe306335065 25
loicguibert 4:bfe306335065 26 NRF_ADC->EVENTS_END = 0; // Stop any running conversions.
loicguibert 4:bfe306335065 27 NRF_ADC->TASKS_START = 1;
loicguibert 4:bfe306335065 28
loicguibert 4:bfe306335065 29 while (!NRF_ADC->EVENTS_END) {
loicguibert 4:bfe306335065 30 }
loicguibert 4:bfe306335065 31
loicguibert 4:bfe306335065 32 uint16_t vbg_in_mv = 1200;
loicguibert 4:bfe306335065 33 uint8_t adc_max = 255;
loicguibert 4:bfe306335065 34 uint16_t vbat_current_in_mv = (NRF_ADC->RESULT * 3 * vbg_in_mv) / adc_max;
loicguibert 4:bfe306335065 35
loicguibert 4:bfe306335065 36 NRF_ADC->EVENTS_END = 0;
loicguibert 4:bfe306335065 37 NRF_ADC->TASKS_STOP = 1;
loicguibert 4:bfe306335065 38
loicguibert 4:bfe306335065 39 return (uint8_t) ((vbat_current_in_mv * 100) / VBAT_MAX_IN_MV);
loicguibert 4:bfe306335065 40 }
loicguibert 4:bfe306335065 41
loicguibert 4:bfe306335065 42 PinName NRFDevKit::getSCL(void) {
loicguibert 5:0d9e292a9d06 43 return p6;
loicguibert 4:bfe306335065 44 }
loicguibert 4:bfe306335065 45
loicguibert 4:bfe306335065 46 PinName NRFDevKit::getSDA(void) {
loicguibert 5:0d9e292a9d06 47 return p5;
loicguibert 4:bfe306335065 48 }
loicguibert 4:bfe306335065 49
loicguibert 4:bfe306335065 50 PinName NRFDevKit::getDataRdy(void) {
loicguibert 5:0d9e292a9d06 51 return P0_15;
loicguibert 4:bfe306335065 52 }
loicguibert 4:bfe306335065 53
loicguibert 4:bfe306335065 54