X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/3c6d0376edd06bad63e861415974556259f593cd..f6c113a5fb217e7495b93053cf29fa6966923445:/embedded/app/usbcan/can.c diff --git a/embedded/app/usbcan/can.c b/embedded/app/usbcan/can.c index ae9d530..25d7f34 100644 --- a/embedded/app/usbcan/can.c +++ b/embedded/app/usbcan/can.c @@ -35,13 +35,12 @@ void can_comm_init() SET_OUT_PIN(IO0,P0_SJA1000_CS_PIN); CLR_OUT_PIN(IO1,P1_SJA1000_RST_PIN); - for (slowdown=0;slowdown<20*SJA1000_SCLK;slowdown++); + SJA1000_INIT_DELAY(); SET_OUT_PIN(IO0,P0_SJA1000_CS_PIN); // Due to change in design there is CS_PIN connected with ALE_PIN and ALE_PIN connection to LPC is interrupted // CLR_OUT_PIN(IO0,P0_SJA1000_ALE_PIN); SET_OUT_PIN(IO1,P1_SJA1000_RST_PIN); - for (slowdown=0;slowdown<20*SJA1000_SCLK;slowdown++); - + SJA1000_INIT_DELAY(); } int can_write(uint8_t address,uint8_t* data) @@ -52,25 +51,25 @@ int can_write(uint8_t address,uint8_t* data) SET_OUT_PIN(IO0,P0_SJA1000_RD_PIN); // Stays high on write SET_OUT_PIN(IO0,P0_SJA1000_WR_PIN); // Stays high on address write SET_OUT_PIN(IO0,P0_SJA1000_CS_PIN); // Sets output buffers to third state - for (slowdown=0;slowdown20) - return -1; - } while (temp&sjaMOD_RM); - - /// Wait for successfull packet receive or receive error - j=0; - while (!(IO0PIN & P0_SJA1000_INT_PIN)){ - } - - can_read(SJAIR,&temp); - if (temp & sjaIR_RI) - baudset=1; - - /// Back to reset - can_read(SJAMOD,&temp); - temp|=sjaMOD_RM; - can_write(SJAMOD,&temp); - j=0; - do{ - can_read(SJAMOD,&temp); - if (j++>20) - return -1; - } while (!(temp&sjaMOD_RM)); - - if (++i==sja1000_freq_cnt) - return -1; - } while (baudset==0); - return 0; -} - -int can_poll(){ - - return 0; -} - -int can_transmit_direct(uint8_t *data){ - int len=0,ext=0,i; - uint8_t *ptr=data,tmitptr,temp; - ext=(*ptr)& sjaFRM_FF; - len=(*ptr)& 0xFF; - - // check if transmit buffer is free - do { - if (can_poll()==-1) - return -1; - can_read(SJASR,&temp); - temp&=sjaSR_TBS; - } while (!temp); - - tmitptr=SJAFRM; - can_write(tmitptr++,data++); // Header - can_write(tmitptr++,data++); // Ident 1 - can_write(tmitptr++,data++); // Ident 2 - if (ext){ - can_write(tmitptr++,data++); // Ident 3 - can_write(tmitptr++,data++); // Ident 4 - } - for (i=0;i8?0x08:numbytes); - can_write(tmitptr++,&temp); // Header - - can_write(tmitptr++,mask++); // Ident 1 - can_write(tmitptr++,mask++); // Ident 2 - if (ext_header){ - can_write(tmitptr++,mask++); // Ident 3 - can_write(tmitptr++,mask++); // Ident 4 - } - for (i=0;i<(numbytes>8?0x08:numbytes);i++) - can_write(tmitptr++,data++); // Data i; - - // Set TR bit - temp=sjaCMR_TR; - can_write(SJACMR,&temp); - - return 0; -} - -int can_receive(uint8_t len,uint8_t *data){ - - - return 0; -}