1 | reset_can();
|
2 | //mode: configuration
|
3 | can_mode(0x80);
|
4 |
|
5 | // Die drei folgenden Settings wurden ermittelt anhand von
|
6 | // "Kvaser Bit Timing Calculator" mit folgenden Eingabewerten:
|
7 | // fclock (MCP)= 20MHz
|
8 | // Bit-Rate = 1000 kBit/s
|
9 |
|
10 | //Konfiguartions-Mode
|
11 | send_can_command(CNF1, 0x00);
|
12 | send_can_command(CNF2, 0x92);
|
13 | send_can_command(CNF3, 0x02);
|
14 |
|
15 | // kein priorität
|
16 | send_can_command(TXB0CTRL, 0x00);
|
17 | send_can_command(TXB1CTRL, 0x00);
|
18 | send_can_command(TXB2CTRL, 0x00);
|
19 |
|
20 | // keine filterung
|
21 | send_can_command(RXM0SIDH, 0x00);
|
22 | send_can_command(RXM0SIDL, 0x00);
|
23 |
|
24 | send_can_command(RXM1SIDH, 0x00);
|
25 | send_can_command(RXM1SIDL, 0x00);
|
26 |
|
27 | send_can_command(RXF0SIDH, 0x00);
|
28 | send_can_command(RXF0SIDL, 0x00);
|
29 |
|
30 | send_can_command(RXF1SIDH, 0x00);
|
31 | send_can_command(RXF1SIDL, 0x00);
|
32 |
|
33 | send_can_command(RXF2SIDH, 0x00);
|
34 | send_can_command(RXF2SIDL, 0x00);
|
35 |
|
36 | send_can_command(RXF3SIDH, 0x00);
|
37 | send_can_command(RXF3SIDL, 0x00);
|
38 |
|
39 | send_can_command(RXF4SIDH, 0x00);
|
40 | send_can_command(RXF4SIDL, 0x00);
|
41 |
|
42 | send_can_command(RXF5SIDH, 0x00);
|
43 | send_can_command(RXF5SIDL, 0x00);
|
44 |
|
45 | //Receive all valid messages
|
46 | send_can_command(RXB0CTRL, 0x00);
|
47 | send_can_command(RXB1CTRL, 0x00);
|
48 |
|
49 | //Transmit
|
50 | send_can_command(TXB0SIDL, 0x00);
|
51 | send_can_command(TXB1SIDH, 0x00);
|
52 |
|
53 | // enable Interrupts nur RX*-Register
|
54 | send_can_command(CANINTE, 0x23);
|
55 | send_can_command(CANINTF, CANINTF_ALL_CLEAR);
|
56 |
|
57 | //normal mode + one shot mode
|
58 | can_mode(0x08);//08
|
59 |
|
60 | return TRUE
|