Skip to content
Snippets Groups Projects
Commit 2f15d580 authored by Sergi Hernandez's avatar Sergi Hernandez
Browse files

Assigned the ID from the EEPROM instead of a fixed one.

GPIO modules tested.
parent 53d0b011
No related branches found
No related tags found
No related merge requests found
...@@ -7,6 +7,8 @@ extern "C" { ...@@ -7,6 +7,8 @@ extern "C" {
#include "stm32f1xx.h" #include "stm32f1xx.h"
#define GPIO_RGB(R,G,B) ((R&0x1F)+((G&0x1F)<<5)+((B&0x1F)<<10))
#define GPIO_NUM_LEDS 11 #define GPIO_NUM_LEDS 11
typedef enum {LED_TX=0,LED_RX=1,LED_2=2,LED_3=3,LED_4=4,LED_5_R=5,LED_5_G=6,LED_5_B=7,LED_6_R=8,LED_6_G=9,LED_6_B=10} led_t; typedef enum {LED_TX=0,LED_RX=1,LED_2=2,LED_3=3,LED_4=4,LED_5_R=5,LED_5_G=6,LED_5_B=7,LED_6_R=8,LED_6_G=9,LED_6_B=10} led_t;
......
...@@ -118,7 +118,7 @@ void darwin_dyn_slave_init(void) ...@@ -118,7 +118,7 @@ void darwin_dyn_slave_init(void)
priorities.dma_tx_subpriority=0; priorities.dma_tx_subpriority=0;
usart3_init(&darwin_dyn_slave_comm,&darwin_comm_init,&priorities); usart3_init(&darwin_dyn_slave_comm,&darwin_comm_init,&priorities);
dyn_slave_init(&darwin_dyn_slave,&darwin_dyn_slave_comm,0x01,DYN_VER2); dyn_slave_init(&darwin_dyn_slave,&darwin_dyn_slave_comm,ram_data[DEVICE_ID_OFFSET],DYN_VER2);
darwin_dyn_slave.on_read=darwin_on_read; darwin_dyn_slave.on_read=darwin_on_read;
darwin_dyn_slave.on_write=darwin_on_write; darwin_dyn_slave.on_write=darwin_on_write;
darwin_dyn_slave.on_ping=darwin_on_ping; darwin_dyn_slave.on_ping=darwin_on_ping;
......
...@@ -566,6 +566,7 @@ void gpio_toggle_led(led_t led_id) ...@@ -566,6 +566,7 @@ void gpio_toggle_led(led_t led_id)
void gpio_blink_led(led_t led_id, uint16_t period_ms) void gpio_blink_led(led_t led_id, uint16_t period_ms)
{ {
TIM_OC_InitTypeDef TIM_OCInitStructure; TIM_OC_InitTypeDef TIM_OCInitStructure;
uint16_t capture;
if(led_id>=LED_TX && led_id<=LED_3) if(led_id>=LED_TX && led_id<=LED_3)
{ {
...@@ -575,7 +576,8 @@ void gpio_blink_led(led_t led_id, uint16_t period_ms) ...@@ -575,7 +576,8 @@ void gpio_blink_led(led_t led_id, uint16_t period_ms)
if(period_ms>1) if(period_ms>1)
{ {
leds_data[led_id]=period_ms; leds_data[led_id]=period_ms;
TIM_OCInitStructure.Pulse = period_ms; capture = HAL_TIM_ReadCapturedValue(leds[led_id].timer,leds[led_id].timer_ch);
TIM_OCInitStructure.Pulse = capture + period_ms;
HAL_TIM_OC_ConfigChannel(leds[led_id].timer, &TIM_OCInitStructure,leds[led_id].timer_ch); HAL_TIM_OC_ConfigChannel(leds[led_id].timer, &TIM_OCInitStructure,leds[led_id].timer_ch);
HAL_TIM_OC_Start_IT(leds[led_id].timer,leds[led_id].timer_ch); HAL_TIM_OC_Start_IT(leds[led_id].timer,leds[led_id].timer_ch);
} }
...@@ -587,26 +589,29 @@ void gpio_blink_led(led_t led_id, uint16_t period_ms) ...@@ -587,26 +589,29 @@ void gpio_blink_led(led_t led_id, uint16_t period_ms)
void gpio_set_color(led_t led_id, uint16_t value) void gpio_set_color(led_t led_id, uint16_t value)
{ {
TIM_OC_InitTypeDef TIM_OCInitStructure; TIM_OC_InitTypeDef TIM_OCInitStructure;
uint16_t capture;
if(led_id>=LED_5_R && led_id<=LED_6_B) if(led_id>=LED_5_R && led_id<=LED_6_B)
{ {
TIM_OCInitStructure.OCMode = TIM_OCMODE_TIMING; TIM_OCInitStructure.OCMode = TIM_OCMODE_TIMING;
TIM_OCInitStructure.OCPolarity = TIM_OCPOLARITY_HIGH; TIM_OCInitStructure.OCPolarity = TIM_OCPOLARITY_HIGH;
TIM_OCInitStructure.OCFastMode = TIM_OCFAST_DISABLE; TIM_OCInitStructure.OCFastMode = TIM_OCFAST_DISABLE;
if(value==0)
if(led_id==LED_5_R || led_id==LED_6_R)
leds_data[led_id]=value&GPIO_RED_COLOR;
else if(led_id==LED_5_G || led_id==LED_6_G)
leds_data[led_id]=((value&GPIO_GREEN_COLOR)>>5);
else
leds_data[led_id]=((value&GPIO_BLUE_COLOR)>>10);
if(leds_data[led_id]==0)
{ {
HAL_TIM_OC_Stop_IT(leds[led_id].timer,leds[led_id].timer_ch); HAL_TIM_OC_Stop_IT(leds[led_id].timer,leds[led_id].timer_ch);
gpio_clear_led(led_id); gpio_clear_led(led_id);
} }
else if(value<31) else if(leds_data[led_id]<31)
{ {
if(led_id==LED_5_R || led_id==LED_6_R) capture = HAL_TIM_ReadCapturedValue(leds[led_id].timer,leds[led_id].timer_ch);
leds_data[led_id]=value&GPIO_RED_COLOR; TIM_OCInitStructure.Pulse = capture + leds_data[led_id];
else if(led_id==LED_5_G || led_id==LED_6_G)
leds_data[led_id]=((value&GPIO_GREEN_COLOR)>>5);
else
leds_data[led_id]=((value&GPIO_BLUE_COLOR)>>10);
TIM_OCInitStructure.Pulse = leds_data[led_id];
HAL_TIM_OC_ConfigChannel(leds[led_id].timer,&TIM_OCInitStructure,leds[led_id].timer_ch); HAL_TIM_OC_ConfigChannel(leds[led_id].timer,&TIM_OCInitStructure,leds[led_id].timer_ch);
HAL_TIM_OC_Start_IT(leds[led_id].timer,leds[led_id].timer_ch); HAL_TIM_OC_Start_IT(leds[led_id].timer,leds[led_id].timer_ch);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment