Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: WebSocketClient WiflyInterface mbed messages
Fork of BatteryModelTester by
source/ADC.cpp
- Committer:
- defrost
- Date:
- 2016-10-04
- Revision:
- 2:7abdaa5a9209
- Parent:
- 1:4403f2ed1c1f
- Child:
- 3:f20e114eb2ee
File content as of revision 2:7abdaa5a9209:
#include "ADC.h"
#include "globals.h"
#include "mbed.h"
//#define DEBUG
#define INFOMESSAGES
#define WARNMESSAGES
#define ERRMESSAGES
#define FUNCNAME "ADC"
#include "messages.h"
void ConfigureADC(void){
unsigned int value;
// ensure power is turned on
// Grabbed from lines 54-57 of analogin_api.c
// This turns on the clock to Ports A, B, and C
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOBEN | RCC_AHB1ENR_GPIOCEN;
// This turns on the clock to the ADC:
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
// Turn on the ADC:
value = ADC_CR2_ADON;
ADC1->CR2 = value;
wait_us(100);
// Set the EOC flag at the end of every regular conversion:
ADC1->CR2 |= ADC_CR2_EOCS;
// Turn on the internal temperature sensor:
ADC->CCR |= ADC_CCR_TSVREFE;
// Set the first (and only channel) to convert to CH16, the internal temperature sensor:
ADC1->SQR3 |= ADC_SQR3_SQ1_4;
// Set the sample numbers (making this bigger samples more slowly):
ADC1->SMPR2 = ADC_SMPR1_SMP16_1 | ADC_SMPR1_SMP16_2; // Set for 144 ADC clock cycles
ADC1->SMPR2 = ADC_SMPR1_SMP18_1 | ADC_SMPR1_SMP18_2; // Set for 144 ADC clock cycles
INFO("ADC configuration complete!");
DBG("ADC Registers:\n\r");
DBG("The SR Register reads: %d\n\r", ADC1->SR);
DBG("The CR1 Register reads: %d\n\r", ADC1->CR1);
DBG("The CR2 Register reads: %d\n\r", ADC1->CR2);
DBG("The JSQR Register reads: %d\n\r", ADC1->JSQR);
return;
}
