/Designs/dum/SW/2patra/1np/main.c
2,27 → 2,27
 
#case
 
#define S105A1 input(PIN_A0)
#define R110A1U input(PIN_A1)
#define R110A1D input(PIN_A2)
#define S104A1 input(PIN_A3)
#define R104A1U input(PIN_A4)
#define R104A1D input(PIN_A5)
#define R104B1U input(PIN_A6)
#define R104B1D input(PIN_A7)
#define S105AN input(PIN_A0) // Kuchyne hlavni svetlo severni vypinac
#define R110NJU input(PIN_A1) // Roleta koupelna
#define R110NJD input(PIN_A2)
#define S104AZ input(PIN_A3) // Svetlo laborator vypinac u dveri
#define R104VZU input(PIN_A4) // Roleta laborator vychod
#define R104VZD input(PIN_A5)
#define R104JZU input(PIN_A6) // Roleta laborator jih
#define R104JZD input(PIN_A7)
 
#define S103A1 input(PIN_B0)
#define S103A2 input(PIN_B1)
#define S103A3 input(PIN_B2)
#define R103A1U input(PIN_B3)
#define R103A1D input(PIN_B4)
#define S106A1 input(PIN_B5)
#define S107A2 input(PIN_B6)
#define S109A1 input(PIN_B7)
#define S103JZ input(PIN_B0) // Svetlo loznice jih vypinac u dveri
#define S103JN input(PIN_B1) // -"- vypinac KAKL
#define S103JV input(PIN_B2) // -"- vypinac mama
#define R103VZU input(PIN_B3) // Roleta loznice vypinac u dveri
#define R103VZD input(PIN_B4)
#define S106AV input(PIN_B5) // Hlavni svetlo trucovna vypinac u dveri do kuchyne
#define S107AN input(PIN_B6) // Svetlo satna vypinac do chodby
#define S109AJ input(PIN_B7) // Svetlo tech. mistnost vypinac do chodby
 
#define OS101 PIN_C0
#define OS105B PIN_C1
#define OS105C PIN_C2
#define OS101A PIN_C0 // Spinac svetla v bunecce prizemi
#define OS105V PIN_C1 // Svetlo nad chlebarnou
#define OS105N PIN_C2 // Severni svetlo kuchyne
 
//#define PIN_C3 31763
//#define PIN_C4 31764
31,14 → 31,14
//#define PIN_C6 31766 //TX
//#define PIN_C7 31767 //RX
 
#define S101A1 input(PIN_D0)
#define S101A2 input(PIN_D1)
#define S105B1 input(PIN_D2)
#define S105C1 input(PIN_D3)
#define S105D1 input(PIN_D4)
#define S102A1 input(PIN_D5)
#define S110A1 input(PIN_D6)
#define S108A1 input(PIN_D7)
#define S101AN input(PIN_D0) // Hlavni svetlo bunecka severni vypinac bliz u dveri
#define S101AJ input(PIN_D1) // Hlavni svetlo bunecka jizni vypinac
#define S105VV input(PIN_D2) // Vypinac nad chlebarnou
#define S105NZ input(PIN_D3) // Svetlo kuchyne sever vypinac zapadni
#define S105ZZ input(PIN_D4) // Svetlo kuchyne zapad vypinac zapadni
#define S102AN input(PIN_D5) // Vypinac chodba dole u schodu
#define S110AN input(PIN_D6) // Vypinac koupelna sever
#define S108AV input(PIN_D7) // Dvere do spajzu
 
