]> rtime.felk.cvut.cz Git - sysless.git/commitdiff
can_off() added to can lib
authorMarek Peca <mp@duch.cz>
Mon, 26 Feb 2007 00:23:00 +0000 (00:23 +0000)
committerMarek Peca <mp@duch.cz>
Mon, 26 Feb 2007 00:23:00 +0000 (00:23 +0000)
darcs-hash:20070226002349-b965f-3bb7650f803f2a905db7db10e7ee8907447aec06.gz

arch/arm/mach-lpc21xx/libs/can/can.c
arch/arm/mach-lpc21xx/libs/can/periph/can.h

index 9c60d96736d98b625deef15ab6032d0ab04d6bca..0d7b458e224913db54d3fc279ae282bd3fc2274c 100644 (file)
@@ -43,6 +43,17 @@ void can_init(uint32_t btr, unsigned rx_isr_vect, can_rx_callback rx_cb) {
 #endif
 }
 
+void can_off() {
+  can_rx_cb = NULL;
+  /* disable Rx int */
+  VICIntEnClear = 0x04000000;
+  C1IER = 0x0;
+  /* abort transmission */
+  C1CMR = 0x2;
+  /* switch off the CAN controller */
+  C1MOD = 0x1;
+}
+
 void can_rx_isr() {
   can_rx_msg.flags = C1RFS;
   can_rx_msg.dlc = (can_rx_msg.flags>>16) & 0xf;
index 00e6154603e78446b8e153c971928b972a2181d3..f5e822f379b4ce959d75caae5c754e046d85112e 100644 (file)
@@ -19,6 +19,7 @@ extern volatile can_msg_t can_rx_msg;
 
 /* function prototypes */
 void can_init(uint32_t btr, unsigned rx_isr_vect, can_rx_callback rx_cb);
+void can_off();
 int can_tx_msg(can_msg_t *tx_msg);
 
 /*EOF*/