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
Diff: source/ADC.cpp
- Revision:
- 1:4403f2ed1c1f
- Child:
- 2:7abdaa5a9209
diff -r c5607b31fb07 -r 4403f2ed1c1f source/ADC.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/source/ADC.cpp Tue Oct 04 13:19:19 2016 +0000
@@ -0,0 +1,74 @@
+
+#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);
+
+ // Turn on the internal temperature sensor:
+ ADC->CCR |= ADC_CCR_TSVREFE;
+
+ // *** Control Register 1: CR1 ***
+ value = 0;
+ // [8] Set the SCAN Mode bit, to convert all registers when trigered:
+ value |= ADC_CR1_SCAN;
+ // [5] Set the JEOCIE bit, to trigger an interrupt when conversion ends.
+ value |= ADC_CR1_JEOCIE;
+ // Set the register:
+ ADC1->CR1 = value;
+
+ // *** Control Register 2: CR2 ***
+ value = 0;
+ // [21:20] Set to 1, External trigger of injected channels triggered by positive edge.
+ value |= ADC_CR2_JEXTEN_0;
+ // Select the TIM1 TRGO and the external trigger:
+ value |= ADC_CR2_JEXTSEL_0;
+ // Set the register:
+ ADC1->CR2 |= value;
+
+ // *** ADC injected sequence register: JSQR ***
+ value = 0;
+ // [21:20] JL bits, set to 0 for 1 total conversions to take place
+ //
+ // [19:15] Convert CH16 first:
+ value |= ADC_JSQR_JSQ1_4;
+ // Save the register:
+ ADC1->JSQR = value;
+
+ // Set the sample numbers (making this bigger samples more slowly):
+ ADC1->SMPR2 = ADC_SMPR2_SMP1_1 | ADC_SMPR2_SMP1_2;
+
+
+ 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;
+}
\ No newline at end of file
