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 "drv_systick.h"
|
||||||
#include <stdbool.h> // kvuli typu bool
|
#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_PRESSED (1)
|
||||||
#define SWITCH_NOT_PRESSED (0)
|
#define SWITCH_NOT_PRESSED (0)
|
||||||
|
|
||||||
@ -42,211 +36,6 @@ int switch1_read(void);
|
|||||||
void delay_debounce(void);
|
void delay_debounce(void);
|
||||||
void LED_control(bool d1, bool d2, bool d3);
|
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
|
// Verze 4
|
||||||
// Program je vylepsen rozdelenim na jednotlive ulohy - tasky.
|
// Program je vylepsen rozdelenim na jednotlive ulohy - tasky.
|
||||||
// Z pohledu odezvy je chovani stejne jako u verze 3, ale struktura programu je
|
// Z pohledu odezvy je chovani stejne jako u verze 3, ale struktura programu je
|
||||||
@ -409,12 +198,7 @@ void TaskGreenLed() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pomocne funkce
|
||||||
//////////////////////////////////////////////////////////////////////////////////
|
|
||||||
#endif /* VERSION == 4*/
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////
|
|
||||||
// Pomocne funkce spolecne pro vsechny verze
|
|
||||||
|
|
||||||
// inicializace
|
// inicializace
|
||||||
void init()
|
void init()
|
||||||
|
Loading…
Reference in New Issue
Block a user