void configuracion_expansor(void){ output_low(CS); spi_write(0x04); spi_write(0x01); output_high(CS); output_low(CS); spi_write(0x0B); spi_write(0x55); output_high(CS); output_low(CS); spi_write(0x0C); spi_write(0x55); output_high(CS); output_low(CS); spi_write(0x0D); spi_write(0x55); output_high(CS); output_low(CS); spi_write(0x0E); spi_write(0x95); output_high(CS); output_low(CS); spi_write(0x0F); spi_write(0xAA); output_high(CS); } void inicializacion_variables (void){ ADFM=0; for(i=0;i<8;i++) { in_data[i]=0x00; dato[i]=0x00; } pwm1=0x00; pwm2=0x00; canal_0=0x00; canal_1=0x00; canal_3=0x00; can_analog_0_alto=0x00; can_analog_0_bajo=0x00; can_analog_0_aux=0x00; can_analog_1_alto=0x00; can_analog_1_bajo=0x00; can_analog_1_aux=0x00; can_analog_3_alto=0x00; can_analog_3_bajo=0x00; can_analog_3_aux=0x00; can_analog_0_1_3=0x00; ent_dig_exp=0x00; ent_dig_pic=0x00; sal_dig_1=0x00; sal_dig_2=0x00; encoder.cuenta=0; encoder.sentido1=0; encoder.sentido2=0; encoder.sentido3=0; encoder.sentido4=0; encoder.sentido5=0; fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; sentido=TRUE; error=FALSE; contador=0; } void calcula_sentido() { if((fsa==FALSE)&&(fsb==FALSE)&&(fba==FALSE)&&(fbb==FALSE)) { if(((input(GPIN1))==1) && ((input(GPIN2))==0)) { fsa=TRUE; sentido=TRUE; error=FALSE; } else{ if(((input(GPIN1))==0) && ((input(GPIN2))==1)) { fsb=TRUE; sentido=FALSE; error=FALSE; } else{ fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; error=TRUE; } } goto fin; } if((fsa==TRUE) && ((fsb==FALSE)&&(fba==FALSE)&&(fbb==FALSE))) { if(((input(GPIN1))==1) && ((input(GPIN2))==1)) { fsb=TRUE; error=FALSE; } else{ if(((input(GPIN1))==0) && ((input(GPIN2))==0)) { fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; sentido=FALSE; error=FALSE; } else{ fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; error=TRUE; } } goto fin; } if((fsb==TRUE) && ((fsa==FALSE)&&(fba==FALSE)&&(fbb==FALSE))) { if(((input(GPIN1))==1) && ((input(GPIN2))==1)) { fsa=TRUE; error=FALSE; } else{ if(((input(GPIN1))==0) && ((input(GPIN2))==0)) { fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; sentido=TRUE; error=FALSE; } else{ fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; error=TRUE; } } goto fin; } if(((fsa==TRUE)&&(fsb==TRUE)) && ((fba==FALSE)&(fbb==FALSE))) { if(((input(GPIN1))==0) && ((input(GPIN2))==1) && (sentido==TRUE)) { fba=TRUE; error=FALSE; } else{ if(((input(GPIN1))==1) && ((input(GPIN2))==0) && (sentido==FALSE)) { fbb=TRUE; error=FALSE; } else{ if(((input(GPIN1))==1) && ((input(GPIN2))==0) && (sentido==TRUE)) { fbb=TRUE; sentido=FALSE; error=FALSE; } else{ if(((input(GPIN1))==0) && ((input(GPIN2))==1) && (sentido==FALSE)) { fba=TRUE; sentido=TRUE; error=FALSE; } else{ fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; error=TRUE; } } } } goto fin; } if(((fsa==TRUE)&&(fsb==TRUE)&&(fba==TRUE)) && ((fbb==FALSE))) { if(((input(GPIN1))==0) && ((input(GPIN2))==0)) { fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; error=FALSE; } else{ if(((input(GPIN1))==1) && ((input(GPIN2))==1)) { if(sentido==TRUE) { sentido=FALSE; fba=FALSE; error=FALSE; } else { sentido=TRUE; fba=FALSE; error=FALSE; } } else{ fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; error=TRUE; } } goto fin; } if(((fsa==TRUE)&&(fsb==TRUE)&&(fbb==TRUE)) && ((fba==FALSE))) { if(((input(GPIN1))==0) && ((input(GPIN2))==0)) { fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; error=FALSE; } else{ if(((input(GPIN1))==1) && ((input(GPIN2))==1)) { if(sentido==TRUE) { fbb=FALSE; sentido=FALSE; error=FALSE; } else { fbb=FALSE; sentido=TRUE; error=FALSE; } } else{ fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; error=TRUE; } } } fin: etiqueta=1; } void componer_byte_CAN() { switch(contador){ case 1: encoder.sentido1=sh; break; case 2: encoder.sentido2=sh; break; case 3: encoder.sentido3=sh; break; case 4: encoder.sentido4=sh; break; case 5: encoder.sentido5=sh; break; default: encoder.sentido5=sh; break; } encoder.cuenta=contador; } void calcula_sentido_2() { if((fsa==FALSE)&&(fsb==FALSE)&&(fba==FALSE)&&(fbb==FALSE)) { if(((input(GPIN1))==1) && ((input(GPIN2))==0)) { fsa=TRUE; sh=TRUE; sah=FALSE; } if(((input(GPIN1))==0) && ((input(GPIN2))==1)) { fsb=TRUE; sah=TRUE; sh=FALSE; } goto fin; } if((fsa==TRUE) && ((fsb==FALSE)&&(fba==FALSE)&&(fbb==FALSE))) { if(((input(GPIN1))==1) && ((input(GPIN2))==1)) { fsb=TRUE; } if(((input(GPIN1))==0) && ((input(GPIN2))==0)) { fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; sh=FALSE; sah=TRUE; } goto fin; } if((fsb==TRUE) && ((fsa==FALSE)&&(fba==FALSE)&&(fbb==FALSE))) { if(((input(GPIN1))==1) && ((input(GPIN2))==1)) { fsa=TRUE; } if(((input(GPIN1))==0) && ((input(GPIN2))==0)) { fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; sh=TRUE; sah=FALSE; } goto fin; } if(((fsa==TRUE)&&(fsb==TRUE)) && ((fba==FALSE)&(fbb==FALSE))) { if(((input(GPIN1))==0) && ((input(GPIN2))==1) && (sh==TRUE)) { fba=TRUE; } if(((input(GPIN1))==1) && ((input(GPIN2))==0) && (sah==TRUE)) { fbb=TRUE; } if(((input(GPIN1))==1) && ((input(GPIN2))==0) && (sh==TRUE)) { fbb=TRUE; sh=FALSE; sah=TRUE; } if(((input(GPIN1))==0) && ((input(GPIN2))==1) && (sah==TRUE)) { fba=TRUE; sh=TRUE; sah=FALSE; } goto fin; } if(((fsa==TRUE)&&(fsb==TRUE)&&(fba==TRUE)) && ((fbb==FALSE))) { if(((input(GPIN1))==0) && ((input(GPIN2))==0)) { fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; } if(((input(GPIN1))==1) && ((input(GPIN2))==1)) { if(sh==TRUE) { sh=FALSE; sah=TRUE; fba=FALSE; } else { sh=TRUE; sah=FALSE; fba=FALSE; } } goto fin; } if(((fsa==TRUE)&&(fsb==TRUE)&&(fbb==TRUE)) && ((fba==FALSE))) { if(((input(GPIN1))==0) && ((input(GPIN2))==0)) { fsa=FALSE; fsb=FALSE; fba=FALSE; fbb=FALSE; } if(((input(GPIN1))==1) && ((input(GPIN2))==1)) { if(sh==TRUE) { fbb=FALSE; sh=FALSE; sah=TRUE; } else { fbb=FALSE; sh=TRUE; sah=FALSE; } } goto fin; } fin: temp=1; } e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.


DISEÑO Y PROGRAMACIÓN DE UN SISTEMA DE COMUNICACIÓN BASADO EN CAN-BUS

: Jarque García, Rafael
: Ingeniería Telecomunicación
Contenido del proyecto: