OpenCores
URL https://opencores.org/ocsvn/mips_enhanced/mips_enhanced/trunk

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [software/] [cantest/] [can_receive_extended.c] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
// Filename          : can_receive_extended.c
2
//-- Description     : Waits (polling) for a can frame in extended frame format
3
//-- Author          : Harald Obereder
4
//-- Created On      : Wed Okt 06 10.07
5
//--
6
//-- CVS entries:
7
//--   $Author: hobe $
8
//--   $Date: 2004/10/12 12:47:19 $
9
//--   $Revision: 1.2 $
10
//--   $State: Exp $ 
11
 
12
 
13
// addressdefinition for basic can registers
14
// tb...transmit buffer
15
// rb...receive buffer
16
#define basic
17
#define extended
18
 
19
#ifdef basic
20
 
21
#define control_register *((uint8 *)(0xfffc0000))
22
#define command_register *((unsigned char *)(0xfffc0001))
23
#define status_register *((unsigned char *)(0xfffc0002))
24
#define interrupt_register *((unsigned char *)(0xfffc0003))
25
#define acceptance_code_register *((unsigned char *)(0xfffc0004))
26
#define acceptance_mask_register *((unsigned char *)(0xfffc0005))
27
#define bus_timing_0_register *((unsigned char *)(0xfffc0006))
28
#define bus_timing_1_register *((unsigned char *)(0xfffc0007))
29
#define output_control_register *((unsigned char *)(0xfffc0008))
30
#define test_register *((unsigned char *)(0xfffc0009))
31
#define tb_identifier_byte_0 *((unsigned char *)(0xfffc000A))
32
#define tb_identifier_byte_1 *((unsigned char *)(0xfffc000B))
33
#define tb_data_byte_1 *((unsigned char *)(0xfffc000C))
34
#define tb_data_byte_2 *((unsigned char *)(0xfffc000D))
35
#define tb_data_byte_3 *((unsigned char *)(0xfffc000E))
36
#define tb_data_byte_4 *((unsigned char *)(0xfffc000F))
37
#define tb_data_byte_5 *((unsigned char *)(0xfffc0010))
38
#define tb_data_byte_6 *((unsigned char *)(0xfffc0011))
39
#define tb_data_byte_7 *((unsigned char *)(0xfffc0012))
40
#define tb_data_byte_8 *((unsigned char *)(0xfffc0013))
41
#define rb_identifier_byte_0 *((unsigned char *)(0xfffc0014))
42
#define rb_identifier_byte_1 *((unsigned char *)(0xfffc0015))
43
#define rb_data_byte_1 *((unsigned char *)(0xfffc0016))
44
#define rb_data_byte_2 *((unsigned char *)(0xfffc0017))
45
#define rb_data_byte_3 *((unsigned char *)(0xfffc0018))
46
#define rb_data_byte_4 *((unsigned char *)(0xfffc0019))
47
#define rb_data_byte_5 *((unsigned char *)(0xfffc001A))
48
#define rb_data_byte_6 *((unsigned char *)(0xfffc001B))
49
#define rb_data_byte_7 *((unsigned char *)(0xfffc001C))
50
#define rb_data_byte_8 *((unsigned char *)(0xfffc001D))
51
#define Extra_register *((unsigned char *)(0xfffc001E))
52
#define clock_divider_register *((unsigned char *)(0xfffc001F))
53
 
54
#endif
55
 
56
#ifdef extended
57
#define control_register *((unsigned char *)(0xfffc0000))
58
#define command_register *((unsigned char *)(0xfffc0001))
59
#define status_register *((unsigned char *)(0xfffc0002))
60
#define interrupt_register *((unsigned char *)(0xfffc0003))
61
#define interrupt_enable_register *((unsigned char *)(0xfffc0004))
62
#define reserved_register *((unsigned char *)(0xfffc0005))
63
#define bus_timing_0_register *((unsigned char *)(0xfffc0006))
64
#define bus_timing_1_register *((unsigned char *)(0xfffc0007))
65
#define output_control_register *((unsigned char *)(0xfffc0008))
66
#define test_register *((unsigned char *)(0xfffc0009))
67
#define reserved_1_register *((unsigned char *)(0xfffc000A))
68
#define arbitration_lost_capture *((unsigned char *)(0xfffc000B))
69
#define error_code_capture *((unsigned char *)(0xfffc000C))
70
#define error_warning_limit *((unsigned char *)(0xfffc000D))
71
#define rx_error_counter *((unsigned char *)(0xfffc000E))
72
#define tx_error_counter *((unsigned char *)(0xfffc000F))
73
 
