fin practica 2
This commit is contained in:
@@ -21,11 +21,8 @@ typedef struct
|
||||
} LED_Config;
|
||||
|
||||
void CreateLedTask();
|
||||
void LedToggleTask(void* pArgs);
|
||||
|
||||
void LedAnimationTask(void* pArgs);
|
||||
void ButtonTask(void* pArgs);
|
||||
void LedAnimationTask1(void* pArgs);
|
||||
void LedAnimationTask2(void* pArgs);
|
||||
void LedAnimationTask3(void* pArgs);
|
||||
|
||||
#endif /* INC_LED_TASK_H_ */
|
||||
|
||||
@@ -7,51 +7,27 @@
|
||||
|
||||
#include "led_task.h"
|
||||
|
||||
TaskHandle_t hButtonTask;
|
||||
TaskHandle_t tH[3];
|
||||
|
||||
void CreateLedTask()
|
||||
{
|
||||
/* EJERCICIOS 1/2/3
|
||||
LED_Config* cfg = pvPortMalloc(sizeof(LED_Config));
|
||||
|
||||
if (cfg != NULL)
|
||||
{
|
||||
cfg->led = 0;
|
||||
cfg->delay = 200;
|
||||
}
|
||||
|
||||
xTaskCreate(
|
||||
LedToggleTask,
|
||||
"LedToggleTask_1",
|
||||
128,
|
||||
(void*) cfg,
|
||||
1,
|
||||
NULL
|
||||
);
|
||||
*/
|
||||
|
||||
/* EJERCICIO 4
|
||||
xTaskCreate(
|
||||
LedAnimationTask,
|
||||
"LedAnimationTask",
|
||||
ButtonTask,
|
||||
"ButtonTask",
|
||||
128,
|
||||
NULL,
|
||||
1,
|
||||
NULL
|
||||
&hButtonTask
|
||||
);
|
||||
*/
|
||||
|
||||
/* EJERCICIO 5
|
||||
* - con la misma prioridad alternan continuamente entre ellas y son animaciones
|
||||
* sin sentido
|
||||
* - con prioridades distintas, visualmente y con un delay un poco más alto
|
||||
* podría parecer que se hacen una detrás de otra (en orden de prioridad)
|
||||
*/
|
||||
xTaskCreate(
|
||||
LedAnimationTask1,
|
||||
"LedAnimationTask1",
|
||||
128,
|
||||
NULL,
|
||||
1,
|
||||
NULL
|
||||
&tH[0]
|
||||
);
|
||||
|
||||
xTaskCreate(
|
||||
@@ -59,67 +35,28 @@ void CreateLedTask()
|
||||
"LedAnimationTask2",
|
||||
128,
|
||||
NULL,
|
||||
2,
|
||||
NULL
|
||||
1,
|
||||
&tH[1]
|
||||
);
|
||||
|
||||
xTaskCreate(
|
||||
LedAnimationTask3,
|
||||
"LedAnimationTask3",
|
||||
128,
|
||||
NULL,
|
||||
1,
|
||||
&tH[2]
|
||||
);
|
||||
}
|
||||
|
||||
void LedToggleTask(void* pArgs)
|
||||
{
|
||||
LED_Config* cfg = (LED_Config*) pArgs;
|
||||
uint8_t counter = 5;
|
||||
for(;;)
|
||||
{
|
||||
if(cfg->led > 2)
|
||||
{
|
||||
cfg->led = 0;
|
||||
}
|
||||
|
||||
while (counter > 0)
|
||||
{
|
||||
LED_Toggle(cfg->led);
|
||||
vTaskDelay(cfg->delay);
|
||||
counter--;
|
||||
}
|
||||
|
||||
cfg->led++;
|
||||
|
||||
xTaskCreate(
|
||||
LedToggleTask,
|
||||
"LedToggleTask_New",
|
||||
128,
|
||||
(void*) cfg,
|
||||
1,
|
||||
NULL
|
||||
);
|
||||
|
||||
vTaskDelete(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void LedAnimationTask(void* pArgs)
|
||||
void ButtonTask(void* pArgs)
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
switch(ReadJoy())
|
||||
{
|
||||
case 0:
|
||||
// stand-by
|
||||
LED_Off(0);
|
||||
LED_Off(1);
|
||||
LED_Off(2);
|
||||
break;
|
||||
case 1:
|
||||
animation1();
|
||||
break;
|
||||
case 2:
|
||||
animation2();
|
||||
break;
|
||||
case 3:
|
||||
animation3();
|
||||
break;
|
||||
}
|
||||
vTaskDelay(50);
|
||||
uint8_t key = ReadJoy();
|
||||
if(key)
|
||||
xTaskNotifyGive(tH[key - 1]);
|
||||
vTaskDelay(100);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,6 +64,7 @@ void LedAnimationTask1(void* pArgs)
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
|
||||
int i;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
@@ -147,6 +85,7 @@ void LedAnimationTask2(void* pArgs)
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
|
||||
int i, j;
|
||||
for(j = 0; j < 5; j++)
|
||||
{
|
||||
@@ -167,6 +106,7 @@ void LedAnimationTask3(void* pArgs)
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
|
||||
int i;
|
||||
for(i = 0; i < 3; i++)
|
||||
{
|
||||
@@ -180,3 +120,4 @@ void LedAnimationTask3(void* pArgs)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user