X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/6b854a1ee07ddd8638beebf0076c866df50881eb..26fbfa454cdb986c0e18b41bda3a0e8ec54128ba:/embedded/app/usbcan/ul_usb1.c diff --git a/embedded/app/usbcan/ul_usb1.c b/embedded/app/usbcan/ul_usb1.c index 0b3e388..e100f90 100644 --- a/embedded/app/usbcan/ul_usb1.c +++ b/embedded/app/usbcan/ul_usb1.c @@ -295,16 +295,42 @@ int ul_usb1_program_irq(struct candevice_t *candev) * Return Value: The function does not return a value * File: src/ul_usb1.c */ -void ul_usb1_write_register(struct candevice_t *candev,unsigned data, unsigned long address) +void ul_usb1_write_register(unsigned data, unsigned long address) { - struct usb_ul_usb1 *dev; - int retval; - int bytes_transferred; - unsigned char buffer[2]; - buffer[0]=((unsigned char)address & ~CAN_OP_MASK)+CAN_OP_WRITE; - buffer[1]=(unsigned char)data; + IO1DIR|=0x00FF0000; // Port as output to send data + IO1CLR=0x00FF0000; // Clear all data on port + // Init + 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;slowdownsysdevptr.anydev; +// struct usb_ul_usb1 *dev; +// int retval; +// int bytes_transferred; +// unsigned char buffer[2]; +// buffer[0]=((unsigned char)address & ~CAN_OP_MASK)+CAN_OP_WRITE; +// buffer[1]=(unsigned char)data; +// +// dev = (struct usb_ul_usb1 *)candev->sysdevptr.anydev; // mutex_lock(&dev->io_mutex); // if (!dev) { /* disconnect() was called */ @@ -340,16 +366,43 @@ exit: * Return Value: The function returns the value stored in @address * File: src/ul_usb1.c */ -unsigned ul_usb1_read_register(struct candevice_t *candev,unsigned long address) +unsigned ul_usb1_read_register(unsigned long address) { - struct usb_ul_usb1 *dev; - int retval; - int bytes_transferred; - unsigned char buffer[2]; - buffer[0]=((unsigned char)address & ~CAN_OP_MASK)+CAN_OP_READ; - buffer[1]=0x00; - - dev = (struct usb_ul_usb1 *)candev->sysdevptr.anydev; + unsigned data; + IO1DIR|=0x00FF0000; // Port as output to set address + IO1CLR=0x00FF0000; // Clear all data + // Init + SET_OUT_PIN(IO0,P0_SJA1000_WR_PIN); // Stays high on read + SET_OUT_PIN(IO0,P0_SJA1000_RD_PIN); // Stays high while entering address + SET_OUT_PIN(IO0,P0_SJA1000_CS_PIN); + for (slowdown=0;slowdownsysdevptr.anydev; // mutex_lock(&dev->io_mutex); // if (!dev) { /* disconnect() was called */