74
#define acceptance_code_0 *((unsigned char *)(0xfffc0010))
75
#define acceptance_code_1 *((unsigned char *)(0xfffc0011))
76
#define acceptance_code_2 *((unsigned char *)(0xfffc0012))
77
#define acceptance_code_3 *((unsigned char *)(0xfffc0013))
78
#define acceptance_mask_0 *((unsigned char *)(0xfffc0014))
79
#define acceptance_mask_1 *((unsigned char *)(0xfffc0015))
80
#define acceptance_mask_2 *((unsigned char *)(0xfffc0016))
81
#define acceptance_mask_3 *((unsigned char *)(0xfffc0017))
82
 
83
#define rx_frame_information_sff *((unsigned char *)(0xfffc0010))
84
#define rx_identifier_1_sff *((unsigned char *)(0xfffc0011))
85
#define rx_identifier_2_sff *((unsigned char *)(0xfffc0012))
86
#define rx_data_1_sff *((unsigned char *)(0xfffc0013))
87
#define rx_data_2_sff *((unsigned char *)(0xfffc0014))
88
#define rx_data_3_sff *((unsigned char *)(0xfffc0015))
89
#define rx_data_4_sff *((unsigned char *)(0xfffc0016))
90
#define rx_data_5_sff *((unsigned char *)(0xfffc0017))
91
#define rx_data_6_sff *((unsigned char *)(0xfffc0018))
92
#define rx_data_7_sff *((unsigned char *)(0xfffc0019))
93
#define rx_data_8_sff *((unsigned char *)(0xfffc001A))
94
 
95
#define rx_frame_information_eff *((unsigned char *)(0xfffc0010))
96
#define rx_identifier_1_eff *((unsigned char *)(0xfffc0011))
97
#define rx_identifier_2_eff *((unsigned char *)(0xfffc0012))
98
#define rx_identifier_3_eff *((unsigned char *)(0xfffc0013))
99
#define rx_identifier_4_eff *((unsigned char *)(0xfffc0014))
100
#define rx_data_1_eff *((unsigned char *)(0xfffc0015))
101
#define rx_data_2_eff *((unsigned char *)(0xfffc0016))
102
#define rx_data_3_eff *((unsigned char *)(0xfffc0017))
103
#define rx_data_4_eff *((unsigned char *)(0xfffc0018))
104
#define rx_data_5_eff *((unsigned char *)(0xfffc0019))
105
#define rx_data_6_eff *((unsigned char *)(0xfffc001A))
106
#define rx_data_7_eff *((unsigned char *)(0xfffc001B))
107
#define rx_data_8_eff *((unsigned char *)(0xfffc001C))
108
 
109
#define tx_frame_information_sff *((unsigned char *)(0xfffc0010))
110
#define tx_identifier_1_sff *((unsigned char *)(0xfffc0011))
111
#define tx_identifier_2_sff *((unsigned char *)(0xfffc0012))
112
#define tx_data_1_sff *((unsigned char *)(0xfffc0013))
113
#define tx_data_2_sff *((unsigned char *)(0xfffc0014))
114
#define tx_data_3_sff *((unsigned char *)(0xfffc0015))
115
#define tx_data_4_sff *((unsigned char *)(0xfffc0016))
116
#define tx_data_5_sff *((unsigned char *)(0xfffc0017))
117
#define tx_data_6_sff *((unsigned char *)(0xfffc0018))
118
#define tx_data_7_sff *((unsigned char *)(0xfffc0019))
119
#define tx_data_8_sff *((unsigned char *)(0xfffc001A))
120
 
