
Benedikt Kicin, vytah semestralka
main.cpp@1:5e6b55099364, 2018-01-24 (annotated)
- Committer:
- kicin2
- Date:
- Wed Jan 24 08:31:19 2018 +0000
- Revision:
- 1:5e6b55099364
- Parent:
- 0:2574b54351ed
kicin2 vytah
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kicin2 | 0:2574b54351ed | 1 | /*! |
kicin2 | 0:2574b54351ed | 2 | * \file main.cpp |
kicin2 | 0:2574b54351ed | 3 | * \author Benedikt Kicin |
kicin2 | 1:5e6b55099364 | 4 | * subor main.cpp je hlavny subor aplikacie, inicializacia, reset, spustenie*/ |
kicin2 | 0:2574b54351ed | 5 | |
kicin2 | 0:2574b54351ed | 6 | #include "mbed.h" |
kicin2 | 0:2574b54351ed | 7 | #include "komunikacia.h" |
kicin2 | 0:2574b54351ed | 8 | #include "vytah.h" |
kicin2 | 0:2574b54351ed | 9 | #include "riadenie.h" |
kicin2 | 0:2574b54351ed | 10 | #include "nastavenia.h" |
kicin2 | 0:2574b54351ed | 11 | #include "MMA8451Q.h" |
kicin2 | 0:2574b54351ed | 12 | |
kicin2 | 0:2574b54351ed | 13 | |
kicin2 | 0:2574b54351ed | 14 | /** |
kicin2 | 0:2574b54351ed | 15 | *Hlavna funkcia riadenia celeho vytahu/programu |
kicin2 | 0:2574b54351ed | 16 | */ |
kicin2 | 0:2574b54351ed | 17 | int main(void) |
kicin2 | 0:2574b54351ed | 18 | { |
kicin2 | 0:2574b54351ed | 19 | Ticker t; //na prerusenie aby mohol watchdog posielat spravy |
kicin2 | 0:2574b54351ed | 20 | |
kicin2 | 0:2574b54351ed | 21 | initCommunication();//nastavenie rychlosti komunikacie |
kicin2 | 0:2574b54351ed | 22 | pc.attach(&prijmiPaket,Serial::RxIrq); //prijimanie paketu cez prerusenie |
kicin2 | 0:2574b54351ed | 23 | resetujSpravuWD();//obnovi watchdog pri opatovnom spusteni |
kicin2 | 0:2574b54351ed | 24 | vypniBrzdu();//vypne ochrannu/nudzovu brzdu |
kicin2 | 0:2574b54351ed | 25 | NVIC_SetPriority(LPTimer_IRQn, 255);//nastavenie priority, nastav tickeru najnizsiu prioritu aby vedel dostat ACK na prerusenie |
kicin2 | 0:2574b54351ed | 26 | t.attach(&posliSpravuWD, 1.4);//kazdu 1,5s odosle spravu watchdogu (+testovane na 1,4s) |
kicin2 | 0:2574b54351ed | 27 | //NVIC_SetPriority(PORTC_PORTD_IRQn, 255);//nastavenie priority |
kicin2 | 0:2574b54351ed | 28 | acc.MotionDetection(&zapniBrzdu);//prerusenie ma detekciu pohybu |
kicin2 | 0:2574b54351ed | 29 | |
kicin2 | 0:2574b54351ed | 30 | pociatocneNastavenieDispleja();//nastavi displej na stvrte/vychodzie poschodie |
kicin2 | 0:2574b54351ed | 31 | |
kicin2 | 0:2574b54351ed | 32 | while(1){ |
kicin2 | 0:2574b54351ed | 33 | |
kicin2 | 0:2574b54351ed | 34 | rozsvietenieLED();//ak je stlacene tlacidlo rozsvieti sa ledka |
kicin2 | 0:2574b54351ed | 35 | zmenDisplej();//zmeni hodnot na displeji |
kicin2 | 0:2574b54351ed | 36 | |
kicin2 | 0:2574b54351ed | 37 | if(spravnePoschodie == true){ //ked je na spravnom poschodi caka na dalsie pokyny(pociatocny stav) |
kicin2 | 0:2574b54351ed | 38 | |
kicin2 | 0:2574b54351ed | 39 | if(ostan == true){//ked je na spravnom poschodi vykona potrebne operacie, zastan |
kicin2 | 0:2574b54351ed | 40 | stop();//zastavenie vytahu |
kicin2 | 0:2574b54351ed | 41 | unsigned char vypniLedku = 16 + poschodie; |
kicin2 | 0:2574b54351ed | 42 | unsigned char vypniLedku2 = 32 + poschodie; |
kicin2 | 0:2574b54351ed | 43 | posliBajt(vypniLedku, 0x00);//poslanie bajtu na vypnutie ledky |
kicin2 | 0:2574b54351ed | 44 | posliBajt(vypniLedku2, 0x00);//poslanie bajtu na vypnutie ledky2 |
kicin2 | 0:2574b54351ed | 45 | zmenDisplejNa(0x00, 48 + poschodie);//zmeni displej na prislusne poschodie |
kicin2 | 0:2574b54351ed | 46 | |
kicin2 | 0:2574b54351ed | 47 | Timer t; |
kicin2 | 0:2574b54351ed | 48 | t.start(); |
kicin2 | 0:2574b54351ed | 49 | while (t.read() <= 3) {}//caka 3 sekundy aby dobehol motor |
kicin2 | 0:2574b54351ed | 50 | t.stop(); |
kicin2 | 0:2574b54351ed | 51 | odomkni();//odomknutie vytahu po 3 sek cakania - nemoze sa hybat |
kicin2 | 0:2574b54351ed | 52 | |
kicin2 | 0:2574b54351ed | 53 | aktPoschodie = poschodie; |
kicin2 | 0:2574b54351ed | 54 | ostan = false; |
kicin2 | 0:2574b54351ed | 55 | poschodie = 0xFF;//aktualizacia poschodia na ktorom som |
kicin2 | 0:2574b54351ed | 56 | |
kicin2 | 0:2574b54351ed | 57 | } |
kicin2 | 0:2574b54351ed | 58 | if((poschodie != 0xFF) && (poschodie != aktPoschodie)){ //ak nie som na rovnakom poschodi ako sa vytah prave nachadza |
kicin2 | 0:2574b54351ed | 59 | chodNaPoschodie(poschodie);//pojde na prislusne poschodie |
kicin2 | 0:2574b54351ed | 60 | zmenDisplejNa(smer, 48 + aktPoschodie);//nastavi displej |
kicin2 | 0:2574b54351ed | 61 | spravnePoschodie = false;//vyskoci z hlavnej podmienky kym nedojde na spravne poschodie |
kicin2 | 0:2574b54351ed | 62 | } |
kicin2 | 0:2574b54351ed | 63 | |
kicin2 | 0:2574b54351ed | 64 | } |
kicin2 | 0:2574b54351ed | 65 | } |
kicin2 | 0:2574b54351ed | 66 | } |