diff --git a/Makefile b/Makefile index 3d7e910ef731c963b9ecdc94dabfbdc99a8151f8..c2b71d716b0ee59e571c6cfbda37dac6ec39787f 100755 --- a/Makefile +++ b/Makefile @@ -13,6 +13,7 @@ TARGET_FILES+=src/scheduler.c TARGET_FILES+=src/stm32f1xx_hal_msp.c TARGET_FILES+=src/gpio.c TARGET_FILES+=src/adc_dma.c +TARGET_FILES+=src/thresholds.c TARGET_PROCESSOR=STM32F103CB HAL_PATH=$(STM32_HAL_PATH)/f1 diff --git a/include/ir_feet_conf.h b/include/ir_feet_conf.h index 80e834b9ee6f35e4beef770a1f05867d6117ce6c..05893eb9857e8b3fa95e2e556c9332dd31bb992c 100644 --- a/include/ir_feet_conf.h +++ b/include/ir_feet_conf.h @@ -8,6 +8,10 @@ /* ADC registers base address */ #define RAM_ADC_DMA_BASE_ADDRESS ((unsigned short int)0x0020) +/* threshold registers */ +#define EEPROM_THRESHOLDS_BASE_ADDRESS1 ((unsigned short int)0x0006) +#define EEPROM_THRESHOLDS_BASE_ADDRESS2 ((unsigned short int)0x0011) + #define EEPROM_NUM_VAR 32 #define DEFAULT_DEVICE_MODEL 0x000c @@ -17,4 +21,16 @@ #define DEFAULT_RETURN_DELAY 0x00 #define DEFAULT_RETURN_LEVEL 0x02 +#define DEFAULT_DOWN_LEFT_MIDDLE_THRES 0x0C00 +#define DEFAULT_DOWN_LEFT_REAR_THRES 0x0C00 +#define DEFAULT_DOWN_ANALOG_THRES 0x0C00 +#define DEFAULT_DOWN_LEFT_FRONT_THRES 0x0C00 +#define DEFAULT_DOWN_RIGHT_REAR_THRES 0x0C00 +#define DEFAULT_DOWN_RIGHT_MIDDLE_THRES 0x0C00 +#define DEFAULT_DOWN_RIGHT_FRONT_THRES 0x0C00 +#define DEFAULT_FRONT_LEFT_THRES 0x0C00 +#define DEFAULT_FRONT_RIGHT_THRES 0x0C00 +#define DEFAULT_FRONT_ANALOG_THRES 0x0C00 + + #endif diff --git a/include/thresholds.h b/include/thresholds.h new file mode 100644 index 0000000000000000000000000000000000000000..7744b4093e55219220b2c446f428f85e6a0d731f --- /dev/null +++ b/include/thresholds.h @@ -0,0 +1,10 @@ +#ifndef _THRESHOLDS_H +#define _THRESHOLDS_H + +#include "stm32f1xx.h" +#include "memory.h" + +uint8_t thres_init(TMemory *memory); +void thres_check(void); + +#endif diff --git a/include/thresholds_registers.h b/include/thresholds_registers.h new file mode 100644 index 0000000000000000000000000000000000000000..f5b042d0e59ce3446988bc5c07bd8e5d7e64f133 --- /dev/null +++ b/include/thresholds_registers.h @@ -0,0 +1,62 @@ +#ifndef _THRESHOLDS_REGISTERS_H +#define _THRESHOLDS_REGISTERS_H + +#include "ir_feet_conf.h" + +#ifndef EEPROM_THRESHOLDS_BASE_ADDRESS1 + #define EEPROM_THRESHOLDS_BASE_ADDRESS1 ((unsigned short int)0x0000) +#endif + +#ifndef EEPROM_THRESHOLDS_BASE_ADDRESS2 + #define EEPROM_THRESHOLDS_BASE_ADDRESS2 ((unsigned short int)0x0000) +#endif + +#define EEPROM_THRESHOLDS_LENGTH1 10 + +#define EEPROM_THRESHOLDS_LENGTH2 10 + +#define DOWN_LEFT_MIDDLE_THRES EEPROM_THRESHOLDS_BASE_ADDRESS1 +#define DOWN_LEFT_REAR_THRES (EEPROM_THRESHOLDS_BASE_ADDRESS1+2) +#define DOWN_ANALOG_THRES (EEPROM_THRESHOLDS_BASE_ADDRESS1+4) +#define DOWN_LEFT_FRONT_THRES (EEPROM_THRESHOLDS_BASE_ADDRESS1+6) +#define DOWN_RIGHT_REAR_THRES (EEPROM_THRESHOLDS_BASE_ADDRESS1+8) +#define DOWN_RIGHT_MIDDLE_THRES (EEPROM_THRESHOLDS_BASE_ADDRESS2) +#define DOWN_RIGHT_FRONT_THRES (EEPROM_THRESHOLDS_BASE_ADDRESS2+2) +#define FRONT_LEFT_THRES (EEPROM_THRESHOLDS_BASE_ADDRESS2+4) +#define FRONT_RIGHT_THRES (EEPROM_THRESHOLDS_BASE_ADDRESS2+6) +#define FRONT_ANALOG_THRES (EEPROM_THRESHOLDS_BASE_ADDRESS2+8) + +#ifndef DEFAULT_DOWN_LEFT_MIDDLE_THRES + #define DEFAULT_DOWN_LEFT_MIDDLE_THRES 0x0000 +#endif +#ifndef DEFAULT_DOWN_LEFT_REAR_THRES + #define DEFAULT_DOWN_LEFT_REAR_THRES 0x0000 +#endif +#ifndef DEFAULT_DOWN_ANALOG_THRES + #define DEFAULT_DOWN_ANALOG_THRES 0x0000 +#endif +#ifndef DEFAULT_DOWN_LEFT_FRONT_THRES + #define DEFAULT_DOWN_LEFT_FRONT_THRES 0x0000 +#endif +#ifndef DEFAULT_DOWN_RIGHT_REAR_THRES + #define DEFAULT_DOWN_RIGHT_REAR_THRES 0x0000 +#endif + +#ifndef DEFAULT_DOWN_RIGHT_MIDDLE_THRES + #define DEFAULT_DOWN_RIGHT_MIDDLE_THRES 0x0000 +#endif +#ifndef DEFAULT_DOWN_RIGHT_FRONT_THRES + #define DEFAULT_DOWN_RIGHT_FRONT_THRES 0x0000 +#endif +#ifndef DEFAULT_FRONT_LEFT_THRES + #define DEFAULT_FRONT_LEFT_THRES 0x0000 +#endif +#ifndef DEFAULT_FRONT_RIGHT_THRES + #define DEFAULT_FRONT_RIGHT_THRES 0x0000 +#endif +#ifndef DEFAULT_FRONT_ANALOG_THRES + #define DEFAULT_FRONT_ANALOG_THRES 0x0000 +#endif + +#endif + diff --git a/src/gpio.c b/src/gpio.c index 784ec57917b6239bfffaad8b83fcd0f0a6618862..4b4d7d3a2f28bdde407f891da6123de6f186f2dd 100644 --- a/src/gpio.c +++ b/src/gpio.c @@ -1,19 +1,19 @@ #include "gpio.h" #define DOWN_RIGHT_FRONT_GPIO_CLK __GPIOB_CLK_ENABLE() -#define DOWN_RIGHT_FRONT_PIN GPIO_PIN_8 +#define DOWN_RIGHT_FRONT_PIN GPIO_PIN_11 #define DOWN_RIGHT_FRONT_GPIO_PORT GPIOB #define DOWN_RIGHT_REAR_GPIO_CLK __GPIOB_CLK_ENABLE() -#define DOWN_RIGHT_REAR_PIN GPIO_PIN_9 +#define DOWN_RIGHT_REAR_PIN GPIO_PIN_10 #define DOWN_RIGHT_REAR_GPIO_PORT GPIOB #define DOWN_LEFT_REAR_GPIO_CLK __GPIOB_CLK_ENABLE() -#define DOWN_LEFT_REAR_PIN GPIO_PIN_7 +#define DOWN_LEFT_REAR_PIN GPIO_PIN_8 #define DOWN_LEFT_REAR_GPIO_PORT GPIOB #define DOWN_LEFT_MIDDLE_GPIO_CLK __GPIOB_CLK_ENABLE() -#define DOWN_LEFT_MIDDLE_PIN GPIO_PIN_11 +#define DOWN_LEFT_MIDDLE_PIN GPIO_PIN_9 #define DOWN_LEFT_MIDDLE_GPIO_PORT GPIOB #define DOWN_RIGHT_MIDDLE_GPIO_CLK __GPIOB_CLK_ENABLE() @@ -21,20 +21,20 @@ #define DOWN_RIGHT_MIDDLE_GPIO_PORT GPIOB #define DOWN_LEFT_FRONT_GPIO_CLK __GPIOB_CLK_ENABLE() -#define DOWN_LEFT_FRONT_PIN GPIO_PIN_10 +#define DOWN_LEFT_FRONT_PIN GPIO_PIN_7 #define DOWN_LEFT_FRONT_GPIO_PORT GPIOB -#define FRONT_LEFT_GPIO_CLK __GPIOC_CLK_ENABLE() -#define FRONT_LEFT_PIN GPIO_PIN_15 -#define FRONT_LEFT_GPIO_PORT GPIOC +#define FRONT_LEFT_GPIO_CLK __GPIOB_CLK_ENABLE() +#define FRONT_LEFT_PIN GPIO_PIN_14 +#define FRONT_LEFT_GPIO_PORT GPIOB #define FRONT_RIGHT_GPIO_CLK __GPIOB_CLK_ENABLE() -#define FRONT_RIGHT_PIN GPIO_PIN_14 +#define FRONT_RIGHT_PIN GPIO_PIN_13 #define FRONT_RIGHT_GPIO_PORT GPIOB -#define DOWN_ANALOG_GPIO_CLK __GPIOB_CLK_ENABLE() -#define DOWN_ANALOG_PIN GPIO_PIN_13 -#define DOWN_ANALOG_GPIO_PORT GPIOB +#define DOWN_ANALOG_GPIO_CLK __GPIOC_CLK_ENABLE() +#define DOWN_ANALOG_PIN GPIO_PIN_15 +#define DOWN_ANALOG_GPIO_PORT GPIOC #define FRONT_ANALOG_GPIO_CLK __GPIOB_CLK_ENABLE() #define FRONT_ANALOG_PIN GPIO_PIN_12 diff --git a/src/main.c b/src/main.c index d18bbe5b84868748545ba1622ea74f8b7e186385..fee7fa87176c8a59c52e0a0d813143bb1d613eeb 100755 --- a/src/main.c +++ b/src/main.c @@ -7,6 +7,7 @@ #include "scheduler.h" #include "gpio.h" #include "adc_dma.h" +#include "thresholds.h" TMemory ir_feet_memory; @@ -30,6 +31,8 @@ int main(void) ir_feet_time_init(); // initialize the dynamixel slave interface ir_feet_dyn_slave_init(&ir_feet_memory); + // initialize the thresholds module + thres_init(&ir_feet_memory); // initialize the Dynamixel RAM memory space ram_init(&ir_feet_memory); @@ -37,6 +40,7 @@ int main(void) while(1)/* main function does not return */ { + thres_check(); } } diff --git a/src/thresholds.c b/src/thresholds.c new file mode 100755 index 0000000000000000000000000000000000000000..de27f8db1113da78cf78c23dc3cc063d4c7bd69b --- /dev/null +++ b/src/thresholds.c @@ -0,0 +1,256 @@ +#include "thresholds.h" +#include "thresholds_registers.h" +#include "scheduler.h" +#include "adc_dma.h" +#include "gpio.h" +#include "ram.h" + +uint16_t thres_eeprom_data[] __attribute__ ((section (".eeprom")))={DEFAULT_DOWN_LEFT_MIDDLE_THRES&0xFF,DOWN_LEFT_MIDDLE_THRES, + (DEFAULT_DOWN_LEFT_MIDDLE_THRES>>8)&0xFF,DOWN_LEFT_MIDDLE_THRES+1, + DEFAULT_DOWN_LEFT_REAR_THRES&0xFF,DOWN_LEFT_REAR_THRES, + (DEFAULT_DOWN_LEFT_REAR_THRES>>8)&0xFF,DOWN_LEFT_REAR_THRES+1, + DEFAULT_DOWN_ANALOG_THRES&0xFF,DOWN_ANALOG_THRES, + (DEFAULT_DOWN_ANALOG_THRES>>8)&0xFF,DOWN_ANALOG_THRES+1, + DEFAULT_DOWN_LEFT_FRONT_THRES&0xFF,DOWN_LEFT_FRONT_THRES, + (DEFAULT_DOWN_LEFT_FRONT_THRES>>8)&0xFF,DOWN_LEFT_FRONT_THRES+1, + DEFAULT_DOWN_RIGHT_REAR_THRES&0xFF,DOWN_RIGHT_REAR_THRES, + (DEFAULT_DOWN_RIGHT_REAR_THRES>>8)&0xFF,DOWN_RIGHT_REAR_THRES+1, + DEFAULT_DOWN_RIGHT_MIDDLE_THRES&0xFF,DOWN_RIGHT_MIDDLE_THRES, + (DEFAULT_DOWN_RIGHT_MIDDLE_THRES>>8)&0xFF,DOWN_RIGHT_MIDDLE_THRES+1, + DEFAULT_DOWN_RIGHT_FRONT_THRES&0xFF,DOWN_RIGHT_FRONT_THRES, + (DEFAULT_DOWN_RIGHT_FRONT_THRES>>8)&0xFF,DOWN_RIGHT_FRONT_THRES+1, + DEFAULT_FRONT_LEFT_THRES&0xFF,FRONT_LEFT_THRES, + (DEFAULT_FRONT_LEFT_THRES>>8)&0xFF,FRONT_LEFT_THRES+1, + DEFAULT_FRONT_RIGHT_THRES&0xFF,FRONT_RIGHT_THRES, + (DEFAULT_FRONT_RIGHT_THRES>>8)&0xFF,FRONT_RIGHT_THRES+1, + DEFAULT_FRONT_ANALOG_THRES&0xFF,FRONT_ANALOG_THRES, + (DEFAULT_FRONT_ANALOG_THRES>>8)&0xFF,FRONT_ANALOG_THRES+1}; + +/* memory module */ +TMemModule thres_mem_module; +uint16_t thresholds[10]; + +// private functions +void thres_write_cmd(unsigned short int address,unsigned short int length,unsigned char *data) +{ + uint8_t *data_ptr; + + if(ram_in_window(DOWN_LEFT_MIDDLE_THRES,2,address,length)) + { + data_ptr=(uint8_t *)&thresholds[0]; + if(ram_in_range(DOWN_LEFT_MIDDLE_THRES,address,length)) + { + data_ptr[0]=data[DOWN_LEFT_MIDDLE_THRES-address]; + ram_data[DOWN_LEFT_MIDDLE_THRES]=data[DOWN_LEFT_MIDDLE_THRES-address]; + } + if(ram_in_range(DOWN_LEFT_MIDDLE_THRES+1,address,length)) + { + data_ptr[1]=data[DOWN_LEFT_MIDDLE_THRES+1-address]; + ram_data[DOWN_LEFT_MIDDLE_THRES+1]=data[DOWN_LEFT_MIDDLE_THRES+1-address]; + } + } + if(ram_in_window(DOWN_LEFT_REAR_THRES,2,address,length)) + { + data_ptr=(uint8_t *)&thresholds[1]; + if(ram_in_range(DOWN_LEFT_REAR_THRES,address,length)) + { + data_ptr[0]=data[DOWN_LEFT_REAR_THRES-address]; + ram_data[DOWN_LEFT_REAR_THRES]=data[DOWN_LEFT_REAR_THRES-address]; + } + if(ram_in_range(DOWN_LEFT_REAR_THRES+1,address,length)) + { + data_ptr[1]=data[DOWN_LEFT_REAR_THRES+1-address]; + ram_data[DOWN_LEFT_REAR_THRES+1]=data[DOWN_LEFT_REAR_THRES+1-address]; + } + } + if(ram_in_window(DOWN_ANALOG_THRES,2,address,length)) + { + data_ptr=(uint8_t *)&thresholds[2]; + if(ram_in_range(DOWN_ANALOG_THRES,address,length)) + { + data_ptr[0]=data[DOWN_ANALOG_THRES-address]; + ram_data[DOWN_ANALOG_THRES]=data[DOWN_ANALOG_THRES-address]; + } + if(ram_in_range(DOWN_ANALOG_THRES+1,address,length)) + { + data_ptr[1]=data[DOWN_ANALOG_THRES+1-address]; + ram_data[DOWN_ANALOG_THRES+1]=data[DOWN_ANALOG_THRES+1-address]; + } + } + if(ram_in_window(DOWN_LEFT_FRONT_THRES,2,address,length)) + { + data_ptr=(uint8_t *)&thresholds[3]; + if(ram_in_range(DOWN_LEFT_FRONT_THRES,address,length)) + { + data_ptr[0]=data[DOWN_LEFT_FRONT_THRES-address]; + ram_data[DOWN_LEFT_FRONT_THRES]=data[DOWN_LEFT_FRONT_THRES-address]; + } + if(ram_in_range(DOWN_LEFT_FRONT_THRES+1,address,length)) + { + data_ptr[1]=data[DOWN_LEFT_FRONT_THRES+1-address]; + ram_data[DOWN_LEFT_FRONT_THRES+1]=data[DOWN_LEFT_FRONT_THRES+1-address]; + } + } + if(ram_in_window(DOWN_RIGHT_REAR_THRES,2,address,length)) + { + data_ptr=(uint8_t *)&thresholds[4]; + if(ram_in_range(DOWN_RIGHT_REAR_THRES,address,length)) + { + data_ptr[0]=data[DOWN_RIGHT_REAR_THRES-address]; + ram_data[DOWN_RIGHT_REAR_THRES]=data[DOWN_RIGHT_REAR_THRES-address]; + } + if(ram_in_range(DOWN_RIGHT_REAR_THRES+1,address,length)) + { + data_ptr[1]=data[DOWN_RIGHT_REAR_THRES+1-address]; + ram_data[DOWN_RIGHT_REAR_THRES+1]=data[DOWN_RIGHT_REAR_THRES+1-address]; + } + } + if(ram_in_window(DOWN_RIGHT_MIDDLE_THRES,2,address,length)) + { + data_ptr=(uint8_t *)&thresholds[5]; + if(ram_in_range(DOWN_RIGHT_MIDDLE_THRES,address,length)) + { + data_ptr[0]=data[DOWN_RIGHT_MIDDLE_THRES-address]; + ram_data[DOWN_RIGHT_MIDDLE_THRES]=data[DOWN_RIGHT_MIDDLE_THRES-address]; + } + if(ram_in_range(DOWN_RIGHT_MIDDLE_THRES+1,address,length)) + { + data_ptr[1]=data[DOWN_RIGHT_MIDDLE_THRES+1-address]; + ram_data[DOWN_RIGHT_MIDDLE_THRES+1]=data[DOWN_RIGHT_MIDDLE_THRES+1-address]; + } + } + if(ram_in_window(DOWN_RIGHT_FRONT_THRES,2,address,length)) + { + data_ptr=(uint8_t *)&thresholds[6]; + if(ram_in_range(DOWN_RIGHT_FRONT_THRES,address,length)) + { + data_ptr[0]=data[DOWN_RIGHT_FRONT_THRES-address]; + ram_data[DOWN_RIGHT_FRONT_THRES]=data[DOWN_RIGHT_FRONT_THRES-address]; + } + if(ram_in_range(DOWN_RIGHT_FRONT_THRES+1,address,length)) + { + data_ptr[1]=data[DOWN_RIGHT_FRONT_THRES+1-address]; + ram_data[DOWN_RIGHT_FRONT_THRES+1]=data[DOWN_RIGHT_FRONT_THRES+1-address]; + } + } + if(ram_in_window(FRONT_LEFT_THRES,2,address,length)) + { + data_ptr=(uint8_t *)&thresholds[7]; + if(ram_in_range(FRONT_LEFT_THRES,address,length)) + { + data_ptr[0]=data[FRONT_LEFT_THRES-address]; + ram_data[FRONT_LEFT_THRES]=data[FRONT_LEFT_THRES-address]; + } + if(ram_in_range(FRONT_LEFT_THRES+1,address,length)) + { + data_ptr[1]=data[FRONT_LEFT_THRES+1-address]; + ram_data[FRONT_LEFT_THRES+1]=data[FRONT_LEFT_THRES+1-address]; + } + } + if(ram_in_window(FRONT_RIGHT_THRES,2,address,length)) + { + data_ptr=(uint8_t *)&thresholds[8]; + if(ram_in_range(FRONT_RIGHT_THRES,address,length)) + { + data_ptr[0]=data[FRONT_RIGHT_THRES-address]; + ram_data[FRONT_RIGHT_THRES]=data[FRONT_RIGHT_THRES-address]; + } + if(ram_in_range(FRONT_RIGHT_THRES+1,address,length)) + { + data_ptr[1]=data[FRONT_RIGHT_THRES+1-address]; + ram_data[FRONT_RIGHT_THRES+1]=data[FRONT_RIGHT_THRES+1-address]; + } + } + if(ram_in_window(FRONT_ANALOG_THRES,2,address,length)) + { + data_ptr=(uint8_t *)&thresholds[9]; + if(ram_in_range(FRONT_ANALOG_THRES,address,length)) + { + data_ptr[0]=data[FRONT_ANALOG_THRES-address]; + ram_data[FRONT_ANALOG_THRES]=data[FRONT_ANALOG_THRES-address]; + } + if(ram_in_range(FRONT_ANALOG_THRES+1,address,length)) + { + data_ptr[1]=data[FRONT_ANALOG_THRES+1-address]; + ram_data[FRONT_ANALOG_THRES+1]=data[FRONT_ANALOG_THRES+1-address]; + } + } +} + +void thres_read_cmd(unsigned short int address,unsigned short int length,unsigned char *data) +{ + ram_read_table(address,length,data); +} + +// public functions +uint8_t thres_init(TMemory *memory) +{ + /* initialize memory module */ + mem_module_init(&thres_mem_module); + thres_mem_module.write_cmd=thres_write_cmd; + thres_mem_module.read_cmd=thres_read_cmd; + if(!mem_module_add_eeprom_segment(&thres_mem_module,EEPROM_THRESHOLDS_BASE_ADDRESS1,EEPROM_THRESHOLDS_LENGTH1)) + return 0x00; + if(!mem_module_add_eeprom_segment(&thres_mem_module,EEPROM_THRESHOLDS_BASE_ADDRESS2,EEPROM_THRESHOLDS_LENGTH2)) + return 0x00; + if(!mem_add_module(memory,&thres_mem_module)) + return 0x00; + + return 0x01; +} + +void thres_check(void) +{ + uint16_t voltage; + + voltage=adc_get_voltage(DOWN_LEFT_MIDDLE_CH); + if(voltage>thresholds[0]) + gpio_set_led(DOWN_LEFT_MIDDLE); + else + gpio_clear_led(DOWN_LEFT_MIDDLE); + voltage=adc_get_voltage(DOWN_LEFT_REAR_CH); + if(voltage>thresholds[1]) + gpio_set_led(DOWN_LEFT_REAR); + else + gpio_clear_led(DOWN_LEFT_REAR); + voltage=adc_get_voltage(DOWN_ANALOG_CH); + if(voltage>thresholds[2]) + gpio_set_led(DOWN_ANALOG); + else + gpio_clear_led(DOWN_ANALOG); + voltage=adc_get_voltage(DOWN_LEFT_FRONT_CH); + if(voltage>thresholds[3]) + gpio_set_led(DOWN_LEFT_FRONT); + else + gpio_clear_led(DOWN_LEFT_FRONT); + voltage=adc_get_voltage(DOWN_RIGHT_REAR_CH); + if(voltage>thresholds[4]) + gpio_set_led(DOWN_RIGHT_REAR); + else + gpio_clear_led(DOWN_RIGHT_REAR); + voltage=adc_get_voltage(DOWN_RIGHT_MIDDLE_CH); + if(voltage>thresholds[5]) + gpio_set_led(DOWN_RIGHT_MIDDLE); + else + gpio_clear_led(DOWN_RIGHT_MIDDLE); + voltage=adc_get_voltage(DOWN_RIGHT_FRONT_CH); + if(voltage>thresholds[6]) + gpio_set_led(DOWN_RIGHT_FRONT); + else + gpio_clear_led(DOWN_RIGHT_FRONT); + voltage=adc_get_voltage(FRONT_LEFT_CH); + if(voltage>thresholds[7]) + gpio_set_led(FRONT_LEFT); + else + gpio_clear_led(FRONT_LEFT); + voltage=adc_get_voltage(FRONT_RIGHT_CH); + if(voltage>thresholds[8]) + gpio_set_led(FRONT_RIGHT); + else + gpio_clear_led(FRONT_RIGHT); + voltage=adc_get_voltage(FRONT_ANALOG_CH); + if(voltage>thresholds[9]) + gpio_set_led(FRONT_ANALOG); + else + gpio_clear_led(FRONT_ANALOG); +}