inline void motor_step (uint8_t motor) { if (motor == 0) { output_toggle(MOTOR0_PORT, MOTOR0_STEP); } else if (motor == 1) { output_toggle(MOTOR1_PORT, MOTOR1_STEP); } else if (motor == 2) { output_toggle(MOTOR2_PORT, MOTOR2_STEP); } else if (motor == 3) { output_toggle(MOTOR3_PORT, MOTOR3_STEP); } else if (motor == 4) { output_toggle(MOTOR4_PORT, MOTOR4_STEP); } return; }
void main() { clock_int_4MHz(); //Função necessária para habilitar o dual clock (48MHz para USB e 4MHz para CPU) disparo=read_eeprom(10); //carrega o último valo ajustado if (disparo==0xff) {disparo=0; write_eeprom(10,0);} //inicio de operação após gravação enable_interrupts(GLOBAL); enable_interrupts(INT_EXT); //enable_interrupts(INT_EXT1); ext_int_edge(L_TO_H); while(true) { ++i; if (i>=50000) {i=0; output_toggle(pin_b7);} //Led de visualização if(!input(botao))//botão de incremento de fase { delay_ms(100); while(!input(botao)) delay_ms(100); //filtro botão disparo++; // na prática está identificando o zero só uma vez por ciclo if(disparo>=7) {disparo=7;} //o botão no pino E3 regula o ângulo de disparo write_eeprom(10, disparo); } if(!input(botao1)) { delay_ms(100); while(!input(botao1)) delay_ms(100); disparo--; if(disparo<=1) {disparo=1;} write_eeprom(10, disparo); } } }
void RTCC_isr() //function interrupción TMR0 { set_TIMER0(5); //inicializa el timer0 para que cuente 0.2 us output_toggle(PIN_B2); set_TIMER0(5); //inicializa el timer0 para que cuente 0.2 us cont++; //Giro en un sentido if(input(PIN_B0)==1){ if ((int16)cont==(int16)10){ cont=0; output_high(PIN_B3);} if((int16)comp1==(int16)cont){ output_low(PIN_B3);} } if (input(PIN_B0)==0) output_low(PIN_B3); //--------------Giro opuesto---------------- if(input(PIN_B1)==1){ if ((int16)cont==(int16)10){ cont=0; output_high(PIN_B4);} if((int16)comp1==(int16)cont){ output_low(PIN_B4);} } if (input(PIN_B1)==0) output_low(PIN_B4); }
void RTCC_isr(void) { //output_toggle(PIN_B6); switch(levelEnable){ case 0:output_a(level_0_Enable); output_c(cubeLevelC0); output_d(cubeLevelD0); break; case 1:output_a(level_1_Enable); output_c(cubeLevelC1); output_d(cubeLevelD1); break; case 2:output_a(level_2_Enable); output_c(cubeLevelC2); output_d(cubeLevelD2); break; case 3:output_a(level_3_Enable); output_c(cubeLevelC3); output_d(cubeLevelD3); break; } if (levelEnable == 3){ levelEnable = 0; }else{ levelEnable++; } output_toggle(PIN_B6); }
void recepcao_serial() { comando[n]=RCREG; m=n;comand[n]= comando[n]; if (comando[0]!='L' && flagstart==0) {flagstart=1; flagBD=1; zeit=1; n=0;} if (comando[0]==65) {flag=1;pisca=0;zeit=1; } ++n; switch (comando[0]) { case 79 : { chegou=1; flag=0; m=0; flagBD=0;} break; /* case 'R' : { if (n>=4) {comand[1]=255-comando[1]; //Led RGB anodo comum// comand[2]=255-comando[2];comand[3]= 255-comando[3]; n=0; comando[0]=32; output_toggle(pin_b7); chegou=0; zeit=0;}} //Anodo comum break; */ case 'R' : { if (n>=4) {comand[1]=comando[1]; //Led RGB catodo comum// comand[2]=comando[2];comand[3]= comando[3]; n=0; comando[0]=32; output_toggle(pin_b7); chegou=0; zeit=0;}} //Catodo comum break; case 'L' : {flag=0; n=0; c=1; chegou=0; zeit=1;output_high(pin_B7);pisca=0;} break; case 'D' : {flag=0; n=0; chegou=0; zeit=1;output_low(pin_B7);pisca=0;} break; case 'P': { pisca=1; flag=0; n=0; chegou=0; zeit=1; } break; } }
void timer() { set_timer0(0x8ad0); if(DelayCount) { --DelayCount; } //Blink if(BlinkMode == 0) { if(cnt == 20) { output_toggle(LEDR); cnt = 0; } else { cnt++; } } //Chirp if(BlinkMode == 2) { if(!cnt) { output_low(LEDR); } else { cnt--; } } }
void TIMER0_isr(void) { set_timer0 (0x00); cont_tiempo++; if (cont_tiempo == 2023) { output_toggle(PIN_D0); cont_tiempo = 0; } } //Se recarga el timer0
void main(void) { printf("System enabled\n\r"); Motor_Init(PWM_PERIOD); enable_interrupts(INT_RDA); //enable_interrupts(INT_EXT0); //ext_int_edge(L_TO_H); while(true) { Set_Motor_Duty(0,0); while(!input_state(PIN_F6)&&!RUN )//&& !RUN) //While loop used for waiting an input high in D8 to start { output_toggle(PIN_E2); delay_ms(15); Read_Sensors_Digital(sensors_BIN); Get_Average_Center_Digital(sensors_BIN,2,12,¢er); printf("%c\n\r",(center+65)); } output_high(PIN_E2); delay_ms(2000); if(!RUN) RUN=0xFF; while(RUN){ //output_toggle(PIN_E2); Read_Sensors_Digital(sensors_BIN); Get_Average_Center_Digital(sensors_BIN,2,12,¢er); if(center==-1) center=last_center; Print_Center(center); last_center=center; error=SET_POINT-center; derivative=error-last_error; //if(derivative<-6||derivative>6) {derivative=0; error=last_error;} if(error>4 || error<-4) integral=integral+error; else integral=0; if(integral>100) integral=100; if(integral*(-1)>100) integral=-100; correction=error*(KP)+derivative*(KD)+integral*(KI); last_error=error; if(center>13 && center<19 && BoostCounter<24) { BoostCounter++; if(BoostCounter>3) base_speed=1400; //set_motor_pwm_duty(3,3,2500);correction=0 ;//Boost=499-BaseSpeed; } else { BoostCounter=0; base_speed=1000;//set_motor_pwm_duty(3,3,2650);} } left_correction=(base_speed)-correction; right_correction=(base_speed)+correction; Set_Motor_Duty(left_correction,right_correction); delay_us(delay_time); printf("%c\n\r",(center+65)); //for(i=2;i<=12;i++)printf("%d",Sensors_BIN[i]); //printf("%c\n",(center+65)); } } }
void main() { while (1) { output_toggle(pin_B7); // comuta Led na função principal delay_ms(500); } }
void interruption() { set_timer0(6); Contador--; if(Contador == 0) { output_toggle(PIN_A0); Contador = 250; } }
void isr_tmr0() { clear_interrupt(INT_TIMER0); output_toggle(pos_mstr); if (!ctrlFusoM) if (mstr_sobe) fuso_mstr++; else fuso_mstr--; ctrlFusoM = !ctrlFusoM; }
void main() { //clock_int_4MHz(); while (1) { output_toggle(pin_B7); // comuta Led na função principal delay_ms(500); } }
void isr_tmr1() { clear_interrupt(INT_TIMER1); set_timer1(0x7FFF); output_toggle(pos_slv); if (!ctrlFusoE) if (slv_sobe) fuso_slv++; else fuso_slv--; ctrlFusoE = !ctrlFusoE; }
void MotorE(void){ for(;;){ OS_Wait(numPulsosE>0); if(dirMotorE==1) output_high(dirE); if(dirMotorE==2) output_low(dirE); if(--numPulsosE!=0) output_toggle(clockE); else output_low(clockE); OS_Delay(periodoPulsosE); OS_Yield(); } }
void MotorZ(void){ for(;;){ OS_Wait(numPulsosZ>0); if(dirMotorZ==8) output_high(dirZ); if(dirMotorZ==4) output_low(dirZ); if(--numPulsosZ!=0) output_toggle(clockZ); else output_low(clockZ); OS_Delay(periodoPulsosZ); OS_Yield(); } }
void MotorY(void){ for(;;){ OS_Wait(numPulsosY>0); if(dirMotorY==32) output_high(dirY); if(dirMotorY==16) output_low(dirY); if(--numPulsosY!=0) output_toggle(clockY); else output_low(clockY); OS_Delay(periodoPulsosY); OS_Yield(); } }
void MotorX(void){ for(;;){ OS_Wait(numPulsosX>0); if(dirMotorX==64) output_high(dirX); if(dirMotorX==128) output_low(dirX); if(--numPulsosX!=0) output_toggle(clockX); else output_low(clockX); OS_Delay(periodoPulsosX); OS_Yield(); } }
void TIMER1_isr(void) { set_timer1(timer1StartValue); //output_toggle(PIN_B7); if(stateControl < 3){ stateControl++; }else{ stateControl = 0; } switch (modeControl){ case 0: cubeLevelC0 = Mode1_CubeLevelC0[stateControl]; cubeLevelC1 = Mode1_CubeLevelC1[stateControl]; cubeLevelC2 = Mode1_CubeLevelC2[stateControl]; cubeLevelC3 = Mode1_CubeLevelC3[stateControl]; cubeLevelD0 = Mode1_CubeLevelD0[stateControl]; cubeLevelD1 = Mode1_CubeLevelD1[stateControl]; cubeLevelD2 = Mode1_CubeLevelD2[stateControl]; cubeLevelD3 = Mode1_CubeLevelD3[stateControl]; break; case 1: cubeLevelC0 = Mode2_CubeLevelC0[stateControl]; cubeLevelC1 = Mode2_CubeLevelC1[stateControl]; cubeLevelC2 = Mode2_CubeLevelC2[stateControl]; cubeLevelC3 = Mode2_CubeLevelC3[stateControl]; cubeLevelD0 = Mode2_CubeLevelD0[stateControl]; cubeLevelD1 = Mode2_CubeLevelD1[stateControl]; cubeLevelD2 = Mode2_CubeLevelD2[stateControl]; cubeLevelD3 = Mode2_CubeLevelD3[stateControl]; break; case 2: cubeLevelC0 = rand (); cubeLevelC1 = rand (); cubeLevelC2 = rand (); cubeLevelC3 = rand (); cubeLevelD0 = rand (); cubeLevelD1 = rand (); cubeLevelD2 = rand (); cubeLevelD3 = rand (); break; } output_toggle(PIN_B7); }
void main() { enable_interrupts(GLOBAL); // Possibilita todas interrupcoes enable_interrupts(INT_RDA); // Interrupcao da serial output_toggle(pin_B7);// pisca Led delay_ms (500); while(1) { if (!input(pin_e3)) { reset_cpu(); } //se pressionar o botão no pino 1 sem retirar o cabo, reseta e entra em estado de gravação while (pisca==1) { output_toggle(pin_B7); delay_ms(300); }//pisca rápido } }
void isr_timer2() { ms++; if(ms==250) { sec++; ms=0; printf("%Lu",sec); output_toggle(PIN_B1); } }
void Gla(void){ for(;;){ OS_Wait(GlaoGlc==3); //OS_Bsem_Wait(BS_GLAGLC_FREE); output_toggle(PIN_B7); //-- 1023/255=4.012, necesita adaptarse al mismo rango //-- porque el valorR que llega desde el GUI tiene max=255 r=(float)(valorR*4.012); control=(unsigned int16)r; set_pwm1_duty(control); OS_Delay(1000); //OS_Bsem_Set(BS_GLAGLC_FREE); OS_Yield(); } }
void Glc_PIDdiscreto(void){ for(;;){ OS_Wait(GlaoGlc==2); //2 //OS_Bsem_Wait(BS_GLAGLC_FREE); output_toggle(PIN_B7); valorY=read_adc(ADC_READ_ONLY); //-- debido al ADC 10bits, la conversion se realiza con 10bits, //-- entonces valorY tiene rango de 0 a 1023 y=(float)valorY; //-- 1023/255=4.012, necesita adaptarse al mismo rango //-- porque el valorR que llega desde el GUI tiene max=255 r=(float)(valorR*4.012); //---------------------------------------------------------------------- //-- Calculo PID por metodo tustin para termino integral //-- y metodo de diferencias hacia atras para termino derivativo //-- Sea e(kT)=e; e(kT-T)=e1 e=r-y; //Sea p(kT)=p; i(kT)=i; i(kT-T)=i1; d(kT)=d p=Kpz*e; //i=i1+Kiz*e; //diferencia hacia atras i=i1+Kiz*(e+e1); //tustin d=Kdz*(e-e1); //diferencia hacia atras //Sea u(kT)=u u=p+i+d; //-- Anti-windup solo al termino integral para evitar que se infle //-- y se haga muy grande si la accion de control se satura, por tanto //-- es necesario impedir que cambie i //if((u>max) | (u<min)) {i=i-Ki*T*e;} //diferencia hacia atras //if((u>max) | (u<min)) i=i-Kiz*(e+e1); //tustin if(u>max)u=max; if(u<min)u=min; //-- realizar la conversion final control=(unsigned int16)u; set_pwm1_duty(control); e1=e; i1=i; OS_Delay(5000); //OS_Bsem_Set(BS_GLAGLC_FREE); OS_Yield(); } }
//------------------------------------------------------------------------------ void main(){ int i; setup_adc_ports(NO_ANALOGS|VSS_VDD); setup_adc(ADC_CLOCK_DIV_2|ADC_TAD_MUL_0); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_wdt(WDT_OFF); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_timer_3(T3_DISABLED|T3_DIV_BY_1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); disable_interrupts(INT_TIMER0); enable_interrupts(INT_RDA); enable_interrupts(GLOBAL); setup_oscillator(OSC_8MHZ|OSC_TIMER1|OSC_31250|OSC_PLL_OFF); output_low(PIN_C5); while(TRUE){ if(f_process){ f_process=0; output_toggle(PIN_C5); disable_interrupts(INT_RDA); printf("\n\r"); for(i=0;i<(cont-2);i++){ printf("vector[%u]=%c\n\r",i,p[i]); //muestro los datos recibidos } procesar_guardar(); cont=0; printf("Fin programacion\n\r"); enable_interrupts(INT_RDA); } } }
void main() { setup_timer_0 (RTCC_INTERNAL|RTCC_DIV_256); setup_timer_1 (T1_INTERNAL|T1_DIV_BY_8); setup_timer_2(T2_DIV_BY_16,155,1); setup_ccp1(CCP_PWM); set_pwm1_duty(0); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); enable_interrupts (int_TIMER1); enable_interrupts (GLOBAL); config (); while (true) { if (ReceberComando ()==1) { output_toggle (led) ; verificaComando (cmd[2]); } } }
void EXT_isr(void) { output_toggle(PIN_B7); }
void main() { taxa_serial(9600); enable_interrupts(GLOBAL); enable_interrupts(INT_RDA); #priority rda //serial for(k=0;k<=25;k++){comando[k]=32;} for(k=0;k<=25;k++){comand[k]=32;} //Es vesucht mindestens einmal shreiben, wenn es lehr ist. SPBRGH = 0x02; SPBRG = 0x70; while(1) { while (pisca==1){output_toggle(pin_B7);delay_ms (300);n=0;m=0;} while (chegou==1){ output_toggle(pin_B7);delay_ms(200); if(flagBD==0 && c1==3){ c1=2; write_eeprom(251,2);} serial_putc(79);serial_putc(75);serial_putc(32);n=0; } if (flagBD==1 && chegou==0 && c==0){ SPBRGH = 0x04; SPBRG = 0xE1; serial_putc(S);serial_putc(a);serial_putc(an);serial_putc(u);serial_putc(us); serial_putc(b);serial_putc(x);serial_putc(z); delay_ms(1000); output_toggle(pin_b7); SPBRGH = 0x02; SPBRG = 0x70; } if (flag==1) { flag=0; output_toggle(pin_b7); if (m==12) {comand[1]=a;comand[3]=78;comand[5]=77;comand[8]=S;comand[10]=b;comand[12]=u; for(k=0;k<=m;k++){serial_putc(comand[k]);} for(k=m+1;k<25;k++){serial_putc(32);} ++j;if(j>=5){j=0;flagBD=1;} } write_eeprom(250,m); //PLatz von m-Byte-Zaeler if (c==1){ for(k=0;k<=25;k++){serial_putc(comand[k]);} for(k=0;k<=25;k++){comando[k]=32;comand[k]=32;} n=0;m=0; } delay_ms(1000); } if(chegou==0 && zeit==1){ c1=read_eeprom(251);if(c1==255){++c2;if(c2>3){write_eeprom(251,3);}}//Das erste Lesen ist 255 if (c==0 && c1==3 && flagBD==0){output_toggle(pin_b7);//write_eeprom(251,3); if(m<=12 || m==255){flag=1; m=12; comand[0]=S;comand[2]=an;comand[4]=S;comand[6]=69;comand[7]=83;comand[9]=78;comand[11]=83; } } delay_ms(1000);n=0;} delay_us(30); ++i; //if(i>255) {i=0;} if(i>=comand[1]){output_low(pinored);} else {output_high(pinored);} if(i>=comand[2]){output_low(pinoblue);} else {output_high(pinoblue);} if(i>=comand[3]){output_low(pinogreen);} else {output_high(pinogreen);} }}
void main() { enable_interrupts(INT_RDA); enable_interrupts(INT_EXT1); enable_interrupts(global); setup_psp(PSP_DISABLED); setup_wdt(WDT_OFF); setup_timer_0(RTCC_INTERNAL); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_timer_3(T3_DISABLED|T3_DIV_BY_1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); setup_adc( ADC_OFF ); //setup_adc_ports(NO_ANALOGS|VREF_VREF); // setup_oscillator(OSC_8MHZ|OSC_TIMER1|OSC_PLL_OFF); glcd_init(ON); int8 axt,axp,axv; axt = read_eeprom(0x01); axp = read_eeprom(0x02); axv = read_eeprom(0x03); if(axt==1) { UniTemp[0]="C"; } if(axt==2) { UniTemp[0]="F"; } if(axp==1) { UniPres[0]="Pa"; } if(axp==2) { UniPres[0]="mBa"; } if(axv==1) { UniVel[0]="m/s"; } if(axv==2) { UniVel[0]="km/h"; } if(axv==3) { UniVel[0]="Nud"; } int16 auxi; int8 type,z; int8 string[10]; int16 tt; int32 pp; char tprint [15]; char pprint [15]; char ttt[10]; char ppp[10]; char temp[] = "T:"; char pres[] = "P:"; for (z=0;z<15;z++) { tprint[z]=0; pprint[z]=0; } //firstrun = read_eeprom(0x00); draw_sect(); while (1) { if (firstrun==71) { glcd_loadscreen(); glcd_showlogo(); delay_ms(1500); menu_mainmenu(); firstrun = 0; write_eeprom(0x00, firstrun); } if (config==1) { menu_mainmenu(); if(UniTemp[1]=="C") { write_eeprom(0x01, 1); } else if(UniTemp[1]=="F") { write_eeprom(0x01, 2); } if(UniPres[1]=="P") { write_eeprom(0x02, 1); } else if(UniPres[1]=="m") { write_eeprom(0x02, 2); } if(UniVel[1]=="m") { write_eeprom(0x03, 1); } else if(UniVel[1]=="k") { write_eeprom(0x03, 2); } else if(UniVel[1]=="N") { write_eeprom(0x03, 3); } pressed=0; config=0; } if (try==1) { try=0; output_toggle(PIN_C2); } while(bkbhit) { auxi = bgetc(); if (auxi==0x54) { type=1; for(i=0;i<15;i++) { string[i]=0x00; } i = 0; } if (auxi==0x50) { type=2; for(i=0;i<15;i++) { string[i]=0x00; } i = 0; } if (auxi!=0x0D) { } if (type==1) //Temperatura { if ((auxi!=0x0D)&&(auxi!=0x54)) { string[i] = auxi; i++; } if (auxi==0x0D) { str_init(tprint); tt = atol(string); sprintf(ttt,"%3.1w",tt); strcat(tprint,temp); strcat(tprint,ttt); strcat(tprint,UniTemp); draw_sect(); glcd_text_sec(1, 1, tprint, OFF); glcd_update(); } } if (type==2) //Presion { if ((auxi!=0x0D)&&(auxi!=0x50)) { string[i] = auxi; i++; } if (auxi==0x0D) { str_init(pprint); pp = atoi32(string); sprintf(ppp,"%3.1w",pp); strcat(pprint,pres); strcat(pprint,ppp); strcat(pprint,UniPres); draw_sect(); glcd_text_sec(1, 2, pprint, OFF); glcd_update(); } } glcd_update(); //END KBHIT } glcd_update(); //ENDWHILE } //ENDMAIN }
void main() { mydevices.numberOfInputs=0; mydevices.numberOfOutputs=0; clock = 0; ledErrorCounter=0; hw_setup(); //TODO: User Code //struct switches array[NUMBER_OF_SWITCHES]; /* button_test(); dimmer_test(); */ ///////////////SALA////////////////////////////// /* eeprom_on_off_init(20,21,6);//2 int Grande a comecar da esquerda eeprom_on_off_init(22,23,0);//2 //eeprom_dimmer_init(40,41,42,7);//2 eeprom_on_off_init(41,42,7);//2 eeprom_on_off_init(26,27,3);//2 ///Sanca parede grande unsigned int on_adr[8]={20,255,255,255,255,255,255,255}; unsigned int off_adr[8]={21,255,255,255,255,255,255,255}; eeprom_onOff_out_init(on_adr,off_adr,3);//Sanca parede grande eeprom_onOff_out_init(on_adr,off_adr,5);//Sanca parede grande ///Sanca parede rosa unsigned int on_adrr[8]={22,255,255,255,255,255,255,255}; unsigned int off_adrr[8]={23,255,255,255,255,255,255,255}; eeprom_onOff_out_init(on_adrr,off_adrr,7);//Sanca parede grande on_adrr[1]=26; off_adrr[1]=27; eeprom_onOff_out_init(on_adrr,off_adrr,4);//Sanca parede grande ///VARANDA unsigned int dimmer_dim_adr[8]={40,255,255,255,255,255,255,255}; unsigned int dimmer_on_adr[8]={41,255,255,255,255,255,255,255}; unsigned int dimmer_off_adr[8]={42,255,255,255,255,255,255,255}; //eeprom_dimmer_out_init(dimmer_dim_adr,dimmer_on_adr,dimmer_off_adr,6);//varanda eeprom_onOff_out_init(dimmer_on_adr,dimmer_off_adr,6);//varanda eeprom_button_init(28,29,4,true);//estores down eeprom_button_init(30,31,5,true);//estores up unsigned int up_adr[8]={30,255,255,255,255,255,255,255}; unsigned int down_adr[8]={28,255,255,255,255,255,255,255}; unsigned int x_adr[8]={255,255,255,255,255,255,255,255}; eeprom_shutter_out_init(up_adr,down_adr,x_adr,x_adr,8,9,0,10); eeprom_shutter_out_init(up_adr,down_adr,x_adr,x_adr,10,11,0,10); eeprom_shutter_out_init(up_adr,down_adr,x_adr,x_adr,12,13,0,10); eeprom_shutter_out_init(up_adr,down_adr,x_adr,x_adr,14,15,0,10); */ /////////////////////////////////////////////////7 /* ///////////////QUARTO GRANDE////////////////////////////// eeprom_on_off_init(1,2,2);//2 on_adr off_adr real_button inicia botao unsigned int on_adr[8]={1,255,255,255,255,255,255,255}; unsigned int off_adr[8]={2,10,255,255,255,255,255,255}; unsigned int nill_adr[8]={255,255,255,255,255,255,255,255}; unsigned int ventax_off_adr[8]={16,255,255,255,255,255,255,255}; unsigned int x_adr[8]={1,255,255,255,255,255,255,255}; eeprom_onOff_out_init(on_adr,off_adr,4);//SANCA? //outputs 4=sanca 3=casabanho 2=casa de banho 9=ventax 1=corredor ///casa de banho eeprom_on_off_init(3,4,4);//interruptor casa de banho?? off_adr[0]=4; on_adr[0]=3; eeprom_timer_init(off_adr,on_adr,15,16,time_off,60); eeprom_onOff_out_init(on_adr,off_adr,3); //luz casa de banho eeprom_onOff_out_init(on_adr,off_adr,2); //luz2 casa de banho eeprom_onOff_out_init(on_adr,ventax_off_adr,9);//VENTAX ///fim casa de banho //corredor eeprom_on_off_init(17,18,5);//interruptor luz corredor unsigned int corredor_on_adr[8]={17,255,255,255,255,255,255,255}; unsigned int corredor_off_adr[8]={18,255,255,255,255,255,255,255}; eeprom_onOff_out_init(corredor_on_adr,corredor_off_adr,1); //luz corredor //fim corredor eeprom_button_init(5,6,0,true);//2 //estores eeprom_button_init(7,8,1,true);//2 off_adr[0]=255; off_adr[1]=255; on_adr[0]=5; x_adr[0]=7; eeprom_shutter_out_init(on_adr,x_adr,off_adr,off_adr,11,10,0,10);//up down fullup full down eeprom_on_off_init(9,10,6); eeprom_on_off_init(20,21,7); unsigned int cama_on_adr[8]={9,255,255,255,255,255,255,255}; unsigned int cama_off_adr[8]={10,255,255,255,255,255,255,255}; eeprom_onOff_out_init(cama_on_adr,cama_off_adr,7); cama_on_adr[0]=20; cama_off_adr[0]=21; eeprom_onOff_out_init(cama_on_adr,cama_off_adr,6); /////////////////////////////////////////////////7 */ /////////////////////QUARTO RENATA/////////////// // // INPUTS // 0,1 cozinha // 2,3 quarto // // OUTPUTS // 5 quarto renata economica // 6 janela hologeneo // 7 entrada // 2 cozinha fluorescente // 3 cima balcao halogeneo // 4 divisoria halogeneo // 10 balcao baixo verde // 11 balcao cima verde // 12 balcao cima vermelho // 13 balcao cima azul // 14 balcao baixo azul // 15 balcao baixo vermelho //INPUT INIT eeprom_on_off_init(60,61,0);//on_adr off_adr real_btn interruptor cozinha 1 eeprom_on_off_init(62,63,1);//on_adr off_adr real_btn interruptor cozinha 2 // eeprom_dimmer_init(68,62,63,1);//dim_adr on_adr off_adr eeprom_on_off_init(64,65,2);//on_adr off_adr real_btn interruptor quarto renata 1 // eeprom_on_off_init(66,67,3);//on_adr off_adr real_btn interruptor quarto renata 2 eeprom_dimmer_init(68,66,67,3);//dim_adr on_adr off_adr //OUTPUT INIT unsigned int on_adr[8]={60,255,255,255,255,255,255,255}; unsigned int off_adr[8]={61,10,255,255,255,255,255,255}; unsigned int dim_adr[8]={68,255,255,255,255,255,255,255}; eeprom_onOff_out_init(on_adr,off_adr,2); //luz cozinha fluorescente on_adr[0]=62; off_adr[0]=63; eeprom_onOff_out_init(on_adr,off_adr,3); //luz cozinha cima balcao halogeneo eeprom_onOff_out_init(on_adr,off_adr,4); //luz cozinha divisoria eeprom_onOff_out_init(on_adr,off_adr,15); //luz balcao baixo vermelho eeprom_onOff_out_init(on_adr,off_adr,12); //luz balcao cima vermelho //eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,3); //luz cozinha cima balcao halogeneo //eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,4); //luz cozinha divisoria //eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,15); //luz cozinha divisoria on_adr[0]=64; off_adr[0]=65; eeprom_onOff_out_init(on_adr,off_adr,5); //luz quarto renata economica on_adr[0]=66; off_adr[0]=67; // eeprom_onOff_out_init(on_adr,off_adr,7); //luz quarto renata entrada // eeprom_onOff_out_init(on_adr,off_adr,6); //luz quarto renata janela eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,7); //luz quarto renata entrada eeprom_dimmer_out_init(dim_adr,on_adr,off_adr,6); //luz quarto renata janela readDevices(); #ifdef DEBUG printf("inputs:%d outputs:%d %d %d\n\r",mydevices.numberOfInputs,mydevices.numberOfOutputs,((struct outputs)mydevices.myoutputs[0]).type,((struct outputs)mydevices.myoutputs[1]).type); #endif dimmer_outputs_init(); // printf("start %Lu %Lu %Lu\n\r",fpointer(N_LUZES,0),delays1[N_LUZES][0],delays2[N_LUZES][0]); /*((struct light)mydevices.myoutputs[0].device).dim_value.value=50; ((struct light)mydevices.myoutputs[0].device).dim_value.needs_update=true; ((struct light)mydevices.myoutputs[0].device).off.value=1; ((struct light)mydevices.myoutputs[0].device).off.needs_update=true; */ write_outputs(); // printf("start %Lu\n\r",fpointer(N_LUZES,0)); interrupts_enable(); while(true){ restart_wdt(); if(syncError || oscError) { ++ledErrorCounter; if(ledErrorCounter>1000) { output_toggle(LED); ledErrorCounter=0; } } #ifdef DEBUG if(kbhit()) { setup_wdt(WDT_OFF); disable_interrupts (GLOBAL) ; goDebug(); } #endif process_outpoints(); write_outputs(); if(secondFlag) { secondFlag=false; processTimedEvents(); if(!syncError && !oscError) output_toggle(LED); } // print_inputs(false); } }
void main(void) { init(); splash(); while (TRUE) { restart_wdt(); #if STACK_USE_SERIAL if (kbhit(USER)) { ui_handle(); } #endif //every second: refresh current IP, blink LED if (second_counter>=1) { display_ip_lcd(); #if defined(USER_LED3) output_toggle(USER_LED3); #endif second_counter=0; } //just something to test the buttons #if STACK_USE_CCS_PICNET if (BUTTON_PRESSED(USER_BUTTON1)) { output_low(USER_LED1); } else { if (g_LEDState[0]) output_low(USER_LED1); else output_high(USER_LED1); } if (BUTTON_PRESSED(USER_BUTTON2)) { output_low(USER_LED2); } else { if (g_LEDState[1]) output_low(USER_LED2); else output_high(USER_LED2); } #elif STACK_USE_CCS_PICENS if (g_LEDState[0]) output_low(USER_LED1); else output_high(USER_LED1); if (g_LEDState[1]) output_low(USER_LED2); else output_high(USER_LED2); if (BUTTON_PRESSED(USER_BUTTON1)) output_low(USER_LED3); #endif #if STACK_USE_PPP if (ppp_is_connected()) { #endif StackTask(); //Microchip's TCP/IP stack handler. Must be called routinely. #if STACK_USE_PPP } #endif } }
void main(){ setup_oscillator( OSC_8MHZ ); //setup_adc_ports(sAN6|VSS_VDD); setup_adc(ADC_CLOCK_INTERNAL); //setup_counters(RTCC_INTERNAL,RTCC_DIV_1); //setup_timer_1(T1_DISABLED); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); state0 = read_eeprom (0); state1 = read_eeprom (1); state2 = read_eeprom (2); //Test the LEDs /* while (1){ output_low(LED0); output_low(LED1); output_low(LED2); delay_ms(1000); output_high(LED0); output_high(LED1); output_high(LED2); delay_ms(1000); } */ //The LEDs are an active High because of the NPN transistor driving the low side if (state0 == 1) output_high(LED0); if (state1 == 1) output_high(LED1); if (state2 == 1) output_high(LED2); //The buttons are an active high to avoid problems with powerdown causing false triggers // while(true) { if(input(button0)){ //Toggle the LED output_toggle(LED0); while (input(button0)){} //Stay right here until button is released //We know button was pressed and released state0 = !state0; write_eeprom(0, state0); } if(input(button1)){ //Toggle the LED output_toggle(LED1); while (input(button1)){} //Stay right here until button is released //We know button was pressed and released state1 = !state1; write_eeprom(1, state1); } if( input(button2) ){ output_toggle(LED2); while (input(button2)){} //Stay right here until button is released //We know button was pressed and released state2 = !state2; write_eeprom(2, state2); } } }