Rev 73 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 73 | Rev 97 | ||
|---|---|---|---|
| Line 1... | Line 1... | ||
| 1 | /********************************************************************* |
1 | /********************************************************************* |
| 2 | * |
2 | * |
| 3 | * CAN driver |
3 | * CAN driver |
| 4 | * |
4 | * |
| 5 | ********************************************************************* |
5 | ********************************************************************* |
| 6 | * FileName: CAN.c |
6 | * FileName: $HeadURL: https://svn.auml.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canToSerial/Source/CAN.c $ |
| 7 | * |
- | |
| 8 | * |
7 | * Last changed: $LastChangedDate: 2006-11-14 21:22:17 +0100 (Tue, 14 Nov 2006) $ |
| 9 | * |
8 | * By: $LastChangedBy: johboh $ |
| 10 | * |
9 | * Revision: $Revision: 97 $ |
| 11 | ********************************************************************/ |
10 | ********************************************************************/ |
| 12 | 11 | ||
| 13 | #include <CANdefs.h> |
12 | #include <CANdefs.h> |
| 14 | #include <stackTasks.h> |
13 | #include <stackTasks.h> |
| 15 | #include <CAN.h> |
14 | #include <CAN.h> |
| Line 67... | Line 66... | ||
| 67 | BRGCON3bits.SEG2PH2 = 0; |
66 | BRGCON3bits.SEG2PH2 = 0; |
| 68 | BRGCON3bits.SEG2PH1 = 0; |
67 | BRGCON3bits.SEG2PH1 = 0; |
| 69 | BRGCON3bits.SEG2PH0 = 1; |
68 | BRGCON3bits.SEG2PH0 = 1; |
| 70 | 69 | ||
| 71 | ECANCON=0; |
70 | ECANCON=0; |
| 72 | ECANCONbits.MDSEL1 = |
71 | ECANCONbits.MDSEL1 = 1; |
| 73 | ECANCONbits.MDSEL0 = |
72 | ECANCONbits.MDSEL0 = 0; |
| 74 | 73 | ||
| 75 | 74 | ||
| 76 | // FILTERS AND MASKS |
75 | // FILTERS AND MASKS |
| 77 | RXB0CONbits.RXM1=1; |
76 | RXB0CONbits.RXM1=1; |
| 78 | RXB0CONbits.RXM0=0; |
77 | RXB0CONbits.RXM0=0; |
| Line 115... | Line 114... | ||
| 115 | * Affects: interrupt registers and receive data buffers |
114 | * Affects: interrupt registers and receive data buffers |
| 116 | * Depends: .. |
115 | * Depends: .. |
| 117 | */ |
116 | */ |
| 118 | void canISR() |
117 | void canISR() |
| 119 | { |
118 | { |
| 120 | - | ||
| 121 | - | ||
| 122 | if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) |
119 | if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) |
| 123 | { |
120 | { |
| 124 | // Get which buffer that is ful. |
- | |
| 125 |
|
121 | ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); |
| 126 |
|
122 | if (RXB0CONbits.RXFUL) canGetPacket(); |
| 127 | else if (B0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10010; canGetPacket(); } |
- | |
| 128 | else if (B1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10011; canGetPacket(); } |
- | |
| 129 | else if (B2CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10100; canGetPacket(); } |
- | |
| 130 | else if (B3CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10101; canGetPacket(); } |
- | |
| 131 | else if (B4CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10110; canGetPacket(); } |
- | |
| 132 | else if (B5CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10111; canGetPacket(); } |
- | |
| 133 | - | ||
| 134 | if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0;} |
- | |
| 135 | if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0;} |
- | |
| 136 | if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0;} |
- | |
| 137 | 123 | ||
| - | 124 | if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} |
|
| - | 125 | if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} |
|
| - | 126 | if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} |
|
| 138 | } |
127 | } |
| 139 | } |
128 | } |
| 140 | 129 | ||
| 141 | 130 | ||
| 142 | /* |
131 | /* |