/Designs/dum/SW/2patra/2np/main.c
9,13 → 9,11
 
Rozmisteni desek:
 
[IN D]
[OUT E]
[IN H] [IN J]
[OUT B]
[CPU]
[CAN]
[IN J] [IN D]
[OUT A] [CPU]
 
[OUT G] [CAN] [OUT A] [OUT F]
[OUT F] [OUT B] [OUT E]
 
*/
#include "main.h"
27,11 → 25,9
#use fast_io(F)
#use fast_io(D)
#use fast_io(J)
#use fast_io(H)
#use fast_io(G)
 
#define T_REVERS 2 // 2*256 ms = 0,5 s; pred prepnutim rele (zastaveni motoru a vybiti kondenzatoru)
#define T_START 1 // 1*256 ms = 0,3 s; po prepnuti rele do sepnuti triaku
#define T_REVERS 5 // 5*256 ms = 1,25 s; pred prepnutim rele (zastaveni motoru a vybiti kondenzatoru)
#define T_START 2 // 2*256 ms = 0,5 s; po prepnuti rele do sepnuti triaku
#define T_GO 117 // 117*256 ms = 30 s; max. beh rolety
#define T_GO_ZALUZIE 6 // cca 1,5 s; beh zaluzie (pouze na preklopeni lamel)
#define T_RECEIVE 10 // cca 2,6 s
81,13 → 77,7
#define OS203A PIN_E6 // t7 Svetlo Kaklik koupelna
#define RE PIN_E7 // t8 Rele pro rizeni smeru rolet
 
//#define O.... PIN_G0 // t8
//#define O.... PIN_G1 // t7
//#define O.... PIN_G2 // t6
#define OS208A PIN_G3 // t5 Svetlo Zizala stred
#define OS100A PIN_G4 // t4 Svetlo prujezd venku
 
//#define I.... input(PIN_D0) // A
//#define I.... input(PIN_D0) // A
#define IS201AZ input(PIN_D1) // B Vypinac chodba 2.n.p. zapad u Kaklika
#define IS207AJ input(PIN_D2) // C Vypinac klubovna
#define IR207VD input(PIN_D3) // D Vypinac roleta klubovna dolu
103,18 → 93,8
#define IS204AJ input(PIN_J4) // E Vypinac svetlo radiomistnost u dveri na chodbu
#define IR204ZD input(PIN_J5) // F Vypinac roleta radiomistnost dolu
#define IR204ZU input(PIN_J6) // G Vypinac roleta radiomistnost nahoru
//#define I.... input(PIN_J7) // H
//#define I.... input(PIN_J7) // H
 
#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
#define IR208JD input(PIN_H1) // B Vypinac roleta vychod Zizala nahoru u dveri
#define IR208JU input(PIN_H2) // C Vypinac roleta vychod Zizala dolu u dveri
#define IR208VD input(PIN_H3) // D Vypinac roleta jih Zizala nahoru u dveri
#define IR208VU input(PIN_H4) // E Vypinac roleta jih Zizala dolu u dveri
//#define I.... input(PIN_H5) // F
//#define I.... input(PIN_H6) // G
#define Ispec input(PIN_H7) // H specialni vypinac u rozvadece 2.n.p.
 
 
int1 s201AV;
int1 s201AZ;
int1 s207AJ;
129,17 → 109,11
int1 s204AJ;
int1 r204ZD;
int1 r204ZU;
int1 s208AN;
int1 r208VU;
int1 r208VD;
int1 r208JU;
int1 r208JD;
int1 ispec;
 
#bit CREN = 0xFAB.4 // USART enable register
 
#define LED1 PIN_C0 // Vyvedeno na desku portu G
#define LED2 PIN_C1 // Vyvedeno na desku portu G
#define LED1 PIN_C0
#define LED2 PIN_C1
 