121
#define tx_frame_information_eff *((unsigned char *)(0xfffc0010))
122
#define tx_identifier_1_eff *((unsigned char *)(0xfffc0011))
123
#define tx_identifier_2_eff *((unsigned char *)(0xfffc0012))
124
#define tx_identifier_3_eff *((unsigned char *)(0xfffc0013))
125
#define tx_identifier_4_eff *((unsigned char *)(0xfffc0014))
126
#define tx_data_1_eff *((unsigned char *)(0xfffc0015))
127
#define tx_data_2_eff *((unsigned char *)(0xfffc0016))
128
#define tx_data_3_eff *((unsigned char *)(0xfffc0017))
129
#define tx_data_4_eff *((unsigned char *)(0xfffc0018))
130
#define tx_data_5_eff *((unsigned char *)(0xfffc0019))
131
#define tx_data_6_eff *((unsigned char *)(0xfffc001A))
132
#define tx_data_7_eff *((unsigned char *)(0xfffc001B))
133
#define tx_data_8_eff *((unsigned char *)(0xfffc001C))
134
 
135
#define rx_message_counter *((unsigned char *)(0xfffc001D))
136
#define rx_buffer_start_address *((unsigned char *)(0xfffc001E))
137
#define clock_divider_register *((unsigned char *)(0xfffc001F))
138
 
139
#endif
140
 
141
 
142
#define reset_mode_on 0x01
143
#define reset_mode_off 0xFE
144
#define enable_all_int 0x1E
145
#define tx_request 0x01
146
#define basic_mode 0x7F
147
#define extended_mode 0x80
148
#define release_buffer 0x04
149
#define receive_interrupt 0x01
150
 
151
#define self_test_mode 0x04
152
#define self_reception 0x10
153
#define enable_all_int_eff 0xFF
154
 
155
// can mode "Basic" or "Extended"
156
//const char * mode = "Basic";
157
//const char * mode = "Extended";
158
// waits for some time
159
void kill_time(int rep) {
160
  int i;
161
 
162
  for (i=rep; i>0; --i)
163
    asm("nop");
164
}
165
 
166
 
167
 
168
void self_testing_mode()
169
{
170
        unsigned char r_val;
171
 
172
        printf("************************************\n");
173
        printf("***** Set to self testing mode *****\n");
174
        printf("************************************\n");
175
 
176
        r_val = control_register | self_test_mode;
177
        control_register = r_val;
178
        printf( "control_register 0x%X \n\n",control_register);
179
 
180
}
181
 
182
 
183
void reset_all_irqs()
184
{
185
        printf("************************************\n");
186
        printf("********** reset all irqs **********\n");
187
        printf("************************************\n");
188
 
189
        printf( "interrupt_register 0x%X \n\n",interrupt_register);
190
 
191
 
192
}
193
void disable_irq_sff()
194
{
195
        unsigned char r_val;
196
 
197
        printf("************************************\n");
198
        printf("*********** disable irqs ***********\n");
199
        printf("************************************\n");
200
 
201
        r_val = interrupt_enable_register | enable_all_int_eff;
202
        interrupt_enable_register = r_val;
203
        printf( "interrupt_enable_register 0x%X \n\n",interrupt_enable_register);
204
 
205
}
206
 
207
void enable_irq_sff()
208
{
209
        unsigned char r_val;
210
 
211
        //printf("************************************\n");
212
        //printf("*********** enable irqs ************\n");
213
        //printf("************************************\n");
214
 
215
        r_val = control_register | enable_all_int;
216
        control_register = r_val;
217
        printf( "control_register 0x%X \n\n",control_register);
218
}
219
 
220
void disable_irq_eff()
221
{
222
        unsigned char r_val;
223
 
224
        printf("************************************\n");
225
        printf("*********** disable irqs ***********\n");
226
        printf("************************************\n");
227
 
228
        r_val = interrupt_enable_register | enable_all_int_eff;
229
        interrupt_enable_register = r_val;
230
        printf( "interrupt_enable_register 0x%X \n\n",interrupt_enable_register);
231
 
232
}
233
 
234
void enable_irq_eff()
235
{
236
        unsigned char r_val;
237
 
238
        printf("************************************\n");
239
        printf("*********** enable irqs eff ********\n");
240
        printf("************************************\n");
241
 
242
        r_val = interrupt_enable_register | enable_all_int_eff;
243
        interrupt_enable_register = r_val;
244
        printf( "interrupt_enable_register 0x%X \n\n",interrupt_enable_register);
245
 
246
}
247
 
