some success, still errors

Revision:
102:780b4ecac614
Parent:
100:ec006d6f3cb6
Child:
108:b8d05666d95f
--- a/main.cpp	Wed Oct 23 18:00:04 2019 +0100
+++ b/main.cpp	Wed Nov 27 06:49:46 2019 +0000
@@ -6,28 +6,82 @@
 #include "mbed.h"
 #include "platform/mbed_thread.h"
 #include "stats_report.h"
+#include <AnalogIn.h>
+#include <AnalogOut.h>
 
-DigitalOut led1(LED1);
+AnalogOut v_src(GPIO0);
+AnalogIn therm(GPIO2);
+
+#define SLEEP_TIME                  50 // (msec)
+#define PRINT_AFTER_N_LOOPS         20
 
-#define SLEEP_TIME                  500 // (msec)
-#define PRINT_AFTER_N_LOOPS         20
+void ConfigureADC()
+{
+    GPIO_InitTypeDef gpioInit;
+ 
+    __GPIOC_CLK_ENABLE();
+    __ADC1_CLK_ENABLE();
+ 
+    gpioInit.Pin = GPIO_PIN_1;
+    gpioInit.Mode = GPIO_MODE_ANALOG;
+    gpioInit.Pull = GPIO_NOPULL;
+    HAL_GPIO_Init(GPIOC, &gpioInit);
+ 
+    HAL_NVIC_SetPriority(ADC1_IRQn, 0, 0);
+    HAL_NVIC_EnableIRQ(ADC1_IRQn);
+ 
+    ADC_ChannelConfTypeDef adcChannel;
+    
+    // error here
+    g_AdcHandle.Instance = ADC1;
+ 
+    g_AdcHandle.Init.ClockPrescaler = ADC1_CLOCKPRESCALER_PCLK_DIV2;
+    g_AdcHandle.Init.Resolution = ADC1_RESOLUTION_12B;
+    g_AdcHandle.Init.ScanConvMode = DISABLE;
+    g_AdcHandle.Init.ContinuousConvMode = ENABLE;
+    g_AdcHandle.Init.DiscontinuousConvMode = DISABLE;
+    g_AdcHandle.Init.NbrOfDiscConversion = 0;
+    g_AdcHandle.Init.ExternalTrigConvEdge = ADC1_EXTERNALTRIGCONVEDGE_NONE;
+    g_AdcHandle.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T1_CC1;
+    g_AdcHandle.Init.DataAlign = ADC1_DATAALIGN_RIGHT;
+    g_AdcHandle.Init.NbrOfConversion = 1;
+    g_AdcHandle.Init.DMAContinuousRequests = ENABLE;
+    g_AdcHandle.Init.EOCSelection = DISABLE;
+ 
+    HAL_ADC_Init(&g_AdcHandle);
+ 
+    adcChannel.Channel = ADC_CHANNEL_11;
+    adcChannel.Rank = 1;
+    adcChannel.SamplingTime = ADC_SAMPLETIME_480CYCLES;
+    adcChannel.Offset = 0;
+ 
+    if (HAL_ADC_ConfigChannel(&g_AdcHandle, &adcChannel) != HAL_OK)
+    {
+        asm("bkpt 255");
+    }
+}
 
 // main() runs in its own thread in the OS
 int main()
 {
+    GPIO_InitTypeDef GPIO_InitStructure; //Variable used to setup the GPIO pins
     SystemReport sys_state( SLEEP_TIME * PRINT_AFTER_N_LOOPS /* Loop delay time in ms */);
-
-    int count = 0;
+    v_src = 1.0; /* Going to use a digital output as V_src */
+    float max = 0; 
     while (true) {
-        // Blink LED and wait 0.5 seconds
-        led1 = !led1;
         thread_sleep_for(SLEEP_TIME);
-
-        if ((0 == count) || (PRINT_AFTER_N_LOOPS == count)) {
-            // Following the main thread wait, report on the current system status
-            sys_state.report_state();
-            count = 0;
+        v_src = 1.0;
+        float raw_analog_val = 0; 
+        
+        for(int i = 0; i < 10; i++) {
+            raw_analog_val += therm.read();
         }
-        ++count;
+        raw_analog_val /= 10;
+        printf("Raw Analog Percentage 10 read AVG %f\n", raw_analog_val); 
+        if (raw_analog_val > max) {
+            max = raw_analog_val;
+            printf("NEW MAX: %f\n", max);
+            thread_sleep_for(3000); 
+        }
     }
 }