/*
#define PIN_E0 31776
88,31 → 88,31
#define LED1 PIN_J7
#define LED2 PIN_J6
 
int1 s105A1;
int1 r110A1U;
int1 r110A1D;
int1 s104A1;
int1 r104A1U;
int1 r104A1D;
int1 r104B1U;
int1 r104B1D;
int1 s105AN; // Predchozi stav vypinacu
int1 r110NJU;
int1 r110NJD;
int1 s104AZ;
int1 r104VZU;
int1 r104VZD;
int1 r104JZU;
int1 r104JZD;
int1 s103JZ;
int1 s103JN;
int1 s103JV;
int1 r103VZU;
int1 r103VZD;
int1 s106AV;
int1 s107AN;
int1 s109AJ;
int1 s101AN;
int1 s101AJ;
int1 s105VV;
int1 s105NZ;
int1 s105ZZ;
int1 s102AN;
int1 s110AN;
int1 s108AV;
 
int1 s103A1;
int1 s103A2;
int1 s103A3;
int1 r103A1U;
int1 r103A1D;
int1 s106A1;
int1 s107A2;
int1 s109A1;
 
int1 s101A1;
int1 s101A2;
int1 s105D1;
int1 s102A1;
int1 s110A1;
int1 s108A1;
 
#define send(s) \
{\
printf("%s\r\n",#s);\
136,61 → 136,62
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
s105A1=S105A1;
r110A1U=R110A1U;
r110A1D=R110A1D;
s104A1=S104A1;
r104A1U=R104A1U;
r104A1D=R104A1D;
r104B1U=R104B1U;
r104B1D=R104B1D;
s103A1=S103A1;
s103A2=S103A2;
s103A3=S103A3;
r103A1U=R103A1U;
r103A1D=R103A1D;
s106A1=S106A1;
s107A2=S107A2;
s109A1=S109A1;
s101A1=S101A1;
s101A2=S101A2;
s105D1=S105D1;
s102A1=S102A1;
s110A1=S110A1;
s108A1=S108A1;
s105AN=S105AN; // Poznamenej vychozi stav vypinacu
r110NJU=R110NJU;
r110NJD=R110NJD;
s104AZ=S104AZ;
r104VZU=R104VZU;
r104VZD=R104VZD;
r104JZU=R104JZU;
r104JZD=R104JZD;
s103JZ=S103JZ;
s103JN=S103JN;
s103JV=S103JV;
r103VZU=R103VZU;
r103VZD=R103VZD;
s106AV=S106AV;
s107AN=S107AN;
s109AJ=S109AJ;
s101AN=S101AN;
s101AJ=S101AJ;
s105VV=S105VV;
s105NZ=S105NZ;
s105ZZ=S105ZZ;
s102AN=S102AN;
s110AN=S110AN;
s108AV=S108AV;
 
while(TRUE)
{
if(s105A1!=S105A1) {s105A1=S105A1; send(S15A);}
if(r110A1U!=R110A1U) {r110A1U=R110A1U; send(R1aAU);}
if(r110A1D!=R110A1D) {r110A1D=R110A1D; send(R1aAD);}
if(!S105B1) {output_low(OS105B);} else {output_high(OS105B);}
if(!S105C1) {output_low(OS105C);} else {output_high(OS105C);}
if(s105D1!=S105D1) {s105D1=S105D1; send(S15D);}
if(s105AN!=S105AN) {s105AN=S105AN; send(S15A);}
if(r110NJU!=R110NJU) {r110NJU=R110NJU; send(R1aNU);}
if(r110NJD!=R110NJD) {r110NJD=R110NJD; send(R1aND);}
 
if(!S105VV) {output_low(OS105V);} else {output_high(OS105V);}
if(!S105NZ) {output_low(OS105N);} else {output_high(OS105N);}
if(s105ZZ!=S105ZZ) {s105ZZ=S105ZZ; send(S15Z);}
if(s104A1!=S104A1) {s104A1=S104A1; send(S14A);}
if(r104A1U!=R104A1U) {r104A1U=R104A1U; send(R14AU);}
if(r104A1D!=R104A1D) {r104A1D=R104A1D; send(R14AD);}
if(r104B1U!=R104B1U) {r104B1U=R104B1U; send(R14BU);}
if(r104B1D!=R104B1D) {r104B1D=R104B1D; send(R14BD);}
if(s104AZ!=S104AZ) {s104AZ=S104AZ; send(S14A);}
if(r104VZU!=R104VZU) {r104VZU=R104VZU; send(R14VU);}
if(r104VZD!=R104VZD) {r104VZD=R104VZD; send(R14VD);}
if(r104JZU!=R104JZU) {r104JZU=R104JZU; send(R14JU);}
if(r104JZD!=R104JZD) {r104JZD=R104JZD; send(R14JD);}
if(s103A1!=S103A1) {s103A1=S103A1; send(S13A);}
if(s103A2!=S103A2) {s103A2=S103A2; send(S13A);}
if(s103A3!=S103A3) {s103A3=S103A3; send(S13A);}
if(r103A1U!=R103A1U) {r103A1U=R103A1U; send(R13AU);}
if(r103A1D!=R103A1D) {r103A1D=R103A1D; send(R13AD);}
if(s103JZ!=S103JZ) {s103JZ=S103JZ; send(S13A);}
if(s103JN!=S103JN) {s103JN=S103JN; send(S13A);}
if(s103JV!=S103JV) {s103JV=S103JV; send(S13A);}
if(r103VZU!=R103VZU) {r103VZU=R103VZU; send(R13VU);}
if(r103VZD!=R103VZD) {r103VZD=R103VZD; send(R13VD);}
if(s106AV!=S106AV) {s106AV=S106AV; send(S16A);}
if(s107AN!=S107AN) {s107AN=S107AN; send(S17A);}
if(s109AJ!=S109AJ) {s109AJ=S109AJ; send(S19A);}
if(s106A1!=S106A1) {s106A1=S106A1; send(S16A);}
if(s107A2!=S107A2) {s107A2=S107A2; send(S17A);}
if(s109A1!=S109A1) {s109A1=S109A1; send(S19A);}
if(s101AN!=S101AN) {s101AN=S101AN; send(S11A);}
if(s101AJ!=S101AJ) {s101AJ=S101AJ; send(S11A);}
if(s101A1!=S101A1) {s101A1=S101A1; send(S11A);}
if(s101A2!=S101A2) {s101A2=S101A2; send(S11A);}
if(s102A1!=S102A1) {s102A1=S102A1; send(S12A);}
if(s110A1!=S110A1) {s110A1=S110A1; send(S1aA);}
if(s108A1!=S108A1) {s108A1=S108A1; send(S18A);}
if(s102AN!=S102AN) {s102AN=S102AN; send(S12A);}
if(s110AN!=S110AN) {s110AN=S110AN; send(S1aA);}
if(s108AV!=S108AV) {s108AV=S108AV; send(S18A);}
}
}
/Designs/dum/SW/2patra/2np/main.c
5,19 → 5,20
#define REVERS 2 // 2*256 ms = 0,5 s
#define GO 117 // 117*256 ms = 30 s
#define GO_ZALUZIE 5 // 5*256 ms = 1,25 s
#define RECEIVE 12 // 3 s
 
#define S105A PIN_A0
#define R110AU PIN_A1
#define R110AD PIN_A2
#define R110NU PIN_A1
#define R110ND PIN_A2
#define S104A PIN_A3
#define R104AU PIN_A4
#define R104AD PIN_A5
#define R104BU PIN_A6
#define R104BD PIN_A7
#define R104VU PIN_A4
#define R104VD PIN_A5
#define R104JU PIN_A6
#define R104JD PIN_A7
 
#define S103A PIN_B0
#define R103AU PIN_B1
#define R103AD PIN_B2
#define S103J PIN_B0
#define R103VU PIN_B1
#define R103VD PIN_B2
#define S106A PIN_B3
#define S107A PIN_B4
#define S109A PIN_B5
32,13 → 33,13
//#define PIN_C6 31766 //TX
//#define PIN_C7 31767 //RX
 
#define S101A PIN_D0
#define S105D PIN_D1
#define S102A PIN_D2
#define S110C PIN_D3
#define S108A PIN_D4
#define S201A PIN_D5
#define S110B PIN_D6
//#define S101A PIN_F0
#define S105Z PIN_F1
#define S102A PIN_F2
#define S110N PIN_F3
#define S108A PIN_F4
#define S201A PIN_F5
#define S110J PIN_F6
 
/*
#define PIN_E0 31776
95,16 → 96,18
 
typedef enum {GO_UP, GO_DOWN, REVERS_UP, REVERS_DOWN, STOP} state;
 
state r103A, r110A, r104A, r104B; // Stavy rolet
int8 tr103A, tr110A, tr104A, tr104B; // Casovace rolet
state r103V, r110N, r104V, r104J; // Stavy rolet
int8 tr103V, tr110N, tr104V, tr104J; // Casovace rolet
int8 timer; // Casovac komunikace
 
#int_TIMER0
void TIMER0_isr(void)
{
if(tr103A>0) tr103A--;
if(tr110A>0) tr110A--;
if(tr104A>0) tr104A--;
if(tr104B>0) tr104B--;
if(tr103V>0) tr103V--;
if(tr110N>0) tr110N--;
if(tr104V>0) tr104V--;
if(tr104J>0) tr104J--;
if(timer>0) timer--;
output_toggle(LED2);
}
 
174,162 → 177,185
 
void main()
{
char c;
char buf[10];
if(restart_cause()!= WDT_TIMEOUT)
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_ON);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
OFF(S105A); // Vsechno zhasni a zastav
OFF(R110AU);
OFF(R110AD);
OFF(S104A);
OFF(R104AU);
OFF(R104AD);
OFF(R104BU);
OFF(R104BD);
OFF(S103A);
OFF(R103AU);
OFF(R103AD);
OFF(S106A);
OFF(S107A);
OFF(S109A);
OFF(S101A);
OFF(S105D);
OFF(S102A);
OFF(S110C);
OFF(S108A);
OFF(S201A);
OFF(S110B);
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
r103A=STOP; // Rolety jsou zastaveny
r110A=STOP;
r104A=STOP;
r104B=STOP;
OFF(S105A); // Vsechno zhasni a zastav
OFF(R110NU);
OFF(R110ND);
OFF(S104A);
OFF(R104VU);
OFF(R104VD);
OFF(R104JU);
OFF(R104JD);
OFF(S103J);
OFF(R103VU);
OFF(R103VD);
OFF(S106A);
OFF(S107A);
OFF(S109A);
OFF(S105Z);
OFF(S102A);
OFF(S110N);
OFF(S108A);
OFF(S201A);
OFF(S110J);
 
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
}
r103V=STOP; // Rolety jsou zastaveny
r110N=STOP;
r104V=STOP;
r104J=STOP;
 
output_high(LED1); // Indikace restartu
delay_ms(100);
output_low(LED1);
delay_ms(30);
output_high(LED1);
restart_wdt();
delay_ms(100);
output_low(LED1);
delay_ms(30);
output_high(LED1);
restart_wdt();
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
CREN=0; CREN=1; // Reinitialise USART
while(TRUE)
{
if(kbhit())
 
if(kbhit()) // Chce po nas nekdo neco?
{
c=getc();
if(c=='S')
buf[0]=getc();
if((buf[0]=='S')||(buf[0]=='R')) // Jinym znakem nesmi zacinat prikaz
{
if(getc()=='1')
int8 n=0; // Ukazatel do prijimaciho bufferu
timer=RECEIVE; // Timeout pro prijem znaku
do
{
switch(getc())
if(kbhit()) // Je dalsi znak?
{
case '1':
output_toggle(S101A);
break;
case '2':
output_toggle(S102A);
break;
case '3':
output_toggle(S103A);
break;
case '4':
output_toggle(S104A);
break;
case '5':
c=getc();
if(c=='A') {output_toggle(S105A);}
if(c=='D') {output_toggle(S105D);}
break;
case '6':
output_toggle(S106A);
break;
case '7':
output_toggle(S107A);
break;
case '8':
output_toggle(S108A);
break;
case '9':
output_toggle(S109A);
break;
case 'a':
output_toggle(S110B);
output_toggle(S110C);
break;
n++;
buf[n]=getc();
}
}
}
if(c=='R')
{
if(getc()=='1')
} while ((buf[n]!='\r')&&(timer>0)&&(n<7));
if (timer==0) { CREN=0; CREN=1; } // Reinitialise USART
 
output_toggle(LED1); // Ukonceni prijimani prikazu
if((timer>0))
{
switch(getc())
 
if((buf[0]=='S')&&(n>=4)) // Zmena stavu svetla
{
case '3':
getc(); // A
if((getc()=='U')) {up(&r103A,&tr103A);} else {down(&r103A,&tr103A);}
break;
case '4':
c=getc();
if(c=='A') if((getc()=='U')) {up(&r104A,&tr104A);} else {down(&r104A,&tr104A);}
if(c=='B') if((getc()=='U')) {up(&r104B,&tr104B);} else {down(&r104B,&tr104B);}
break;
case 'a':
getc(); // A
if((getc()=='U')) {up(&r110A,&tr110A);} else {down(&r110A,&tr110A);}
break;
if(buf[1]=='1')
{
switch(buf[2])
{
case '2':
output_toggle(S102A);
break;
case '3':
output_toggle(S103J);
break;
case '4':
output_toggle(S104A);
break;
case '5':
if(buf[3]=='A') {output_toggle(S105A);}
if(buf[3]=='Z') {output_toggle(S105Z);}
break;
case '6':
output_toggle(S106A);
break;
case '7':
output_toggle(S107A);
break;
case '8':
output_toggle(S108A);
break;
case '9':
output_toggle(S109A);
break;
case 'a':
output_toggle(S110J);
output_toggle(S110N);
break;
}
}
}
if((buf[0]=='R')&&(n>=5)) // Zmena stavu rolety
{
if(buf[1]=='1')
{
switch(buf[2])
{
case '3':
if(buf[4]=='U') {up(&r103V,&tr103V);} else {down(&r103V,&tr103V);}
break;
case '4':
if(buf[3]=='V') if((buf[4]=='U')) {up(&r104V,&tr104V);} else {down(&r104V,&tr104V);}
if(buf[3]=='J') if((buf[4]=='U')) {up(&r104J,&tr104J);} else {down(&r104J,&tr104J);}
break;
case 'a':
if((buf[4]=='U')) {up(&r110N,&tr110N);} else {down(&r110N,&tr110N);}
break;
}
}
}
}
}
 
output_toggle(LED1); // Prijmuli jsme cely prikaz
}
else
{
run(103A);
run(104A);
run(104B);
run(103V); // Rizeni rolet za behu
run(104V);
run(104J);
 
switch(r110A)
{
case STOP:
OFF(R110AU);
OFF(R110AD);
break;
case GO_UP:
ON(R110AU);
OFF(R110AD);
if(tr110A==0) {r110A=STOP;}
break;
case GO_DOWN:
OFF(R110AU);
ON(R110AD);
if(tr110A==0) {r110A=STOP;}
break;
case REVERS_UP:
OFF(R110AU);
OFF(R110AD);
if(tr110A==0) {r110A=GO_UP; tr110A=GO_ZALUZIE;}
break;
case REVERS_DOWN:
OFF(R110AU);
OFF(R110AD);
if(tr110A==0) {r110A=GO_DOWN; tr110A=GO_ZALUZIE;}
break;
}
switch(r110N) // Zaluzie ma specielni rizeni
{
case STOP:
OFF(R110NU);
OFF(R110ND);
break;
case GO_UP:
ON(R110NU);
OFF(R110ND);
if(tr110N==0) {r110N=STOP;}
break;
case GO_DOWN:
OFF(R110NU);
ON(R110ND);
if(tr110N==0) {r110N=STOP;}
break;
case REVERS_UP:
OFF(R110NU);
OFF(R110ND);
if(tr110N==0) {r110N=GO_UP; tr110N=GO_ZALUZIE;}
break;
case REVERS_DOWN:
OFF(R110NU);
OFF(R110ND);
if(tr110N==0) {r110N=GO_DOWN; tr110N=GO_ZALUZIE;}
break;
}
/*
switch(r110A)
{
350,7 → 376,6
break;
}
*/
restart_wdt();
}
restart_wdt();
}
}
/Designs/dum/SW/2patra/2np/main.h
1,7 → 1,7
#include <18F8310.h>
#device adc=8
 
#FUSES WDT //No Watch Dog Timer
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES NOBROWNOUT //No brownout reset
/Designs/dum/SW/2patra/2np/main.pjt
49,6 → 49,6
1=main.c
2=main.h
3=..\..\..\..\..\..\..\..\..\Program Files\PICC\Devices\18F8310.h
4=..\1np\ble\main.c
4=
5=..\..\..\..\MRAKOMER4\SW\irmrak4.c
6=