248
void tx_request_command()
249
{
250
        unsigned char r_val;
251
 
252
//      printf("************************************\n");
253
//      printf("*********** tx requestet ***********\n");
254
//      printf("************************************\n");
255
 
256
        printf( "Send transmit-request \n");
257
        r_val = command_register | tx_request;
258
        command_register = r_val;
259
        printf( "command register: 0x%X \n\n",command_register);
260
}
261
void self_reception_request()
262
{
263
        unsigned char r_val;
264
 
265
        printf("************************************\n");
266
        printf("***** self reception requestet *****\n");
267
        printf("************************************\n");
268
 
269
        r_val = command_register | self_reception;
270
        command_register = r_val;
271
        printf( "command register : 0x%X \n\n",command_register);
272
 
273
}
274
 
275
void release_receive_buffer()
276
{
277
        unsigned char r_val;
278
 
279
        printf("************************************\n");
280
        printf("****** release receive buffer ******\n");
281
        printf("************************************\n");
282
 
283
 
284
        r_val = command_register | release_buffer;
285
        command_register = r_val;
286
        printf( "command register : 0x%X \n\n",command_register);
287
 
288
}
289
 
290
void read_receive_buffer_basic()
291
{
292
        unsigned char r_val;
293
 
294
        printf("************************************\n");
295
        printf("******** read receive buffer *******\n");
296
        printf("************************************\n");
297
 
298
        printf( "identifier 0: 0x%X \n",rb_identifier_byte_0);
299
 
300
        printf( "identifier 1: 0x%X \n",rb_identifier_byte_1);
301
 
302
        printf( "data byte 1: 0x%X \n",rb_data_byte_1);
303
 
304
        printf( "data byte 2: 0x%X \n",rb_data_byte_2);
305
 
306
        printf( "data byte 3: 0x%X \n",rb_data_byte_3);
307
 
308
        printf( "data byte 4: 0x%X \n",rb_data_byte_4);
309
 
310
        printf( "data byte 5: 0x%X \n",rb_data_byte_5);
311
 
312
        printf( "data byte 6: 0x%X \n",rb_data_byte_6);
313
 
314
        printf( "data byte 7: 0x%X \n",rb_data_byte_7);
315
 
316
        printf( "data byte 8: 0x%X \n\n",rb_data_byte_8);
317
 
318
}
319
 
320
 
321
void read_receive_buffer_extended()
322
{
323
        unsigned char r_val;
324
 
325
        printf("************************************\n");
326
        printf("******* read frame extended ********\n");
327
        printf("************************************\n");
328
 
329
        printf( "rx_frame_information_eff: 0x%X \n\n",rx_frame_information_eff);
330
 
331
        printf( "identifier 0: 0x%X \n",rx_identifier_1_eff);
332
 
333
        printf( "identifier 1: 0x%X \n",rx_identifier_2_eff);
334
 
335
        printf( "identifier 2: 0x%X \n",rx_identifier_3_eff);
336
 
337
        printf( "identifier 3: 0x%X \n\n",rx_identifier_4_eff);
338
 
339
        printf( "data byte 1: 0x%X \n",rx_data_1_eff);
340
 
341
        printf( "data byte 2: 0x%X \n",rx_data_2_eff);
342
 
343
        printf( "data byte 3: 0x%X \n",rx_data_3_eff);
344
 
345
        printf( "data byte 4: 0x%X \n",rx_data_4_eff);
346
 
347
        printf( "data byte 5: 0x%X \n",rx_data_5_eff);
348
 
349
        printf( "data byte 6: 0x%X \n",rx_data_6_eff);
350
 
351
        printf( "data byte 7: 0x%X \n",rx_data_7_eff);
352
 
353
        printf( "data byte 8: 0x%X \n\n",rx_data_8_eff);
354
 
355
}
356
 
