chore: rm code of unused versions
This commit is contained in:
parent
a59d8db636
commit
fd26be83e5
220
main.cpp
220
main.cpp
@ -19,14 +19,8 @@ using namespace std;
|
||||
//#include "drv_systick.h"
|
||||
#include <stdbool.h> // kvuli typu bool
|
||||
|
||||
// Vyber verze kodu.
|
||||
// 1. stav blikani a nesviti; kontrola tlacitka vzdy az po bliknuti vsech LED.
|
||||
// 2. kontrola tlacitka po bliknuti kazde LED.
|
||||
// 3. nepouziva se delay - polling casu.
|
||||
// 4. rozdeleni kodu na ulohy - tasky.
|
||||
#define VERSION 1
|
||||
|
||||
// Spolecne definice
|
||||
|
||||
#define SWITCH_PRESSED (1)
|
||||
#define SWITCH_NOT_PRESSED (0)
|
||||
|
||||
@ -42,211 +36,6 @@ int switch1_read(void);
|
||||
void delay_debounce(void);
|
||||
void LED_control(bool d1, bool d2, bool d3);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
// Kod programu v nekolika verzich.
|
||||
// Aktivni verze se vybere pomoci #define VERSION nahore.
|
||||
#if VERSION == 1
|
||||
// Verze 1
|
||||
// Odezva je spatna, protoze stav tlacitka se testuje az po bliknuti vsech LED.
|
||||
// Pri uvolneni tlacitka program zareaguje az na konci celeho efektu, kdyz zhasne
|
||||
// treti LED a prvni uz se nerozsviti.
|
||||
|
||||
// Stavy programu
|
||||
#define ST_EFFECT 1
|
||||
#define ST_OFF 2
|
||||
|
||||
int state = ST_OFF;
|
||||
|
||||
|
||||
int main(void) {
|
||||
// inicializace ovladace pinu a delay
|
||||
init();
|
||||
|
||||
while (1) {
|
||||
if (switch1_read() == SWITCH_PRESSED)
|
||||
state = ST_EFFECT;
|
||||
else
|
||||
state = ST_OFF;
|
||||
|
||||
switch (state) {
|
||||
case ST_OFF:
|
||||
LED_control(false, false, false);
|
||||
break;
|
||||
|
||||
case ST_EFFECT:
|
||||
LED_control(true, false, false);
|
||||
SYSTICK_delay_ms(BLINK_DELAY);
|
||||
LED_control(false, true, false);
|
||||
SYSTICK_delay_ms(BLINK_DELAY);
|
||||
LED_control(false, false, true);
|
||||
SYSTICK_delay_ms(BLINK_DELAY);
|
||||
break;
|
||||
} // switch
|
||||
|
||||
} // while
|
||||
|
||||
/* Never leave main */
|
||||
return 0;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#elif VERSION == 2
|
||||
// Verze 2
|
||||
// Odezva je vylepsena tim, ze kontrola tlacitka probiha po bliknuti kazde LED.
|
||||
// Po uvolneni tlacitka pak LED sice "dosviti" svou dobu svitu,
|
||||
// ale dalsi LED uz se nerozsviti.
|
||||
|
||||
// Stavy programu
|
||||
#define ST_LED1_ON 1
|
||||
#define ST_LED2_ON 2
|
||||
#define ST_LED3_ON 3
|
||||
#define ST_OFF 4
|
||||
|
||||
int state = ST_OFF;
|
||||
|
||||
int main(void) {
|
||||
// inicializace ovladace pinu a delay
|
||||
init();
|
||||
|
||||
while (1) {
|
||||
if (switch1_read() == SWITCH_PRESSED) {
|
||||
// Jen pokud je stisknuto tlacitko a soucasny stav je vypnuto,
|
||||
// prejdeme na stav rozsviceni prvni LED, jinak uz nektera LED
|
||||
// sviti a stavy se meni ve switch.
|
||||
if ( state == ST_OFF )
|
||||
state = ST_LED1_ON;
|
||||
}
|
||||
else
|
||||
state = ST_OFF;
|
||||
|
||||
switch (state) {
|
||||
|
||||
case ST_OFF:
|
||||
LED_control(false, false, false);
|
||||
break;
|
||||
|
||||
case ST_LED1_ON:
|
||||
// Bliknout LED1 a prejit na stav dalsi LED2
|
||||
LED_control(true, false, false);
|
||||
SYSTICK_delay_ms(BLINK_DELAY);
|
||||
state = ST_LED2_ON;
|
||||
break;
|
||||
|
||||
case ST_LED2_ON:
|
||||
LED_control(false, true, false);
|
||||
SYSTICK_delay_ms(BLINK_DELAY);
|
||||
state = ST_LED3_ON;
|
||||
break;
|
||||
|
||||
case ST_LED3_ON:
|
||||
LED_control(false, false, true);
|
||||
SYSTICK_delay_ms(BLINK_DELAY);
|
||||
state = ST_LED1_ON;
|
||||
break;
|
||||
} // switch
|
||||
|
||||
} // while
|
||||
|
||||
/* Never leave main */
|
||||
return 0;
|
||||
}
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#elif VERSION == 3
|
||||
// Verze 3
|
||||
// Odezva je vylepsena tim, ze se nepouziva cekani (busy waiting) ale zjistuje se
|
||||
// zda uz ubehl potrebny cas - jde o tzv. polling - dotazovani.
|
||||
// Diky tomu LED zhasne okamzite po uvolneni tlacitka.
|
||||
|
||||
// Stavy programu
|
||||
#define ST_LED1_ON 1
|
||||
#define ST_LED2_ON 2
|
||||
#define ST_LED3_ON 3
|
||||
#define ST_OFF 4
|
||||
#define ST_LED1_WAIT 5
|
||||
#define ST_LED2_WAIT 6
|
||||
#define ST_LED3_WAIT 7
|
||||
|
||||
int state = ST_OFF;
|
||||
|
||||
int main(void) {
|
||||
// inicializace ovladace pinu a delay
|
||||
init();
|
||||
|
||||
uint32_t waitStart; // cas, kdy se rozvitila LED
|
||||
uint32_t currentTime; // aktualni cas, pomocna promenna
|
||||
|
||||
while (1) {
|
||||
|
||||
if (switch1_read() == SWITCH_PRESSED) {
|
||||
// Jen pokud je stisknuto tlacitko a soucasny stav je vypnuto,
|
||||
// prejdeme na stav rozsviceni prvni LED, jinak uz nektera LED
|
||||
// sviti a stavy se meni ve switch.
|
||||
if ( state == ST_OFF )
|
||||
state = ST_LED1_ON;
|
||||
}
|
||||
else
|
||||
state = ST_OFF;
|
||||
|
||||
switch (state) {
|
||||
|
||||
case ST_OFF:
|
||||
LED_control(false, false, false);
|
||||
break;
|
||||
|
||||
case ST_LED1_ON:
|
||||
// Rozsvitit LED, ulozit aktualni cas a prejit do stavu cekani na
|
||||
// uplynuti casu svitu teto LED.
|
||||
LED_control(true, false, false);
|
||||
waitStart = SYSTICK_millis();
|
||||
state = ST_LED1_WAIT;
|
||||
break;
|
||||
|
||||
case ST_LED1_WAIT:
|
||||
// Kontrola jestli uz ubehlo dost casu abychom rozsvitili dalsi LED
|
||||
// a pokud ano, prechod na dalsi stav
|
||||
currentTime = SYSTICK_millis();
|
||||
if ( currentTime - waitStart >= BLINK_DELAY )
|
||||
state = ST_LED2_ON;
|
||||
break;
|
||||
|
||||
|
||||
case ST_LED2_ON:
|
||||
LED_control(false, true, false);
|
||||
waitStart = SYSTICK_millis();
|
||||
state = ST_LED2_WAIT;
|
||||
break;
|
||||
|
||||
case ST_LED2_WAIT:
|
||||
currentTime = SYSTICK_millis();
|
||||
if ( currentTime - waitStart >= BLINK_DELAY )
|
||||
state = ST_LED3_ON;
|
||||
break;
|
||||
|
||||
case ST_LED3_ON:
|
||||
LED_control(false, false, true);
|
||||
waitStart = SYSTICK_millis();
|
||||
state = ST_LED3_WAIT;
|
||||
break;
|
||||
|
||||
case ST_LED3_WAIT:
|
||||
currentTime = SYSTICK_millis();
|
||||
if ( currentTime - waitStart >= BLINK_DELAY )
|
||||
state = ST_LED1_ON;
|
||||
break;
|
||||
|
||||
} // switch
|
||||
|
||||
} // while
|
||||
|
||||
/* Never leave main */
|
||||
return 0;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#elif VERSION == 4
|
||||
// Verze 4
|
||||
// Program je vylepsen rozdelenim na jednotlive ulohy - tasky.
|
||||
// Z pohledu odezvy je chovani stejne jako u verze 3, ale struktura programu je
|
||||
@ -409,12 +198,7 @@ void TaskGreenLed() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
#endif /* VERSION == 4*/
|
||||
|
||||
/////////////////////////////////////////////////////////
|
||||
// Pomocne funkce spolecne pro vsechny verze
|
||||
// Pomocne funkce
|
||||
|
||||
// inicializace
|
||||
void init()
|
||||
|
Loading…
Reference in New Issue
Block a user