Rev 2494 Rev 2497
Line 28... Line 28...
28 #use fast_io(D) 28 #use fast_io(D)
29 #use fast_io(J) 29 #use fast_io(J)
30 #use fast_io(H) 30 #use fast_io(H)
31 #use fast_io(G) 31 #use fast_io(G)
32   32  
33 #define T_REVERS 2 // 2*256 ms = 0,5 s; pred prepnutim rele (zastaveni motoru a vybiti kondenzatoru) 33 #define T_REVERS 2 // 2*256 ms = 0,5 s; pred prepnutim rele (zastaveni motoru a vybiti kondenzatoru)
34 #define T_START 1 // 1*256 ms = 0,3 s; po prepnuti rele do sepnuti triaku 34 #define T_START 1 // 1*256 ms = 0,3 s; po prepnuti rele do sepnuti triaku
35 #define T_GO 117 // 117*256 ms = 30 s; max. beh rolety 35 #define T_GO 117 // 117*256 ms = 30 s; max. beh rolety
36 #define T_GO_ZALUZIE 6 // cca 1,5 s; beh zaluzie (pouze na preklopeni lamel) 36 #define T_GO_ZALUZIE 2500/256 // cca 2 s; beh zaluzie (pouze na preklopeni lamel)
37 #define T_RECEIVE 10 // cca 2,6 s 37 #define T_RECEIVE 10 // cca 2,6 s
-   38 #define TIMEOUT_SPAJZ 255 // Timeout svetlo spajz cca minuta
38 #define ZAKMIT 2000 // pocet pruchodu hlavni smyckou pred opetovnou detekci prepnuti vypinace 39 #define ZAKMIT 2000 // pocet pruchodu hlavni smyckou pred opetovnou detekci prepnuti vypinace
39   40  
40 #define OR106Z PIN_A0 // t1 Roleta trucovna zapad 41 //!!! STUDENAK na triaku spolecny vyvod !!! #define O PIN_A0 // t1
41 #define OR110N PIN_A1 // t2 Zaluzie koupelna dole sever 42 #define OR110N PIN_A1 // t2 Zaluzie koupelna dole sever
42 #define OR104V PIN_A2 // t3 Roleta lab vychod 43 #define OR104V PIN_A2 // t3 Roleta lab vychod
43 #define OR104J PIN_A3 // t4 Roleta lab jih 44 #define OR104J PIN_A3 // t4 Roleta lab jih
44 #define OR103V PIN_A4 // t5 Roleta loznice 45 #define OR103V PIN_A4 // t5 Roleta loznice
45 #define OR202J PIN_A5 // t6 Roleta Kaklik 46 #define OR202J PIN_A5 // t6 Roleta Kaklik
46 #define OR204Z PIN_A6 // t7 Roleta radiomistnost 47 #define OR204Z PIN_A6 // t7 Roleta radiomistnost
47 #define OR207V PIN_A7 // t8 Roleta klubovna 48 #define OR207V PIN_A7 // t8 Roleta klubovna
48   49  
49 #define OR208V PIN_F0 // t1 Roleta Zizala vychod 50 #define OR208V PIN_F0 // t1 Roleta Zizala vychod
50 #define OR208J PIN_F1 // t2 Roleta Zizala jih 51 #define OR208J PIN_F1 // t2 Roleta Zizala jih
51 //??? #define OR107 PIN_F2 // t3 52 //??? #define OR107 PIN_F2 // t3 Roleta satna
52 //??? #define OR107 PIN_F3 // t4 53 #define OR106J PIN_F3 // t4 Roleta trucovna jih
53 #define OR201Z PIN_F4 // t5 Roleta chodba nahore 54 #define OR201Z PIN_F4 // t5 Roleta chodba nahore
54 #define OR205N PIN_F5 // t6 Roleta puda 55 #define OR205N PIN_F5 // t6 Roleta puda
55 //??? #define OR105 PIN_F6 // t7 Roleta kuchyn 56 //??? #define OR105 PIN_F6 // t7 Roleta kuchyn
56 //#define O... PIN_F7 // t8 57 #define OR106Z PIN_F7 // t8 Roleta trucovna zapad
57   58  
58   59  
59 #define OS103J PIN_B0 // t1 Svetla loznice 60 #define OS103J PIN_B0 // t1 Svetla loznice
60 #define OS105Z PIN_B1 // t2 Svetlo kuchyn nad lavici 61 #define OS105Z PIN_B1 // t2 Svetlo kuchyn nad lavici
61 #define OS110N PIN_B2 // t3 Svetlo koupelna dole zachod a sprhca 62 #define OS110N PIN_B2 // t3 Svetlo koupelna dole zachod a sprhca
Line 81... Line 82...
81 #define OS203A PIN_E6 // t7 Svetlo Kaklik koupelna 82 #define OS203A PIN_E6 // t7 Svetlo Kaklik koupelna
82 #define RE PIN_E7 // t8 Rele pro rizeni smeru rolet 83 #define RE PIN_E7 // t8 Rele pro rizeni smeru rolet
83   84  
84 //#define O.... PIN_G0 // t8 85 //#define O.... PIN_G0 // t8
85 //#define O.... PIN_G1 // t7 86 //#define O.... PIN_G1 // t7
86 //#define O.... PIN_G2 // t6 87 #define OS108A PIN_G2 // t6 Svetlo spajz
87 #define OS208A PIN_G3 // t5 Svetlo Zizala stred 88 #define OS208A PIN_G3 // t5 Svetlo Zizala stred
88 #define OS100A PIN_G4 // t4 Svetlo prujezd venku 89 #define OS100A PIN_G4 // t4 Svetlo prujezd venku
89   90  
90 //#define I.... input(PIN_D0) // A 91 //#define I.... input(PIN_D0) // A
91 #define IS201AZ input(PIN_D1) // B Vypinac chodba 2.n.p. zapad u Kaklika 92 #define IS201AZ input(PIN_D1) // B Vypinac chodba 2.n.p. zapad u Kaklika
Line 101... Line 102...
101 #define IR202NU input(PIN_J2) // C Vypinac roleta Kaklik nahoru u dveri 102 #define IR202NU input(PIN_J2) // C Vypinac roleta Kaklik nahoru u dveri
102 #define IS205A input(PIN_J3) // D Vypinac svetlo puda 103 #define IS205A input(PIN_J3) // D Vypinac svetlo puda
103 #define IS204AJ input(PIN_J4) // E Vypinac svetlo radiomistnost u dveri na chodbu 104 #define IS204AJ input(PIN_J4) // E Vypinac svetlo radiomistnost u dveri na chodbu
104 #define IR204ZD input(PIN_J5) // F Vypinac roleta radiomistnost dolu 105 #define IR204ZD input(PIN_J5) // F Vypinac roleta radiomistnost dolu
105 #define IR204ZU input(PIN_J6) // G Vypinac roleta radiomistnost nahoru 106 #define IR204ZU input(PIN_J6) // G Vypinac roleta radiomistnost nahoru
106 //#define I.... input(PIN_J7) // H 107 #define IS108A input(PIN_J7) // H Mikrospinac spajz
107   108  
108 #define IS208AN input(PIN_H0) // A Vypinac svetlo stred Zizala u dveri na chodbu //POZOR! Jsou prohozeny rolety J a V a smery U a D 109 #define IS208AN input(PIN_H0) // A Vypinac svetlo stred Zizala u dveri na chodbu //POZOR! Jsou prohozeny rolety J a V a smery U a D
109 #define IR208JD input(PIN_H1) // B Vypinac roleta vychod Zizala nahoru u dveri 110 #define IR208JD input(PIN_H1) // B Vypinac roleta vychod Zizala nahoru u dveri
110 #define IR208JU input(PIN_H2) // C Vypinac roleta vychod Zizala dolu u dveri 111 #define IR208JU input(PIN_H2) // C Vypinac roleta vychod Zizala dolu u dveri
111 #define IR208VD input(PIN_H3) // D Vypinac roleta jih Zizala nahoru u dveri 112 #define IR208VD input(PIN_H3) // D Vypinac roleta jih Zizala nahoru u dveri
Line 153... Line 154...
153 #define R207V 4 154 #define R207V 4
154 #define R202J 5 155 #define R202J 5
155 #define R204Z 6 156 #define R204Z 6
156 #define R208V 7 157 #define R208V 7
157 #define R208J 8 158 #define R208J 8
-   159 #define R106J 9
-   160 #define R106Z 10
158   161  
159 typedef enum {UP, DOWN, REVERS_UP, REVERS_DOWN, RUN_UP, RUN_DOWN, RUN_UP_WAITING} relay_state; 162 typedef enum {UP, DOWN, REVERS_UP, REVERS_DOWN, RUN_UP, RUN_DOWN, RUN_UP_WAITING} relay_state;
160 relay_state relay; // Stavy rele 163 relay_state relay; // Stavy rele
161   164  
162 int8 timer_run; // Bezpecnostni casovac behu rolety 165 int8 timer_run; // Bezpecnostni casovac behu rolety
163 int8 timer_run_zaluzie; // Casovac zaluzie na preklopeni lamel 166 int8 timer_run_zaluzie; // Casovac zaluzie na preklopeni lamel
164 int8 timer_revers; // Prodleva na vybiti kondenzatoru pa zastaveni rolety pred prepnutim rele 167 int8 timer_revers; // Prodleva na vybiti kondenzatoru pa zastaveni rolety pred prepnutim rele
165 int8 timer_start; // Prodleva na prepnuti rele pred startem rolety 168 int8 timer_start; // Prodleva na prepnuti rele pred startem rolety
166 int8 timer; // Casovac komunikace 169 int8 timer; // Casovac komunikace
-   170 int8 tS108; // Casovac svetlo spajz
167   171  
168 #int_TIMER0 172 #int_TIMER0
169 void TIMER0_isr(void) 173 void TIMER0_isr(void)
170 { 174 {
171 if(timer>0) timer--; 175 if(timer>0) timer--;
-   176 if(tS108>0) tS108--;
172 if(timer_run>0) timer_run--; 177 if(timer_run>0) timer_run--;
173 if(timer_revers>0) timer_revers--; 178 if(timer_revers>0) timer_revers--;
174 if(timer_start>0) timer_start--; 179 if(timer_start>0) timer_start--;
175 if(timer_run_zaluzie>0) timer_run_zaluzie--; 180 if(timer_run_zaluzie>0) timer_run_zaluzie--;
176 output_toggle(LED2); 181 output_toggle(LED2);
Line 194... Line 199...
194 if (rol[R207V]==RUN) ON(OR207V); 199 if (rol[R207V]==RUN) ON(OR207V);
195 if (rol[R202J]==RUN) ON(OR202J); 200 if (rol[R202J]==RUN) ON(OR202J);
196 if (rol[R204Z]==RUN) ON(OR204Z); 201 if (rol[R204Z]==RUN) ON(OR204Z);
197 if (rol[R208V]==RUN) ON(OR208V); 202 if (rol[R208V]==RUN) ON(OR208V);
198 if (rol[R208J]==RUN) ON(OR208J); 203 if (rol[R208J]==RUN) ON(OR208J);
-   204 if (rol[R106J]==RUN) ON(OR106J);
-   205 if (rol[R106Z]==RUN) ON(OR106Z);
199 } 206 }
200   207  
201 void run(int8 roleta) // Spust konkretni roletu 208 void run(int8 roleta) // Spust konkretni roletu
202 { 209 {
203 switch (roleta) 210 switch (roleta)
Line 209... Line 216...
209 case R207V: ON(OR207V); break; 216 case R207V: ON(OR207V); break;
210 case R202J: ON(OR202J); break; 217 case R202J: ON(OR202J); break;
211 case R204Z: ON(OR204Z); break; 218 case R204Z: ON(OR204Z); break;
212 case R208V: ON(OR208V); break; 219 case R208V: ON(OR208V); break;
213 case R208J: ON(OR208J); break; 220 case R208J: ON(OR208J); break;
-   221 case R106J: ON(OR106J); break;
-   222 case R106Z: ON(OR106Z); break;
214 } 223 }
215 } 224 }
216   225  
217 void stop(int8 roleta) // Spust konkretni roletu 226 void stop(int8 roleta) // Spust konkretni roletu
218 { 227 {
Line 225... Line 234...
225 case R207V: OFF(OR207V); break; 234 case R207V: OFF(OR207V); break;
226 case R202J: OFF(OR202J); break; 235 case R202J: OFF(OR202J); break;
227 case R204Z: OFF(OR204Z); break; 236 case R204Z: OFF(OR204Z); break;
228 case R208V: OFF(OR208V); break; 237 case R208V: OFF(OR208V); break;
229 case R208J: OFF(OR208J); break; 238 case R208J: OFF(OR208J); break;
-   239 case R106J: OFF(OR106J); break;
-   240 case R106Z: OFF(OR106Z); break;
230 } 241 }
231 } 242 }
232   243  
233 void up(int8 roleta) // Pozadavek, aby roleta jela nahoru 244 void up(int8 roleta) // Pozadavek, aby roleta jela nahoru
234 { 245 {
Line 442... Line 453...
442 break; 453 break;
443 case '4': 454 case '4':
444 if(buf[3]=='V') if((buf[4]=='U')) {up(R104V);} else {down(R104V);} 455 if(buf[3]=='V') if((buf[4]=='U')) {up(R104V);} else {down(R104V);}
445 if(buf[3]=='J') if((buf[4]=='U')) {up(R104J);} else {down(R104J);} 456 if(buf[3]=='J') if((buf[4]=='U')) {up(R104J);} else {down(R104J);}
446 break; 457 break;
-   458 case '6':
-   459 if(buf[3]=='J') if((buf[4]=='U')) {up(R106J);} else {down(R106J);}
-   460 if(buf[3]=='Z') if((buf[4]=='U')) {up(R106Z);} else {down(R106Z);}
-   461 break;
447 case 'a': 462 case 'a':
448 if((buf[4]=='U')) 463 if((buf[4]=='U'))
449 {//up(R110N); 464 {//up(R110N);
450 if ((relay==DOWN)||(relay==RUN_DOWN)) // Rele je prepnuto na druhou stranu! 465 if ((relay==DOWN)||(relay==RUN_DOWN)) // Rele je prepnuto na druhou stranu!
451 { 466 {
Line 513... Line 528...
513   528  
514 if(ispec!=Ispec) {ispec=Ispec; output_toggle(OS100A); zakmity=ZAKMIT;} 529 if(ispec!=Ispec) {ispec=Ispec; output_toggle(OS100A); zakmity=ZAKMIT;}
515 } 530 }
516 else zakmity--; 531 else zakmity--;
517 532
-   533 // Spajz mikrospinac i svetlo
-   534 if(IS108A) {output_high(OS108A); tS108=TIMEOUT_SPAJZ;}
-   535 if((!IS108A)&&(tS108>0)) {output_low(OS108A);} else {output_high(OS108A);}
-   536
518 switch (relay) 537 switch (relay)
519 { 538 {
520 case UP: 539 case UP:
521 if (timer_start==0) // Rele prepnuto, muzeme sepnout triaky 540 if (timer_start==0) // Rele prepnuto, muzeme sepnout triaky
522 { 541 {