357
/*void write_frame_basic()
358
{
359
        unsigned char r_val;
360
 
361
        printf("************************************\n");
362
        printf("********* Send frame basic *********\n");
363
        printf("************************************\n");
364
 
365
        printf( "Set identifier - 0xEA 0x28\n");
366
        tb_identifier_byte_0 = 0xEA;
367
        printf( "identifier 0: 0x%X \n",tb_identifier_byte_0);
368
 
369
        tb_identifier_byte_1 = 0x28;
370
        printf( "identifier 1: 0x%X \n\n",tb_identifier_byte_1);
371
 
372
        printf( "Set data byte 1 \n");
373
        tb_data_byte_1 = 0x12;
374
        printf( "data byte 1: 0x%X \n",tb_data_byte_1);
375
 
376
        printf( "Set data byte 2 \n");
377
        tb_data_byte_2 = 0x34;
378
        printf( "data byte 2: 0x%X \n",tb_data_byte_2);
379
 
380
        printf( "Set data byte 3 \n");
381
        tb_data_byte_3 = 0x56;
382
        printf( "data byte 3: 0x%X \n",tb_data_byte_3);
383
 
384
        printf( "Set data byte 4 \n");
385
        tb_data_byte_4 = 0x78;
386
        printf( "data byte 4: 0x%X \n",tb_data_byte_4);
387
 
388
        printf( "Set data byte 5 \n");
389
        tb_data_byte_5 = 0x9A;
390
        printf( "data byte 5: 0x%X \n",tb_data_byte_5);
391
 
392
        printf( "Set data byte 6 \n");
393
        tb_data_byte_6 = 0xBC;
394
        printf( "data byte 6: 0x%X \n",tb_data_byte_6);
395
 
396
        printf( "Set data byte 7 \n");
397
        tb_data_byte_7 = 0xDE;
398
        printf( "data byte 7: 0x%X \n",tb_data_byte_7);
399
 
400
        printf( "Set data byte 8 \n");
401
        tb_data_byte_8 = 0xF0;
402
        printf( "data byte 8: 0x%X \n\n",tb_data_byte_8);
403
}
404
*/
405
/*void write_frame_extended()
406
{
407
        unsigned char r_val;
408
 
409
        printf("************************************\n");
410
        printf("******* write frame extended *******\n");
411
        printf("************************************\n");
412
 
413
 
414
        tx_frame_information_eff = 0x88;
415
        printf( "tx_frame_information_eff: 0x%X \n\n",tx_frame_information_eff);
416
 
417
 
418
        printf( "Set identifier - 0xA6 0xB0 0x12 0x30\n");
419
        tx_identifier_1_eff = 0xA6;
420
        printf( "identifier 0: 0x%X \n",tx_identifier_1_eff);
421
 
422
        tx_identifier_2_eff = 0xB0;
423
        printf( "identifier 1: 0x%X \n",tx_identifier_2_eff);
424
 
425
        tx_identifier_3_eff = 0x12;
426
        printf( "identifier 2: 0x%X \n",tx_identifier_3_eff);
427
 
428
        tx_identifier_4_eff = 0x30;
429
        printf( "identifier 3: 0x%X \n\n",tx_identifier_4_eff);
430
 
431
        printf( "Set data - 0x12 0x34 0x56 0x78 0x9A 0xBC 0xDE 0xF0\n");
432
        tx_data_1_eff = 0x12;
433
        printf( "data byte 1: 0x%X \n",tx_data_1_eff);
434
 
435
        tx_data_2_eff = 0x34;
436
        printf( "data byte 2: 0x%X \n",tx_data_2_eff);
437
 
438
        tx_data_3_eff = 0x56;
439
        printf( "data byte 3: 0x%X \n",tx_data_3_eff);
440
 
441
        tx_data_4_eff = 0x78;
442
        printf( "data byte 4: 0x%X \n",tx_data_4_eff);
443
 
444
        tx_data_5_eff = 0x9A;
445
        printf( "data byte 5: 0x%X \n",tx_data_5_eff);
446
 
447
        tx_data_6_eff = 0xBC;
448
        printf( "data byte 6: 0x%X \n",tx_data_6_eff);
449
 
450
        tx_data_7_eff = 0xDE;
451
        printf( "data byte 7: 0x%X \n",tx_data_7_eff);
452
 
453
        tx_data_8_eff = 0xF0;
454
        printf( "data byte 8: 0x%X \n\n",tx_data_8_eff);
455
 
456
}
457
*/
458
 
