1
0

fin practica 2

This commit is contained in:
2025-10-27 15:41:57 +01:00
parent 62d3035291
commit 7e264d691c
59 changed files with 15298 additions and 14423 deletions

View File

@@ -0,0 +1,185 @@
/*
* led_task.c
*
* Created on: Oct 6, 2025
* Author: jomaa
*/
#include "led_task.h"
TaskHandle_t hButtonTask;
TaskHandle_t hLedTask;
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",
128,
NULL,
1,
NULL
);
*/
/* 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
);
xTaskCreate(
LedAnimationTask2,
"LedAnimationTask2",
128,
NULL,
2,
NULL
);*/
}
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)
{
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);
}
}
void LedAnimationTask1(void* pArgs)
{
for(;;)
{
int i;
for(i = 0; i < 3; i++)
{
LED_On(i);
vTaskDelay(150);
LED_Off(i);
}
for(i = 1; i > 0; i--)
{
LED_On(i);
vTaskDelay(150);
LED_Off(i);
}
}
}
void LedAnimationTask2(void* pArgs)
{
for(;;)
{
int i, j;
for(j = 0; j < 5; j++)
{
for(i = 0; i < 3; i++)
LED_On(i);
vTaskDelay(100);
for(i = 0; i < 3; i++)
LED_Off(i);
vTaskDelay(100);
}
}
}
void LedAnimationTask3(void* pArgs)
{
for(;;)
{
int i;
for(i = 0; i < 3; i++)
{
LED_On(i);
vTaskDelay(150);
}
for(i = 2; i >= 0; i--)
{
LED_Off(i);
vTaskDelay(150);
}
}
}

View File

@@ -0,0 +1,123 @@
/*
* led_task.c
*
* Created on: Oct 6, 2025
* Author: jomaa
*/
#include "led_task.h"
TaskHandle_t hButtonTask;
TaskHandle_t tH[3];
void CreateLedTask()
{
xTaskCreate(
ButtonTask,
"ButtonTask",
128,
NULL,
1,
&hButtonTask
);
xTaskCreate(
LedAnimationTask1,
"LedAnimationTask1",
128,
NULL,
1,
&tH[0]
);
xTaskCreate(
LedAnimationTask2,
"LedAnimationTask2",
128,
NULL,
1,
&tH[1]
);
xTaskCreate(
LedAnimationTask3,
"LedAnimationTask3",
128,
NULL,
1,
&tH[2]
);
}
void ButtonTask(void* pArgs)
{
for(;;)
{
uint8_t key = ReadJoy();
if(key)
xTaskNotifyGive(tH[key - 1]);
vTaskDelay(100);
}
}
void LedAnimationTask1(void* pArgs)
{
for(;;)
{
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
int i;
for(i = 0; i < 3; i++)
{
LED_On(i);
vTaskDelay(150);
LED_Off(i);
}
for(i = 1; i > 0; i--)
{
LED_On(i);
vTaskDelay(150);
LED_Off(i);
}
}
}
void LedAnimationTask2(void* pArgs)
{
for(;;)
{
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
int i, j;
for(j = 0; j < 5; j++)
{
for(i = 0; i < 3; i++)
LED_On(i);
vTaskDelay(100);
for(i = 0; i < 3; i++)
LED_Off(i);
vTaskDelay(100);
}
}
}
void LedAnimationTask3(void* pArgs)
{
for(;;)
{
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
int i;
for(i = 0; i < 3; i++)
{
LED_On(i);
vTaskDelay(150);
}
for(i = 2; i >= 0; i--)
{
LED_Off(i);
vTaskDelay(150);
}
}
}