Charles Andre
/
Register_level_analog
some success, still errors
main.cpp@102:780b4ecac614, 2019-11-27 (annotated)
- Committer:
- candre97
- Date:
- Wed Nov 27 06:49:46 2019 +0000
- Revision:
- 102:780b4ecac614
- Parent:
- 100:ec006d6f3cb6
- Child:
- 108:b8d05666d95f
still getting errors
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbed_official | 82:abf1b1785bd7 | 1 | /* mbed Microcontroller Library |
mbed_official | 82:abf1b1785bd7 | 2 | * Copyright (c) 2018 ARM Limited |
mbed_official | 82:abf1b1785bd7 | 3 | * SPDX-License-Identifier: Apache-2.0 |
mbed_official | 82:abf1b1785bd7 | 4 | */ |
mbed_official | 82:abf1b1785bd7 | 5 | |
Jonathan Austin |
0:2757d7abb7d9 | 6 | #include "mbed.h" |
mbed_official | 100:ec006d6f3cb6 | 7 | #include "platform/mbed_thread.h" |
mbed_official | 82:abf1b1785bd7 | 8 | #include "stats_report.h" |
candre97 | 102:780b4ecac614 | 9 | #include <AnalogIn.h> |
candre97 | 102:780b4ecac614 | 10 | #include <AnalogOut.h> |
Jonathan Austin |
0:2757d7abb7d9 | 11 | |
candre97 | 102:780b4ecac614 | 12 | AnalogOut v_src(GPIO0); |
candre97 | 102:780b4ecac614 | 13 | AnalogIn therm(GPIO2); |
candre97 | 102:780b4ecac614 | 14 | |
candre97 | 102:780b4ecac614 | 15 | #define SLEEP_TIME 50 // (msec) |
candre97 | 102:780b4ecac614 | 16 | #define PRINT_AFTER_N_LOOPS 20 |
Jonathan Austin |
0:2757d7abb7d9 | 17 | |
candre97 | 102:780b4ecac614 | 18 | void ConfigureADC() |
candre97 | 102:780b4ecac614 | 19 | { |
candre97 | 102:780b4ecac614 | 20 | GPIO_InitTypeDef gpioInit; |
candre97 | 102:780b4ecac614 | 21 | |
candre97 | 102:780b4ecac614 | 22 | __GPIOC_CLK_ENABLE(); |
candre97 | 102:780b4ecac614 | 23 | __ADC1_CLK_ENABLE(); |
candre97 | 102:780b4ecac614 | 24 | |
candre97 | 102:780b4ecac614 | 25 | gpioInit.Pin = GPIO_PIN_1; |
candre97 | 102:780b4ecac614 | 26 | gpioInit.Mode = GPIO_MODE_ANALOG; |
candre97 | 102:780b4ecac614 | 27 | gpioInit.Pull = GPIO_NOPULL; |
candre97 | 102:780b4ecac614 | 28 | HAL_GPIO_Init(GPIOC, &gpioInit); |
candre97 | 102:780b4ecac614 | 29 | |
candre97 | 102:780b4ecac614 | 30 | HAL_NVIC_SetPriority(ADC1_IRQn, 0, 0); |
candre97 | 102:780b4ecac614 | 31 | HAL_NVIC_EnableIRQ(ADC1_IRQn); |
candre97 | 102:780b4ecac614 | 32 | |
candre97 | 102:780b4ecac614 | 33 | ADC_ChannelConfTypeDef adcChannel; |
candre97 | 102:780b4ecac614 | 34 | |
candre97 | 102:780b4ecac614 | 35 | // error here |
candre97 | 102:780b4ecac614 | 36 | g_AdcHandle.Instance = ADC1; |
candre97 | 102:780b4ecac614 | 37 | |
candre97 | 102:780b4ecac614 | 38 | g_AdcHandle.Init.ClockPrescaler = ADC1_CLOCKPRESCALER_PCLK_DIV2; |
candre97 | 102:780b4ecac614 | 39 | g_AdcHandle.Init.Resolution = ADC1_RESOLUTION_12B; |
candre97 | 102:780b4ecac614 | 40 | g_AdcHandle.Init.ScanConvMode = DISABLE; |
candre97 | 102:780b4ecac614 | 41 | g_AdcHandle.Init.ContinuousConvMode = ENABLE; |
candre97 | 102:780b4ecac614 | 42 | g_AdcHandle.Init.DiscontinuousConvMode = DISABLE; |
candre97 | 102:780b4ecac614 | 43 | g_AdcHandle.Init.NbrOfDiscConversion = 0; |
candre97 | 102:780b4ecac614 | 44 | g_AdcHandle.Init.ExternalTrigConvEdge = ADC1_EXTERNALTRIGCONVEDGE_NONE; |
candre97 | 102:780b4ecac614 | 45 | g_AdcHandle.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T1_CC1; |
candre97 | 102:780b4ecac614 | 46 | g_AdcHandle.Init.DataAlign = ADC1_DATAALIGN_RIGHT; |
candre97 | 102:780b4ecac614 | 47 | g_AdcHandle.Init.NbrOfConversion = 1; |
candre97 | 102:780b4ecac614 | 48 | g_AdcHandle.Init.DMAContinuousRequests = ENABLE; |
candre97 | 102:780b4ecac614 | 49 | g_AdcHandle.Init.EOCSelection = DISABLE; |
candre97 | 102:780b4ecac614 | 50 | |
candre97 | 102:780b4ecac614 | 51 | HAL_ADC_Init(&g_AdcHandle); |
candre97 | 102:780b4ecac614 | 52 | |
candre97 | 102:780b4ecac614 | 53 | adcChannel.Channel = ADC_CHANNEL_11; |
candre97 | 102:780b4ecac614 | 54 | adcChannel.Rank = 1; |
candre97 | 102:780b4ecac614 | 55 | adcChannel.SamplingTime = ADC_SAMPLETIME_480CYCLES; |
candre97 | 102:780b4ecac614 | 56 | adcChannel.Offset = 0; |
candre97 | 102:780b4ecac614 | 57 | |
candre97 | 102:780b4ecac614 | 58 | if (HAL_ADC_ConfigChannel(&g_AdcHandle, &adcChannel) != HAL_OK) |
candre97 | 102:780b4ecac614 | 59 | { |
candre97 | 102:780b4ecac614 | 60 | asm("bkpt 255"); |
candre97 | 102:780b4ecac614 | 61 | } |
candre97 | 102:780b4ecac614 | 62 | } |
mbed_official | 88:bea4f2daa48c | 63 | |
Jonathan Austin |
1:846c97078558 | 64 | // main() runs in its own thread in the OS |
mbed_official | 82:abf1b1785bd7 | 65 | int main() |
mbed_official | 82:abf1b1785bd7 | 66 | { |
candre97 | 102:780b4ecac614 | 67 | GPIO_InitTypeDef GPIO_InitStructure; //Variable used to setup the GPIO pins |
mbed_official | 88:bea4f2daa48c | 68 | SystemReport sys_state( SLEEP_TIME * PRINT_AFTER_N_LOOPS /* Loop delay time in ms */); |
candre97 | 102:780b4ecac614 | 69 | v_src = 1.0; /* Going to use a digital output as V_src */ |
candre97 | 102:780b4ecac614 | 70 | float max = 0; |
Jonathan Austin |
0:2757d7abb7d9 | 71 | while (true) { |
mbed_official | 100:ec006d6f3cb6 | 72 | thread_sleep_for(SLEEP_TIME); |
candre97 | 102:780b4ecac614 | 73 | v_src = 1.0; |
candre97 | 102:780b4ecac614 | 74 | float raw_analog_val = 0; |
candre97 | 102:780b4ecac614 | 75 | |
candre97 | 102:780b4ecac614 | 76 | for(int i = 0; i < 10; i++) { |
candre97 | 102:780b4ecac614 | 77 | raw_analog_val += therm.read(); |
mbed_official | 88:bea4f2daa48c | 78 | } |
candre97 | 102:780b4ecac614 | 79 | raw_analog_val /= 10; |
candre97 | 102:780b4ecac614 | 80 | printf("Raw Analog Percentage 10 read AVG %f\n", raw_analog_val); |
candre97 | 102:780b4ecac614 | 81 | if (raw_analog_val > max) { |
candre97 | 102:780b4ecac614 | 82 | max = raw_analog_val; |
candre97 | 102:780b4ecac614 | 83 | printf("NEW MAX: %f\n", max); |
candre97 | 102:780b4ecac614 | 84 | thread_sleep_for(3000); |
candre97 | 102:780b4ecac614 | 85 | } |
Jonathan Austin |
0:2757d7abb7d9 | 86 | } |
Jonathan Austin |
0:2757d7abb7d9 | 87 | } |