#define ON(port) output_low(port);
#define OFF(port) output_high(port);
153,8 → 127,6
#define R207V 4
#define R202J 5
#define R204Z 6
#define R208V 7
#define R208J 8
 
typedef enum {UP, DOWN, REVERS_UP, REVERS_DOWN, RUN_UP, RUN_DOWN, RUN_UP_WAITING} relay_state;
relay_state relay; // Stavy rele
194,8 → 166,6
if (rol[R207V]==RUN) ON(OR207V);
if (rol[R202J]==RUN) ON(OR202J);
if (rol[R204Z]==RUN) ON(OR204Z);
if (rol[R208V]==RUN) ON(OR208V);
if (rol[R208J]==RUN) ON(OR208J);
}
 
void run(int8 roleta) // Spust konkretni roletu
209,8 → 179,6
case R207V: ON(OR207V); break;
case R202J: ON(OR202J); break;
case R204Z: ON(OR204Z); break;
case R208V: ON(OR208V); break;
case R208J: ON(OR208J); break;
}
}
 
225,8 → 193,6
case R207V: OFF(OR207V); break;
case R202J: OFF(OR202J); break;
case R204Z: OFF(OR204Z); break;
case R208V: OFF(OR208V); break;
case R208J: OFF(OR208J); break;
}
}
 
304,16 → 270,13
set_tris_b(0);
set_tris_e(0);
set_tris_f(0);
set_tris_g(0x20);
set_tris_d(0xFF); // Vstupy
set_tris_j(0xFF);
set_tris_h(0xFF);
 
output_a(0xFF); // Vsechno zhasni a zastav
output_b(0xFF);
output_f(0xFF);
output_e(0xFF);
output_g(0xFF);
stop_all();
 
relay=RUN_UP_WAITING; // Rele je na zacatku vypnuto
345,12 → 308,6
s204AJ=IS204AJ;
r204ZD=IR204ZD;
r204ZU=IR204ZU;
s208AN=IS208AN;
r208VU=IR208VU;
r208VD=IR208VD;
r208JU=IR208JU;
r208JD=IR208JD;
ispec=Ispec;
timer_run=0; // Zastav vsechny casovace
timer=0;
498,7 → 455,6
if(s205A!=IS205A) {s205A=IS205A; output_toggle(OS205A); zakmity=ZAKMIT;}
if(s204AJ!=IS204AJ) {s204AJ=IS204AJ; output_toggle(OS204A); zakmity=ZAKMIT;}
if(s202AN!=IS202AN) {s202AN=IS202AN; output_toggle(OS202A); zakmity=ZAKMIT;}
if(s208AN!=IS208AN) {s208AN=IS208AN; output_toggle(OS208A); zakmity=ZAKMIT;}
if(r207VU!=IR207VU) {r207VU=IR207VU; up(R207V); zakmity=ZAKMIT;}
if(r207VD!=IR207VD) {r207VD=IR207VD; down(R207V); zakmity=ZAKMIT;}
506,12 → 462,6
if(r202ND!=IR202ND) {r202ND=IR202ND; down(R202J); zakmity=ZAKMIT;}
if(r204ZU!=IR204ZU) {r204ZU=IR204ZU; up(R204Z); zakmity=ZAKMIT;}
if(r204ZD!=IR204ZD) {r204ZD=IR204ZD; down(R204Z); zakmity=ZAKMIT;}
if(r208VU!=IR208VU) {r208VU=IR208VU; up(R208V); zakmity=ZAKMIT;}
if(r208VD!=IR208VD) {r208VD=IR208VD; down(R208V); zakmity=ZAKMIT;}
if(r208JU!=IR208JU) {r208JU=IR208JU; up(R208J); zakmity=ZAKMIT;}
if(r208JD!=IR208JD) {r208JD=IR208JD; down(R208J); zakmity=ZAKMIT;}
 
if(ispec!=Ispec) {ispec=Ispec; output_toggle(OS100A); zakmity=ZAKMIT;}
}
else zakmity--;