EmbeddedSystems/EmbeddedSystemsTHM/Tasks.c

74 lines
1.7 KiB
C

/*
* Tasks.c
*
* Created: 17/11/2021 16:58:20
* Author: n0x
*/
#include "Led.h"
#include "Timer.h"
#include "Taster.h"
#include <util/delay.h>
int g_counter = 0;
uint8_t g_ledStatus = 0;
uint16_t g_startMS;
void
initTasks (void){
g_startMS=Timer_getTick();
}
/* Task 1 (2021-10-21) */
void
runningLight (void)
{
_delay_ms(100);
/* Programmieren Sie ein Lauflicht. Nutzen Sie dazu die in „Led.h“ deklarierten
* Funktionen.
* 2.Schreiben Sie ein Programm mit folgenden Funktionen:
* Wenn Taste 1 gedrückt wird, wird die Variable „Counter“ inkrementiert.
* Wird Taste 2 gedrückt wird, wird die Variable „Counter“ dekrementiert.
* Variable „Counter“ soll sich dabei zwischen 0 und 8 bewegen.
* Der Inhalt des Wertes soll mit Hilfe der LEDs angezeigt werden.
* 0 = keine LED an, 1 = LED1 an, 2 = LED1+LED2 an, usw.
* 8 = alle LEDs an.
*/
/* Check if counter needs to be incremented */
if (Taster1_get()) g_counter++;
/* Check if counter needs to be decremented */
if (Taster2_get()) g_counter--;
/* Keep counter within boundaries (0-8) */
g_counter = (g_counter + 9) % 9;
/* Set the LEDs according to the counter */
g_counter >= 1 ? Led1_On() : Led1_Off();
g_counter >= 2 ? Led2_On() : Led2_Off();
g_counter >= 3 ? Led3_On() : Led3_Off();
g_counter >= 4 ? Led4_On() : Led4_Off();
g_counter >= 5 ? Led5_On() : Led5_Off();
g_counter >= 6 ? Led6_On() : Led6_Off();
g_counter >= 7 ? Led7_On() : Led7_Off();
g_counter >= 8 ? Led8_On() : Led8_Off();
}
/* Task 2 (2021-10-28) */
void
blinkLedWithTimer (void)
{
if(Timer_getTick() - g_startMS >= 1000) { /* Wait 1000ms before switching LED1 */
g_startMS=Timer_getTick();
/* Flip-Flop LED to on/off */
if(g_ledStatus % 2 == 0){
Led1_On();
} else {
Led1_Off();
}
g_ledStatus++;
}
}