459
void init_can(char * mode, char * self_test)
460
{
461
        unsigned char r_val;
462
 
463
        if (mode == "Basic")
464
        {
465
                //printf("************************************\n");
466
                printf("********** Basic Can Mode **********\n");
467
                //printf("************************************\n");
468
 
469
                printf( "Switch on Reset Mode\n");
470
                r_val = control_register | reset_mode_on;
471
                control_register = r_val;
472
                //printf( "control_register: 0x%X \n\n",control_register);      
473
 
474
                //printf( "Set clock divider register to basic can mode\n");
475
                r_val = clock_divider_register & basic_mode | 0x07;
476
                clock_divider_register = r_val;
477
                //printf( "clock_divider_register: 0x%X \n\n",clock_divider_register);
478
 
479
                //printf( "Output control register \n");
480
                //output_control_register = 0x01;
481
                //printf( "output control register : 0x%X \n\n",output_control_register);
482
 
483
                //printf( "Set bus timing register 0\n");
484
                //printf( "Sync Jump Width = 2  Baudrate Prescaler = 1\n");     
485
                bus_timing_0_register = 0x83;
486
                //printf( "bus timing register 0: 0x%X \n\n",bus_timing_0_register);
487
 
488
                //printf( "Set bus timing register 1\n");
489
                //printf( "SAM = 0 ---> Single Sampling\n");
490
                bus_timing_1_register = 0x25;
491
                //printf( "bus timing register 1: 0x%X \n\n",bus_timing_1_register);
492
 
493
                //printf( "Set acceptance code register\n"); 
494
                acceptance_code_register = 0x88;
495
                //printf( "acceptance code register: 0x%X \n\n",acceptance_code_register);
496
 
497
                //printf( "Set acceptance mask register\n"); 
498
                acceptance_mask_register = 0xFF;
499
                //printf( "acceptance mask register: 0x%X \n\n",acceptance_mask_register);
500
 
501
 
502
                kill_time(50);
503
 
504
                printf( "Switch off reset mode\n");
505
                r_val = control_register & reset_mode_off;
506
                control_register = r_val;
507
                //printf( "control_register 0x%X \n\n",control_register);
508
 
509
                kill_time(50);
510
 
511
        }
512
        else if (mode == "Extended")
513
        {
514
                printf("************************************\n");
515
                printf("******** Extended Can Mode *********\n");
516
                printf("************************************\n");
517
 
518
                printf( "Switch on Reset Mode\n");
519
                r_val = control_register | reset_mode_on;
520
                control_register = r_val;
521
                printf( "control_register: 0x%X \n\n",control_register);
522
 
523
 
524
                kill_time(50);
525
 
526
 
527
                printf( "Set clock divider register to extended can mode\n");
528
                r_val = clock_divider_register | extended_mode | 0x07;
529
                clock_divider_register = r_val;
530
                printf( "clock_divider_register: 0x%X \n\n",clock_divider_register);
531
 
532
                kill_time(50);
533
 
534
                //printf( "Output control register \n");
535
                //output_control_register = 0x01;
536
                //printf( "output control register: 0x%X \n\n",output_control_register);
537
 
538
                printf( "Set bus timing register 0\n");
539
                printf( "Sync Jump Width = 2  Baudrate Prescaler = 1\n");
540
                bus_timing_0_register = 0x83;
541
                printf( "bus timing register 0: 0x%X \n\n",bus_timing_0_register);
542
 
543
                printf( "Set bus timing register 1\n");
544
                printf( "SAM = 0 ---> Single Sampling\n");
545
                bus_timing_1_register = 0x25;
546
                printf( "bus timing register 1: 0x%X \n\n",bus_timing_1_register);
547
 
548
                printf( "Set acceptance code register\n");
549
                acceptance_code_0 = 0xA6;
550
                printf( "acceptance code register 0: 0x%X \n",acceptance_code_0);
551
 
552
                acceptance_code_1 = 0xB0;
553
                printf( "acceptance code register 1: 0x%X \n",acceptance_code_1);
554
 
555
                acceptance_code_2 = 0x12;
556
                printf( "acceptance code register 2: 0x%X \n",acceptance_code_2);
557
 
558
                acceptance_code_3 = 0x30;
559
                printf( "acceptance code register 3: 0x%X \n\n",acceptance_code_3);
560
 
561
 
562
                printf( "Set acceptance mask register\n");
563
                acceptance_mask_0 = 0xFF;
564
                printf( "acceptance mask register: 0x%X \n",acceptance_mask_0);
565
 
566
                acceptance_mask_1 = 0xFF;
567
                printf( "acceptance mask register: 0x%X \n",acceptance_mask_1);
568
 
569
                acceptance_mask_2 = 0xFF;
570
                printf( "acceptance mask register: 0x%X \n",acceptance_mask_2);
571
 
572
                acceptance_mask_3 = 0xFF;
573
                printf( "acceptance mask register: 0x%X \n\n",acceptance_mask_3);
574
 
575
                if (self_test == "self_test")
576
                {
577
                        self_testing_mode();
578
                }
579
 
580
                printf( "Switch off reset mode\n");
581
                r_val = control_register & reset_mode_off;
582
                control_register = r_val;
583
                printf( "control_register 0x%X \n\n",control_register);
584
 
585
                kill_time(50);
586
 
587
        }
588
 
589
 
590
}
591
 
