diff --git a/src/hal/bk7231/hal_adc_bk7231.c b/src/hal/bk7231/hal_adc_bk7231.c new file mode 100644 index 000000000..03e0c574d --- /dev/null +++ b/src/hal/bk7231/hal_adc_bk7231.c @@ -0,0 +1,10 @@ +#include "../hal_adc.h" + +void HAL_ADC_Init(int pinNumber) { + +} +int HAL_ADC_Read(int pinNumber) { + // TODO + return 123; +} + diff --git a/src/hal/bl602/hal_adc_bl602.c b/src/hal/bl602/hal_adc_bl602.c new file mode 100644 index 000000000..52be49f19 --- /dev/null +++ b/src/hal/bl602/hal_adc_bl602.c @@ -0,0 +1,16 @@ +#ifdef PLATFORM_BL602 + + +#include "../hal_adc.h" + +void HAL_ADC_Init(int pinNumber) { + +} +int HAL_ADC_Read(int pinNumber) { + // TODO + return 123; +} + +#endif // PLATFORM_BL602 + + diff --git a/src/hal/hal_adc.h b/src/hal/hal_adc.h new file mode 100644 index 000000000..662bc6ce6 --- /dev/null +++ b/src/hal/hal_adc.h @@ -0,0 +1,6 @@ + + + +void HAL_ADC_Init(int pinNumber); +int HAL_ADC_Read(int pinNumber); + diff --git a/src/hal/xr809/hal_adc_xr809.c b/src/hal/xr809/hal_adc_xr809.c new file mode 100644 index 000000000..6850375a7 --- /dev/null +++ b/src/hal/xr809/hal_adc_xr809.c @@ -0,0 +1,15 @@ +#ifdef PLATFORM_XR809 + +#include "../hal_adc.h" + +void HAL_ADC_Init(int pinNumber) { + +} +int HAL_ADC_Read(int pinNumber) { + // TODO + return 123; +} + + +#endif // PLATFORM_XR809 + diff --git a/src/httpserver/new_http.c b/src/httpserver/new_http.c index 725baabcc..2635337ec 100644 --- a/src/httpserver/new_http.c +++ b/src/httpserver/new_http.c @@ -245,6 +245,7 @@ const char *htmlPinRoleNames[] = { "BL0937 SEL", "BL0937 CF", "BL0937 CF1", + "ADC", "e", "e", }; diff --git a/src/new_pins.c b/src/new_pins.c index cdde0e335..fba206c68 100644 --- a/src/new_pins.c +++ b/src/new_pins.c @@ -14,6 +14,7 @@ #include "driver/drv_public.h" #include "hal/hal_flashVars.h" #include "hal/hal_pins.h" +#include "hal/hal_adc.h" //According to your need to modify the constants. @@ -325,6 +326,9 @@ void PIN_SetPinRoleForPinIndex(int index, int role) { HAL_PIN_PWM_Stop(index); } break; + case IOR_ADC: + // TODO: disable? + break; default: break; @@ -401,6 +405,10 @@ void PIN_SetPinRoleForPinIndex(int index, int role) { HAL_PIN_Setup_Output(index); } break; + case IOR_ADC: + // init ADC for given pin + HAL_ADC_Init(index); + break; case IOR_PWM: { int channelIndex; @@ -662,6 +670,10 @@ int CHANNEL_GetRoleForOutputChannel(int ch){ #define EVENT_CB(ev) if(handle->cb[ev])handle->cb[ev]((pinButton_s*)handle) #define PIN_TMR_DURATION 5 +#define PIN_TMR_LOOPS_PER_SECOND (1000/PIN_TMR_DURATION) +#define ADC_SAMPLING_TICK_COUNT PIN_TMR_LOOPS_PER_SECOND + +static int g_next_adc_loop = 0; void PIN_Input_Handler(int pinIndex) { @@ -819,6 +831,20 @@ void PIN_ticks(void *param) } } + g_next_adc_loop++; + if(g_next_adc_loop == ADC_SAMPLING_TICK_COUNT) { + g_next_adc_loop = 0; + + for(i = 0; i < PLATFORM_GPIO_MAX; i++) { + if(g_cfg.pins.roles[i] == IOR_ADC) { + int value; + + value = HAL_ADC_Read(i); + + CHANNEL_Set(g_cfg.pins.channels[i],value, 0); + } + } + } for(i = 0; i < PLATFORM_GPIO_MAX; i++) { #if 1 diff --git a/src/new_pins.h b/src/new_pins.h index 1586da37a..94bb9460b 100644 --- a/src/new_pins.h +++ b/src/new_pins.h @@ -29,6 +29,7 @@ enum IORole { IOR_BL0937_SEL, IOR_BL0937_CF, IOR_BL0937_CF1, + IOR_ADC, IOR_Total_Options, };