1 | /*-----------------------------------------------------------------------------
|
---|
2 | bcan.h -- Interface to Basic CAN Controller Chip PCA82C200
|
---|
3 |
|
---|
4 | Copyright (c) 1994 JANZ Computer AG
|
---|
5 | All Rights Reserved
|
---|
6 |
|
---|
7 | Created 94/10/11 by Soenke Hansen
|
---|
8 | Version 1.18 of 00/03/30
|
---|
9 |
|
---|
10 | Prototypes for functions in bcan.c.
|
---|
11 | Macros for descriptor word, CAN identifiers, RTR bits, and data length codes.
|
---|
12 | Defintions of register addresses and values for the Basic CAN controller.
|
---|
13 |
|
---|
14 | -----------------------------------------------------------------------------*/
|
---|
15 |
|
---|
16 | #ifndef bcan_DEFINED
|
---|
17 | #define bcan_DEFINED
|
---|
18 |
|
---|
19 | #ifdef __cplusplus
|
---|
20 | extern "C" {
|
---|
21 | #endif
|
---|
22 |
|
---|
23 | #include "defs.h"
|
---|
24 | #include "msg.h"
|
---|
25 |
|
---|
26 | /*-------- COBs CAN Communication Objects ----------------------------------*/
|
---|
27 |
|
---|
28 | /* COBs (CAN Communication Objects) consists of the following data:
|
---|
29 | WORD_t desc;
|
---|
30 | BYTE_t data[8];
|
---|
31 | The format of the descriptor word follows that of the PCA82C200 controller:
|
---|
32 | desc >> 5 is the 11-bit identifier
|
---|
33 | desc & 0x0010 is set iff the RTR bit is set
|
---|
34 | desc & 0x000f is the data length code DLC
|
---|
35 | There are at most 8 data bytes in data[] (DLC <= 8).
|
---|
36 | */
|
---|
37 |
|
---|
38 | /* RTR bit in COB descriptor */
|
---|
39 | #define COBD_RTR 0x0010
|
---|
40 |
|
---|
41 | /* Get RTR bit from COB descriptor */
|
---|
42 | #define cobd_get_rtr(desc) ((desc) & COBD_RTR)
|
---|
43 |
|
---|
44 | /* Get data length code from COB descriptor */
|
---|
45 | #define cobd_get_dlc(desc) ((desc) & 0x000f)
|
---|
46 |
|
---|
47 | /* Get real data length */
|
---|
48 | #define cobd_get_len(desc) (((desc) & COBD_RTR) ? 0 : \
|
---|
49 | (((desc) & 0x08) ? 8 : (desc) & 0x07))
|
---|
50 |
|
---|
51 | /* Get id and RTR bit from COB descriptor */
|
---|
52 | #define cobd_get_id_rtr(desc) ((desc) & 0xfff0)
|
---|
53 |
|
---|
54 | /* Get RTR bit and data length code from COB descriptor */
|
---|
55 | #define cobd_get_rtr_dlc(desc) ((desc) & 0x001f)
|
---|
56 |
|
---|
57 | /* Get identifier from COB descriptor */
|
---|
58 | #define cobd_get_id(desc) ((desc) >> 5) /* numerical value of id */
|
---|
59 |
|
---|
60 | /* Shift identifier for oring into COB descriptor */
|
---|
61 | #define cobd_id_to_desc(id) ((id) << 5)
|
---|
62 |
|
---|
63 | /* Set COB descriptor from Id, and data length code, with or without RTR */
|
---|
64 | #define cobd_set(id, dlc) (((id) << 5) | (0x000f & (WORD_t)(dlc)))
|
---|
65 | #define cobd_setrtr(id, dlc) (((id) << 5) | COBD_RTR | (0x000f & (WORD_t)(dlc)))
|
---|
66 |
|
---|
67 |
|
---|
68 | /*-------- Definitions of registers ----------------------------------------*/
|
---|
69 |
|
---|
70 | /*
|
---|
71 | * 82C200 and SJA1000 in BasicCAN Mode
|
---|
72 | */
|
---|
73 |
|
---|
74 | /* PCA82C200 Address Allocation */
|
---|
75 | #define BCAN_CR 0 /* control register */
|
---|
76 | #define BCAN_CMR 1 /* command register */
|
---|
77 | #define BCAN_SR 2 /* status register */
|
---|
78 | #define BCAN_IR 3 /* interrupt register */
|
---|
79 | #define BCAN_AC 4 /* acceptance code register */
|
---|
80 | #define BCAN_AM 5 /* acceptance mask register */
|
---|
81 | #define BCAN_BT0 6 /* bus timing register 0 */
|
---|
82 | #define BCAN_BT1 7 /* bus timing register 1 */
|
---|
83 | #define BCAN_OCR 8 /* output control register */
|
---|
84 | #define BCAN_TDESC1 10 /* first descriptor transmit buffer */
|
---|
85 | #define BCAN_TDESC2 11 /* second descriptor transmit buffer */
|
---|
86 | #define BCAN_TDATA 12 /* start data transmit buffer */
|
---|
87 | #define BCAN_RDESC1 20 /* first descriptor receive buffer */
|
---|
88 | #define BCAN_RDESC2 21 /* second descriptor receive buffer */
|
---|
89 | #define BCAN_RDATA 22 /* start data receive buffer */
|
---|
90 | #define BCAN_CDR 31 /* clock divider */
|
---|
91 |
|
---|
92 |
|
---|
93 | /* Control Register Bits */
|
---|
94 | #define BCAN_CR_OIE 0x10 /* Overrun Interrupt Enable */
|
---|
95 | #define BCAN_CR_EIE 0x08 /* Error Interrupt Enable */
|
---|
96 | #define BCAN_CR_TIE 0x04 /* Transmit Interrupt Enable */
|
---|
97 | #define BCAN_CR_RIE 0x02 /* Receive Interrupt Enable */
|
---|
98 | #define BCAN_CR_RR 0x01 /* Reset Request */
|
---|
99 |
|
---|
100 | /* Command Register Bits */
|
---|
101 | #define BCAN_CMR_GTS 0x10 /* Goto Sleep */
|
---|
102 | #define BCAN_CMR_COS 0x08 /* Clear Overrun Status */
|
---|
103 | #define BCAN_CMR_RRB 0x04 /* Release Receive Buffer */
|
---|
104 | #define BCAN_CMR_AT 0x02 /* Abort Transmission */
|
---|
105 | #define BCAN_CMR_TR 0x01 /* Transmission Request */
|
---|
106 |
|
---|
107 | /* Status Register Bits */
|
---|
108 | #define BCAN_SR_BS 0x80 /* Bus Status */
|
---|
109 | #define BCAN_SR_ES 0x40 /* Error Status */
|
---|
110 | #define BCAN_SR_TS 0x20 /* Transmit Status */
|
---|
111 | #define BCAN_SR_RS 0x10 /* Receive Status */
|
---|
112 | #define BCAN_SR_TCS 0x08 /* Transmission Complete Status */
|
---|
113 | #define BCAN_SR_TBS 0x04 /* Transmit Buffer Status */
|
---|
114 | #define BCAN_SR_DO 0x02 /* Data Overrun */
|
---|
115 | #define BCAN_SR_RBS 0x01 /* Receive Buffer Status */
|
---|
116 |
|
---|
117 | /* Interrupt Register Bits */
|
---|
118 | #define BCAN_IR_WUI 0x10 /* Wake-Up Interrupt */
|
---|
119 | #define BCAN_IR_OI 0x08 /* Overrun Interrupt */
|
---|
120 | #define BCAN_IR_EI 0x04 /* Error Interrupt */
|
---|
121 | #define BCAN_IR_TI 0x02 /* Transmit Interrupt */
|
---|
122 | #define BCAN_IR_RI 0x01 /* Receive Interrupt */
|
---|
123 |
|
---|
124 |
|
---|
125 | /*
|
---|
126 | * JSA1000 in PeliCAN mode
|
---|
127 | */
|
---|
128 |
|
---|
129 | /* PeliCAN mode address allocation */
|
---|
130 | #define PCAN_MODR 0 /* Mode register (rw) */
|
---|
131 | #define PCAN_CMR 1 /* Command register (wo) */
|
---|
132 | #define PCAN_SR 2 /* Status register (ro) */
|
---|
133 | #define PCAN_IR 3 /* Interrupt register (ro) */
|
---|
134 | #define PCAN_IER 4 /* Interrupt enable register (rw) */
|
---|
135 | #define PCAN_BTR0 6 /* Bus timing register 0 (ro, rw) */
|
---|
136 | #define PCAN_BTR1 7 /* Bus timing register 1 (ro, rw) */
|
---|
137 | #define PCAN_OCR 8 /* Output control register 1 (ro, rw) */
|
---|
138 | #define PCAN_TESTR 9 /* Test register */
|
---|
139 | #define PCAN_ALCR 11 /* Arbitration lost capture reg (ro) */
|
---|
140 | #define PCAN_ECCR 12 /* Error code capture register (ro) */
|
---|
141 | #define PCAN_EWLR 13 /* Error warning limit register (ro, rw) */
|
---|
142 | #define PCAN_RXERR 14 /* Rx error counter register (ro, rw) */
|
---|
143 | #define PCAN_TXERR 15 /* Tx error counter register (ro, rw) */
|
---|
144 | #define PCAN_ACR0 16 /* acceptance code register 0 (-, rw) */
|
---|
145 | #define PCAN_ACR1 17 /* acceptance code register 1 (-, rw) */
|
---|
146 | #define PCAN_ACR2 18 /* acceptance code register 2 (-, rw) */
|
---|
147 | #define PCAN_ACR3 19 /* acceptance code register 3 (-, rw) */
|
---|
148 | #define PCAN_AMR0 20 /* acceptance mask register 0 (-, rw) */
|
---|
149 | #define PCAN_AMR1 21 /* acceptance mask register 1 (-, rw) */
|
---|
150 | #define PCAN_AMR2 22 /* acceptance mask register 2 (-, rw) */
|
---|
151 | #define PCAN_AMR3 23 /* acceptance mask register 3 (-, rw) */
|
---|
152 | #define PCAN_RXFI 16 /* Rx Frame info SFF, EFF (ro, -) */
|
---|
153 | #define PCAN_RXID1 17 /* Rx Identifier 1 SFF, EFF (ro, -) */
|
---|
154 | #define PCAN_RXID2 18 /* Rx Identifier 2 SFF, EFF (ro, -) */
|
---|
155 | #define PCAN_RXID3 19 /* Rx Identifier 3 EFF (ro, -) */
|
---|
156 | #define PCAN_RXID4 20 /* Rx Identifier 4 EFF (ro, -) */
|
---|
157 | #define PCAN_RXSFFD 19 /* Rx standard frame data (ro, -) */
|
---|
158 | #define PCAN_RXEFFD 21 /* Rx extended frame data (ro, -) */
|
---|
159 | #define PCAN_TXFI 16 /* Tx Frame info SFF, EFF (wo, -) */
|
---|
160 | #define PCAN_TXID1 17 /* Tx Identifier 1 SFF, EFF (wo, -) */
|
---|
161 | #define PCAN_TXID2 18 /* Tx Identifier 2 SFF, EFF (wo, -) */
|
---|
162 | #define PCAN_TXID3 19 /* Tx Identifier 3 EFF (wo, -) */
|
---|
163 | #define PCAN_TXID4 20 /* Tx Identifier 4 EFF (wo, -) */
|
---|
164 | #define PCAN_TXSFFD 19 /* Tx standard frame data (wo, -) */
|
---|
165 | #define PCAN_TXEFFD 21 /* Tx extended frame data (wo, -) */
|
---|
166 | #define PCAN_RXMCR 29 /* Rx message counter register (ro) */
|
---|
167 | #define PCAN_RXBSAR 30 /* Rx buffer start address register (ro, rw) */
|
---|
168 | #define PCAN_CDR 31 /* Clock divider register ('rw', rw)*/
|
---|
169 |
|
---|
170 | #define PCAN_RXFI_RAM 96 /* RAM mirror of RXFI */
|
---|
171 | #define PCAN_TXFI_RAM 96 /* RAM mirror of TXFI */
|
---|
172 | #define PCAN_TXID1_RAM 97 /* RAM mirror Tx Identifier 1 SFF, EFF */
|
---|
173 | #define PCAN_TXID2_RAM 98 /* RAM mirror Tx Identifier 2 SFF, EFF */
|
---|
174 | #define PCAN_TXID3_RAM 99 /* RAM mirror Tx Identifier 3 EFF */
|
---|
175 | #define PCAN_TXID4_RAM 100 /* RAM mirror Tx Identifier 4 EFF */
|
---|
176 | #define PCAN_TXSFFD_RAM 99 /* RAM mirror Tx standard frame data */
|
---|
177 | #define PCAN_TXEFFD_RAM 101 /* RAM mirror Tx extended frame data */
|
---|
178 |
|
---|
179 |
|
---|
180 | /* Mode Register Bits */
|
---|
181 | #define PCAN_MODR_SM (1<<4) /* Sleep mode */
|
---|
182 | #define PCAN_MODR_AFM (1<<3) /* Acceptance filter mode */
|
---|
183 | #define PCAN_MODR_STM (1<<2) /* Self test mode */
|
---|
184 | #define PCAN_MODR_LOM (1<<1) /* Listen only mode */
|
---|
185 | #define PCAN_MODR_RM (1<<0) /* Reset mode */
|
---|
186 |
|
---|
187 | /* Command Register Bits */
|
---|
188 | #define PCAN_CMR_SRR (1<<4) /* Self reception request */
|
---|
189 | #define PCAN_CMR_CDO (1<<3) /* Clear data overrun */
|
---|
190 | #define PCAN_CMR_RRB (1<<2) /* Release receive buffer */
|
---|
191 | #define PCAN_CMR_AT (1<<1) /* Abort transmission */
|
---|
192 | #define PCAN_CMR_TR (1<<0) /* Transmission request */
|
---|
193 |
|
---|
194 | /* Status Register Bits */
|
---|
195 | #define PCAN_SR_BS (1<<7) /* Bus status */
|
---|
196 | #define PCAN_SR_ES (1<<6) /* Error status */
|
---|
197 | #define PCAN_SR_TS (1<<5) /* Transmit status */
|
---|
198 | #define PCAN_SR_RS (1<<4) /* Receive status */
|
---|
199 | #define PCAN_SR_TCS (1<<3) /* Transmission complete status */
|
---|
200 | #define PCAN_SR_TBS (1<<2) /* Transmit buffer status */
|
---|
201 | #define PCAN_SR_DOS (1<<1) /* Data overrun status */
|
---|
202 | #define PCAN_SR_RBS (1<<0) /* Receive buffer status */
|
---|
203 |
|
---|
204 | /* Interrupt Register Bits */
|
---|
205 | #define PCAN_IR_BEI (1<<7) /* Bus-eror interrupt */
|
---|
206 | #define PCAN_IR_ALI (1<<6) /* Arbitration lost interrupt */
|
---|
207 | #define PCAN_IR_EPI (1<<5) /* Error-passive interrupt */
|
---|
208 | #define PCAN_IR_WUI (1<<4) /* Wake-up interrupt */
|
---|
209 | #define PCAN_IR_DOI (1<<3) /* Data-overrun interrupt */
|
---|
210 | #define PCAN_IR_EI (1<<2) /* Error interrupt */
|
---|
211 | #define PCAN_IR_TI (1<<1) /* Transmit interrupt */
|
---|
212 | #define PCAN_IR_RI (1<<0) /* Receive interrupt */
|
---|
213 |
|
---|
214 | /* Interrupt enable register bits */
|
---|
215 | #define PCAN_IER_BEIE (1<<7) /* Bus-eror interrupt enable */
|
---|
216 | #define PCAN_IER_ALIE (1<<6) /* Arbitration lost interrupt enable */
|
---|
217 | #define PCAN_IER_EPIE (1<<5) /* Error-passive interrupt enable */
|
---|
218 | #define PCAN_IER_WUIE (1<<4) /* Wake-up interrupt enable */
|
---|
219 | #define PCAN_IER_DOIE (1<<3) /* Data-overrun interrupt enable */
|
---|
220 | #define PCAN_IER_EIE (1<<2) /* Error warning interrupt enable */
|
---|
221 | #define PCAN_IER_TIE (1<<1) /* Transmit interrupt enable */
|
---|
222 | #define PCAN_IER_RIE (1<<0) /* Receive interrupt enable */
|
---|
223 |
|
---|
224 | /* Clock divider register bits */
|
---|
225 | #define PCAN_CDR_PCAN (1<<7) /* Enable PCAN mode */
|
---|
226 | #define PCAN_CDR_CBP (1<<6) /* Enable Rx input comparator bypass */
|
---|
227 | #define PCAN_CDR_RXINTEN (1<<5) /* Enable RXINT output at TX1 */
|
---|
228 | #define PCAN_CDR_CLKOFF (1<<3) /* Disable clock output */
|
---|
229 |
|
---|
230 | /* Bit definitions for Rx/Tx Frame info */
|
---|
231 | #define PCAN_FINFO_FF (1<<7) /* Frame format bit */
|
---|
232 | #define PCAN_FINFO_EFF (1<<7) /* Extended frame indication */
|
---|
233 | #define PCAN_FINFO_RTR (1<<6) /* RTR frame bit */
|
---|
234 | #define PCAN_FINFO_DLC_MASK (0x0f) /* Data length code mask */
|
---|
235 |
|
---|
236 |
|
---|
237 |
|
---|
238 | /*
|
---|
239 | * BasicCAN, PeliCAN common definitions.
|
---|
240 | */
|
---|
241 |
|
---|
242 | /* Values of acceptance code/mask registers */
|
---|
243 | #define ACM_ALL word_from_bytes(0x00,0xff) /* accept all ids */
|
---|
244 |
|
---|
245 | /* Values of output control register */
|
---|
246 | #define OCR_PUSHPULL 0xfa /* push/pull */
|
---|
247 |
|
---|
248 | /* Admissable bus timing values (BTR1=msb, BTR0=lsb) */
|
---|
249 | #ifdef OSC_16MHZ /* if using a 16 MHz oscillator */
|
---|
250 | #define BTR_1MB 0x2300 /* 1 MBaud */
|
---|
251 | #if 0
|
---|
252 | #define BTR_1MB 0x1400 /* 1 MBaud */ /* The better value */
|
---|
253 | #endif
|
---|
254 | #define BTR_800KB 0x2500 /* 800 KBaud */
|
---|
255 | #define BTR_500KB 0x1c00 /* 500 KBaud */
|
---|
256 | #define BTR_250KB 0x1c01 /* 250 KBaud */
|
---|
257 | #define BTR_125KB 0x1c03 /* 125 KBaud */
|
---|
258 | #define BTR_100KB 0x34c7 /* 100 KBaud */
|
---|
259 | #define BTR_62_5KB 0xbac7 /* 62.5 KBaud */
|
---|
260 | #define BTR_50KB 0x34cf /* 50 KBaud */
|
---|
261 | #define BTR_20KB 0x7fcf /* 20 KBaud */
|
---|
262 | #define BTR_10KB 0x7fdf /* 10 KBaud */
|
---|
263 | #endif
|
---|
264 |
|
---|
265 | /* Admissable values in clock divider register */
|
---|
266 | #ifdef OSC_16MHZ /* if using a 16 MHz oscillator */
|
---|
267 | #define CDR_16MHZ 0x07 /* 16 MHz output */
|
---|
268 | #define CDR_8MHZ 0x00 /* 8 MHz output (division by 2) */
|
---|
269 | #define CDR_4MHZ 0x01 /* 4 MHz output (division by 4) */
|
---|
270 | #define CDR_2MHZ 0x03 /* 2 MHz output (division by 8) */
|
---|
271 | #endif
|
---|
272 |
|
---|
273 | /*-------- Gloal variables in bcan.c ---------------------------------------*/
|
---|
274 |
|
---|
275 | /* Indicates that we are using SJA1000 in pelican mode */
|
---|
276 | extern short pcan_mode;
|
---|
277 |
|
---|
278 | /* ----------------------- BulkBuffer-Stuff --------------------------*/
|
---|
279 | /* must be greater than length of biggest message type!!! */
|
---|
280 | #define BULK_LEFT_FREE 14
|
---|
281 |
|
---|
282 | #define DEFAULT_MAX_BULK_BUF_BYTE_COUNT MSGLEN
|
---|
283 | /* we need a minimum size of bulk buffer to generate messages */
|
---|
284 | /* of a certain format (not bounde, but allocated buffer!) */
|
---|
285 | /* to satisfy the message-handling inside the asm isr */
|
---|
286 | #define DEFAULT_MIN_BULK_BUF_BYTE_COUNT 20
|
---|
287 | #define DEFAULT_BULK_PREALLOC_COUNT 20
|
---|
288 |
|
---|
289 | /* Timer value for elapsed (e.g.) ms to determine */
|
---|
290 | /* if it is time to send current BulkBuffer. Will */
|
---|
291 | /* be maintained in timer.c */
|
---|
292 | extern LWORD_t bulkBufTim;
|
---|
293 |
|
---|
294 | void configBulkBuffer(unsigned short, unsigned char, unsigned char);
|
---|
295 |
|
---|
296 | /* ----------------------- SniffBuffer-Stuff --------------------------*/
|
---|
297 | /* must be greater than length of biggest message type!!! */
|
---|
298 | #define SNIFF_LEFT_FREE 26
|
---|
299 |
|
---|
300 | #define DEFAULT_MAX_SNIFF_BUF_BYTE_COUNT MSGLEN
|
---|
301 | /* we need a minimum size of sniff buffer to generate messages */
|
---|
302 | /* of a certain format (not bounde, but allocated buffer!) */
|
---|
303 | /* to satisfy the message-handling inside the asm isr */
|
---|
304 | #define DEFAULT_MIN_SNIFF_BUF_BYTE_COUNT 20
|
---|
305 | #define DEFAULT_SNIFF_PREALLOC_COUNT 20
|
---|
306 |
|
---|
307 | /* Timer value for elapsed (e.g.) ms to determine */
|
---|
308 | /* if it is time to send current SniffBuffer. Will */
|
---|
309 | /* be maintained in timer.c */
|
---|
310 | extern LWORD_t sniffBufTim;
|
---|
311 |
|
---|
312 | void configSniffBuffer(unsigned short, unsigned char, unsigned char);
|
---|
313 | void configSniffBufferEcho(unsigned short);
|
---|
314 | /* valid values for echo2sniff, configured by configSniffBufferEcho: */
|
---|
315 | #define SNIFF_ECHO_FROM_CANLOOK (1 << 0)
|
---|
316 | #define SNIFF_ECHO_FROM_PLAINQ (1 << 1)
|
---|
317 | #define SNIFF_ECHO_FROM_FASTQ (1 << 2)
|
---|
318 | #define SNIFF_RX_FROM_CAN (1 << 3)
|
---|
319 |
|
---|
320 |
|
---|
321 | /* message-commands inside sniff-message */
|
---|
322 | #define SNIFF_MS_ECHO_FROM_PLAIN_STD 3
|
---|
323 | #define SNIFF_MS_ECHO_FROM_PLAIN_XTD 4 /* not yet used */
|
---|
324 | #define SNIFF_MS_ECHO_FROM_FAST_STD 5
|
---|
325 | #define SNIFF_MS_ECHO_FROM_FAST_XTD 6
|
---|
326 | #define SNIFF_MS_ECHO_FROM_CANLOOK_STD 7
|
---|
327 | #define SNIFF_MS_ECHO_FROM_CANLOOK_XTD 8
|
---|
328 | #define SNIFF_MS_CAN_RX_STD 9
|
---|
329 | #define SNIFF_MS_CAN_RX_XTD 10
|
---|
330 | #define SNIFF_MS_MSG_LOST 0x80
|
---|
331 | #define SNIFF_MS_UNKNOWN 0xff
|
---|
332 |
|
---|
333 |
|
---|
334 | /* -----------------------Busload-Statistic-Stuff --------------------------*/
|
---|
335 | #define BUS_LOAD_STAT_SEND_TO_HOST (1 << 0)
|
---|
336 | #define BUS_LOAD_STAT_INTEGR_TIME_ELAPSED (1 << 1)
|
---|
337 | #define BUS_LOAD_STAT_ENABLED (1 << 7)
|
---|
338 |
|
---|
339 | #define BUS_LOAD_REQUEST_ALL 0
|
---|
340 | #define BUS_LOAD_REQUEST_STD 1
|
---|
341 | #define BUS_LOAD_REQUEST_XTD 2
|
---|
342 | #define BUS_LOAD_REQUEST_RX 3
|
---|
343 | #define BUS_LOAD_REQUEST_TX 4
|
---|
344 |
|
---|
345 | void resetBusLoad(void);
|
---|
346 | void configBusLoad(WORD_t, BYTE_t);
|
---|
347 | void sendBusLoadToHost(void);
|
---|
348 | void busLoadUpdate(void);
|
---|
349 | void checkBusLoadStatistic(void);
|
---|
350 |
|
---|
351 | void resetBusLoadSniff(void);
|
---|
352 | void configBusLoadSniff(WORD_t, BYTE_t);
|
---|
353 | void sendBusLoadToHostSniff(void);
|
---|
354 | void busLoadUpdateSniff(void);
|
---|
355 | void checkBusLoadStatisticSniff(void);
|
---|
356 |
|
---|
357 | /*-------- Functions in bcan.c ---------------------------------------------*/
|
---|
358 |
|
---|
359 | /* Switch to bus-on state */
|
---|
360 | extern void buson_bcan(void);
|
---|
361 |
|
---|
362 | /* Reset: Switch to bus-off state */
|
---|
363 | extern void busoff_bcan(void);
|
---|
364 |
|
---|
365 | /* Set bus timing registers (assumed state: bus-off) */
|
---|
366 | extern void write_btr_bcan(WORD_t);
|
---|
367 |
|
---|
368 | /* Set error waring limit */
|
---|
369 | void write_ewl_bcan( BYTE_t ewl);
|
---|
370 |
|
---|
371 | /* Control bus-error reporting */
|
---|
372 | void switch_berr_bcan( BYTE_t state);
|
---|
373 |
|
---|
374 | /* provide access to berrs_to_go outside bcan.c */
|
---|
375 | BYTE_t getBerrsToGo(void);
|
---|
376 |
|
---|
377 | /* Control listen only mode */
|
---|
378 | void switch_lom_bcan( BYTE_t state);
|
---|
379 |
|
---|
380 | /* Control self test mode */
|
---|
381 | void switch_stm_bcan( BYTE_t state);
|
---|
382 |
|
---|
383 | /* Set hardware acceptance filter */
|
---|
384 | extern void write_acm_bcan(WORD_t);
|
---|
385 |
|
---|
386 | /* Set extended hardware acceptance filter */
|
---|
387 | void write_ext_acm_bcan(int mode, LWORD_t ac, LWORD_t am);
|
---|
388 |
|
---|
389 | /* Abort current transmission */
|
---|
390 | extern void sendabort_bcan(void);
|
---|
391 |
|
---|
392 | /* Flush the transmit queue. */
|
---|
393 | extern void flush_tx_bcan(void);
|
---|
394 |
|
---|
395 | /* Initialize the BCAN controller. The controller is left in the bus-off
|
---|
396 | state. To start communication buson_bcan() must be called.
|
---|
397 | All interrupt sources are accepted. All messages pass the acceptance
|
---|
398 | filter. The bus timing and the clock divider registers are initialized
|
---|
399 | with the parameters to the function. */
|
---|
400 | extern void init_bcan(WORD_t, WORD_t, WORD_t, WORD_t);
|
---|
401 |
|
---|
402 | /* Service of BCAN message pool -- to be called cyclically */
|
---|
403 | extern void serv_bcan(void);
|
---|
404 |
|
---|
405 | /* Interrupt service for PCA82C200. */
|
---|
406 | extern void isr_bcan(void);
|
---|
407 | #ifdef ASSHACK
|
---|
408 | extern void a_isr_bcan(void);
|
---|
409 | extern void a_isr_bcan_end(void);
|
---|
410 | #endif
|
---|
411 |
|
---|
412 |
|
---|
413 | /* Request to send a CAN message: Fill the transmit buffer of the
|
---|
414 | CAN chip and issue a transmit request.
|
---|
415 | Return values: 1 okay, transmit request accepted by controller
|
---|
416 | 0 remote request successful
|
---|
417 | -1 transmit request failed (no buffer, no mem)
|
---|
418 | */
|
---|
419 | extern int sendreq_bcan(
|
---|
420 | int, /* transmit request specifier */
|
---|
421 | WORD_t, /* request id */
|
---|
422 | WORD_t, /* descriptor (id, rtr, dlc) */
|
---|
423 | BYTE_t * /* data bytes */
|
---|
424 | );
|
---|
425 |
|
---|
426 | #ifdef __cplusplus
|
---|
427 | }
|
---|
428 | #endif
|
---|
429 |
|
---|
430 | #endif /* !bcan_DEFINED */
|
---|