592
 
593
void self_reception_test()
594
{
595
        unsigned char r_val;
596
 
597
        printf( "Switch on Reset Mode\n");
598
        control_register = 0x01;
599
        printf( "control 0x%X \n\n",control_register);
600
 
601
        // witch to extended mode
602
        clock_divider_register = 0x80;
603
        printf( "clock_divider 0x%X \n\n",clock_divider_register);
604
 
605
        // set bus timing       
606
        //bus_timing_0_register = 0xBF;
607
        bus_timing_0_register = 0x80;
608
 
609
        bus_timing_1_register = 0x34;
610
 
611
        // set acceptance and mask register
612
        acceptance_code_0 = 0x16;
613
        printf( "acceptance 0 0x%X \n",acceptance_code_0);
614
 
615
        acceptance_code_1 = 0xB0;
616
        printf( "acceptance 1 0x%X \n",acceptance_code_1);
617
 
618
        acceptance_code_2 = 0x12;
619
        printf( "acceptance 2 0x%X \n",acceptance_code_2);
620
 
621
        acceptance_code_3 = 0x30;
622
        printf( "acceptance 3 0x%X \n\n",acceptance_code_3);
623
 
624
        acceptance_mask_0 = 0xFF;
625
        printf( "acceptance mask 0x%X \n",acceptance_mask_0);
626
 
627
        acceptance_mask_1 = 0xFF;
628
        printf( "acceptance mask 0x%X \n",acceptance_mask_1);
629
 
630
        acceptance_mask_2 = 0xFF;
631
        printf( "acceptance mask 0x%X \n",acceptance_mask_2);
632
 
633
        acceptance_mask_3 = 0xFF;
634
        printf( "acceptance mask 0x%X \n\n",acceptance_mask_3);
635
 
636
        // Setting the "self test mode" 
637
        control_register = 0x05;
638
        printf( "control 0x%X \n\n",control_register);
639
 
640
        kill_time(50);
641
        // Switch-off reset mode       
642
        control_register = 0X04;
643
        printf( "control_register 0x%X \n\n",control_register);
644
 
645
        kill_time(150);
646
 
647
        // Send frame
648
        tx_frame_information_eff = 0x88;
649
 
650
        printf( "Set identifier - 0xA6 0xB0 0x12 0x30\n");
651
        tx_identifier_1_eff = 0xA6;
652
        //printf( "identifier 0: 0x%X \n",tx_identifier_1_eff);
653
 
654
        tx_identifier_2_eff = 0xB0;
655
        //printf( "identifier 1: 0x%X \n",tx_identifier_2_eff);
656
 
657
        tx_identifier_3_eff = 0x12;
658
        //printf( "identifier 2: 0x%X \n",tx_identifier_3_eff);
659
 
660
        tx_identifier_4_eff = 0x30;
661
        //printf( "identifier 3: 0x%X \n\n",tx_identifier_4_eff);
662
 
663
        printf( "Set data - 0x12 0x34 0x56 0x78 0x9A 0xBC 0xDE 0xF0\n");
664
        tx_data_1_eff = 0x12;
665
        //printf( "data byte 1: 0x%X \n",tx_data_1_eff);
666
 
667
        tx_data_2_eff = 0x34;
668
        //printf( "data byte 2: 0x%X \n",tx_data_2_eff);
669
 
670
        tx_data_3_eff = 0x56;
671
        //printf( "data byte 3: 0x%X \n",tx_data_3_eff);
672
 
673
        tx_data_4_eff = 0x78;
674
        //printf( "data byte 4: 0x%X \n",tx_data_4_eff);
675
 
676
        tx_data_5_eff = 0x9A;
677
        //printf( "data byte 5: 0x%X \n",tx_data_5_eff);
678
 
679
        tx_data_6_eff = 0xBC;
680
        //printf( "data byte 6: 0x%X \n",tx_data_6_eff);
681
 
682
        tx_data_7_eff = 0xDE;
683
        //printf( "data byte 7: 0x%X \n",tx_data_7_eff);
684
 
685
        tx_data_8_eff = 0xF0;
686
        //printf( "data byte 8: 0x%X \n\n",tx_data_8_eff);
687
 
688
 
689
        // Enable ints
690
        interrupt_enable_register = 0xFF;
691
        kill_time(50);
692
        //tx_request_command();
693
        self_reception_request();
694
 
695
 
696
        //tx_request_command();
697
        printf( "Finnished \n");
698
 
699
        printf( "control_register 0x%X \n\n",control_register);
700
 
701
        //kill_time(10000);
702
 
703
        printf( "interrupt_register 0x%X \n\n",interrupt_register);
704
 
705
        printf( "control_register 0x%X \n\n",control_register);
706
 
707
        //read_receive_buffer_extended();
708
}
709
 
