Subversion Repositories HomeAutomation

Rev

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
 * Author               Date    Comment
7
 * Last changed:    $LastChangedDate: 2006-11-14 21:22:17 +0100 (Tue, 14 Nov 2006) $
9
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8
 * By:              $LastChangedBy: johboh $
10
 * Johan Böhlin     21-10-06    Original        (Rev 1.0)
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 = 0;
71
    ECANCONbits.MDSEL1 = 1;
73
    ECANCONbits.MDSEL0 = 1;
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
             if (RXB0CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10000; canGetPacket(); }
121
        ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F));
126
        else if (RXB1CONbits.RXFUL) { ECANCON=(ECANCON&0b00000)|0b10001; canGetPacket(); }
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
/*