710
void write_frame_basic(unsigned char write_field[])
711
{
712
        int i = 0;
713
 
714
        //printf("************************************\n");
715
        //printf("******** write frame basic *********\n");
716
        //printf("************************************\n");
717
 
718
            for (i=0; i<10; i++)
719
              {
720
                *((unsigned char *)(0xfffc000A+i)) = write_field[i];
721
                kill_time(10);
722
                printf( "write data: %i , 0x%X , 0x%X \n",i,write_field[i],*((unsigned char *)(0xfffc000A+i)));
723
              }
724
 
725
}
726
 
727
void write_frame_extended(unsigned char write_field[])
728
{
729
        int i = 0;
730
        //printf("************************************\n");
731
        printf("******* write frame extended *******\n");
732
        //printf("************************************\n");
733
 
734
        for (i=0; i<13; i++)
735
        {
736
                *((unsigned char *)(0xfffc0010+i)) = write_field[i];
737
                kill_time(10);
738
                printf( "write data %i:  0x%X , 0x%X \n",i,write_field[i],*((unsigned char *)(0xfffc0010+i)));
739
        }
740
 
741
}
742
 
743
int test_read_frame_extended(unsigned char write_field[])
744
{
745
        unsigned char read_field[13];
746
        int i = 0;
747
 
748
        for (i=0; i<13; i++)
749
        {
750
                read_field[i] = *((unsigned char *)(0xfffc0010+i));
751
        }
752
 
753
        for (i=0; i<13; i++)
754
        {
755
                if (read_field[i] != write_field[i])
756
                {
757
                        return 0;
758
                }
759
        }
760
 
761
        return 1;
762
}
763
 
764
 
765
main()
766
{
767
  int i;
768
 
769
  unsigned char frame_basic0[10]  = {0xEA,0x28,0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0};
770
 
771
  unsigned char frame_basic1[10]  = {0xEB,0x28,0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0};
772
 
773
  unsigned char frame_basic2[10]  = {0xEC,0x28,0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0};
774
 
775
  unsigned char frame_basic3[10]  = {0xED,0x28,0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0};
776
 
777
  unsigned char frame_extended[13] = {0x88,0xA6,0xB0,0x12,0x30,0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0};
778
 
779
 
780
 
781
  unsigned char r_val;
782
 
783
 
784
  init_can("Extended","normal");
785
 
786
 
787
  enable_irq_eff();
788
 
789
 
790
  release_receive_buffer();
791
  release_receive_buffer();
792
  release_receive_buffer();
793
  release_receive_buffer();
794
  release_receive_buffer();
795
  release_receive_buffer();
796
  release_receive_buffer();
797
  release_receive_buffer();
798
  release_receive_buffer();
799
  release_receive_buffer();
800
  release_receive_buffer();
801
  release_receive_buffer();
802
  release_receive_buffer();
803
  release_receive_buffer();
804
  release_receive_buffer();
805
  release_receive_buffer();
806
 
807
  printf("interrupt register 0x%X \n",interrupt_register);
808
 
809
  while(1)
810
    {
811
 
812
      if ((interrupt_register & receive_interrupt) == 0)
813
        {
814
          kill_time(4000000);
815
          printf("No data!\n");
816
        }
817
      else
818
        {
819
          read_receive_buffer_extended();
820
          release_receive_buffer();
821
        }
822
    }
823
 
824
}
825
 
826
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.