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_setup.c] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
// Filename          : can_setup.c
2
//-- Description     : This can test first sends a can frame in basic mode
3
//--                   then it sends one can frame in extended mode.
4
//--                   after that it launches the "self-test-mode" 
5
//--                   The test will report if he failed or not!
6
//-- Author          : Harald Obereder
7
//-- Created On      : Wed Okt 06 10.07
8
//--
9
//-- CVS entries:
10
//--   $Author: hobe $
11
//--   $Date: 2004/10/12 12:47:19 $
12
//--   $Revision: 1.2 $
13
//--   $State: Exp $ 
14
 
15
// addressdefinition for basic can registers
16
// tb...transmit buffer
17
// rb...receive buffer
18
#define basic
19
#define extended
20
 
21
#ifdef basic
22
#define control_register *((unsigned char *)(0xfffc0000))
23
#define command_register *((unsigned char *)(0xfffc0001))
24
#define status_register *((unsigned char *)(0xfffc0002))
25
#define interrupt_register *((unsigned char *)(0xfffc0003))
26
#define acceptance_code_register *((unsigned char *)(0xfffc0004))
27
#define acceptance_mask_register *((unsigned char *)(0xfffc0005))
28
#define bus_timing_0_register *((unsigned char *)(0xfffc0006))
29
#define bus_timing_1_register *((unsigned char *)(0xfffc0007))
30
#define output_control_register *((unsigned char *)(0xfffc0008))
31
#define test_register *((unsigned char *)(0xfffc0009))
32
#define tb_identifier_byte_0 *((unsigned char *)(0xfffc000A))
33
#define tb_identifier_byte_1 *((unsigned char *)(0xfffc000B))
34
#define tb_data_byte_1 *((unsigned char *)(0xfffc000C))
35
#define tb_data_byte_2 *((unsigned char *)(0xfffc000D))
36
#define tb_data_byte_3 *((unsigned char *)(0xfffc000E))
37
#define tb_data_byte_4 *((unsigned char *)(0xfffc000F))
38
#define tb_data_byte_5 *((unsigned char *)(0xfffc0010))
39
#define tb_data_byte_6 *((unsigned char *)(0xfffc0011))
40
#define tb_data_byte_7 *((unsigned char *)(0xfffc0012))
41
#define tb_data_byte_8 *((unsigned char *)(0xfffc0013))
42
#define rb_identifier_byte_0 *((unsigned char *)(0xfffc0014))
43
#define rb_identifier_byte_1 *((unsigned char *)(0xfffc0015))
44
#define rb_data_byte_1 *((unsigned char *)(0xfffc0016))
45
#define rb_data_byte_2 *((unsigned char *)(0xfffc0017))
46
#define rb_data_byte_3 *((unsigned char *)(0xfffc0018))
47
#define rb_data_byte_4 *((unsigned char *)(0xfffc0019))
48
#define rb_data_byte_5 *((unsigned char *)(0xfffc001A))
49
#define rb_data_byte_6 *((unsigned char *)(0xfffc001B))
50
#define rb_data_byte_7 *((unsigned char *)(0xfffc001C))
51
#define rb_data_byte_8 *((unsigned char *)(0xfffc001D))
52
#define Extra_register *((unsigned char *)(0xfffc001E))
53
#define clock_divider_register *((unsigned char *)(0xfffc001F))
54
 
55
#endif
56
 
57
#ifdef extended
58
#define control_register *((unsigned char *)(0xfffc0000))
59
#define command_register *((unsigned char *)(0xfffc0001))
60
#define status_register *((unsigned char *)(0xfffc0002))
61
#define interrupt_register *((unsigned char *)(0xfffc0003))
62
#define interrupt_enable_register *((unsigned char *)(0xfffc0004))
63
#define reserved_register *((unsigned char *)(0xfffc0005))
64
#define bus_timing_0_register *((unsigned char *)(0xfffc0006))
65
#define bus_timing_1_register *((unsigned char *)(0xfffc0007))
66
#define output_control_register *((unsigned char *)(0xfffc0008))
67
#define test_register *((unsigned char *)(0xfffc0009))
68
#define reserved_1_register *((unsigned char *)(0xfffc000A))
69
#define arbitration_lost_capture *((unsigned char *)(0xfffc000B))
70
#define error_code_capture *((unsigned char *)(0xfffc000C))
71
#define error_warning_limit *((unsigned char *)(0xfffc000D))
72
#define rx_error_counter *((unsigned char *)(0xfffc000E))
73
#define tx_error_counter *((unsigned char *)(0xfffc000F))
74
 
75
#define acceptance_code_0 *((unsigned char *)(0xfffc0010))
76
#define acceptance_code_1 *((unsigned char *)(0xfffc0011))
77
#define acceptance_code_2 *((unsigned char *)(0xfffc0012))
78
#define acceptance_code_3 *((unsigned char *)(0xfffc0013))
79
#define acceptance_mask_0 *((unsigned char *)(0xfffc0014))
80
#define acceptance_mask_1 *((unsigned char *)(0xfffc0015))
81
#define acceptance_mask_2 *((unsigned char *)(0xfffc0016))
82
#define acceptance_mask_3 *((unsigned char *)(0xfffc0017))
83
 
84
#define rx_frame_information_sff *((unsigned char *)(0xfffc0010))
85
#define rx_identifier_1_sff *((unsigned char *)(0xfffc0011))
86
#define rx_identifier_2_sff *((unsigned char *)(0xfffc0012))
87
#define rx_data_1_sff *((unsigned char *)(0xfffc0013))
88
#define rx_data_2_sff *((unsigned char *)(0xfffc0014))
89
#define rx_data_3_sff *((unsigned char *)(0xfffc0015))
90
#define rx_data_4_sff *((unsigned char *)(0xfffc0016))
91
#define rx_data_5_sff *((unsigned char *)(0xfffc0017))
92
#define rx_data_6_sff *((unsigned char *)(0xfffc0018))
93
#define rx_data_7_sff *((unsigned char *)(0xfffc0019))
94
#define rx_data_8_sff *((unsigned char *)(0xfffc001A))
95
 
96
#define rx_frame_information_eff *((unsigned char *)(0xfffc0010))
97
#define rx_identifier_1_eff *((unsigned char *)(0xfffc0011))
98
#define rx_identifier_2_eff *((unsigned char *)(0xfffc0012))
99
#define rx_identifier_3_eff *((unsigned char *)(0xfffc0013))
100
#define rx_identifier_4_eff *((unsigned char *)(0xfffc0014))
101
#define rx_data_1_eff *((unsigned char *)(0xfffc0015))
102
#define rx_data_2_eff *((unsigned char *)(0xfffc0016))
103
#define rx_data_3_eff *((unsigned char *)(0xfffc0017))
104
#define rx_data_4_eff *((unsigned char *)(0xfffc0018))
105
#define rx_data_5_eff *((unsigned char *)(0xfffc0019))
106
#define rx_data_6_eff *((unsigned char *)(0xfffc001A))
107
#define rx_data_7_eff *((unsigned char *)(0xfffc001B))
108
#define rx_data_8_eff *((unsigned char *)(0xfffc001C))
109
 
110
#define tx_frame_information_sff *((unsigned char *)(0xfffc0010))
111
#define tx_identifier_1_sff *((unsigned char *)(0xfffc0011))
112
#define tx_identifier_2_sff *((unsigned char *)(0xfffc0012))
113
#define tx_data_1_sff *((unsigned char *)(0xfffc0013))
114
#define tx_data_2_sff *((unsigned char *)(0xfffc0014))
115
#define tx_data_3_sff *((unsigned char *)(0xfffc0015))
116
#define tx_data_4_sff *((unsigned char *)(0xfffc0016))
117
#define tx_data_5_sff *((unsigned char *)(0xfffc0017))
118
#define tx_data_6_sff *((unsigned char *)(0xfffc0018))
119
#define tx_data_7_sff *((unsigned char *)(0xfffc0019))
120
#define tx_data_8_sff *((unsigned char *)(0xfffc001A))
121
 
122
#define tx_frame_information_eff *((unsigned char *)(0xfffc0010))
123
#define tx_identifier_1_eff *((unsigned char *)(0xfffc0011))
124
#define tx_identifier_2_eff *((unsigned char *)(0xfffc0012))
125
#define tx_identifier_3_eff *((unsigned char *)(0xfffc0013))
126
#define tx_identifier_4_eff *((unsigned char *)(0xfffc0014))
127
#define tx_data_1_eff *((unsigned char *)(0xfffc0015))
128
#define tx_data_2_eff *((unsigned char *)(0xfffc0016))
129
#define tx_data_3_eff *((unsigned char *)(0xfffc0017))
130
#define tx_data_4_eff *((unsigned char *)(0xfffc0018))
131
#define tx_data_5_eff *((unsigned char *)(0xfffc0019))
132
#define tx_data_6_eff *((unsigned char *)(0xfffc001A))
133
#define tx_data_7_eff *((unsigned char *)(0xfffc001B))
134
#define tx_data_8_eff *((unsigned char *)(0xfffc001C))
135
 
136
#define rx_message_counter *((unsigned char *)(0xfffc001D))
137
#define rx_buffer_start_address *((unsigned char *)(0xfffc001E))
138
#define clock_divider_register *((unsigned char *)(0xfffc001F))
139
 
140
#endif
141
 
142
 
143
#define reset_mode_on 0x01
144
#define reset_mode_off 0xFE
145
#define enable_all_int 0x1E
146
#define tx_request 0x01
147
#define basic_mode 0x7F
148
#define extended_mode 0x80
149
#define release_buffer 0x04
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 = 0xA8;
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 = 0x34;
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 = 0xEA;
495
                printf( "acceptance code register: 0x%X \n\n",acceptance_code_register);
496
 
497
                printf( "Set acceptance mask register\n");
498
                acceptance_mask_register = 0x0F;
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 = 0xA8;
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 = 0x34;
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 = 0x00;
564
                printf( "acceptance mask register: 0x%X \n",acceptance_mask_0);
565
 
566
                acceptance_mask_1 = 0x00;
567
                printf( "acceptance mask register: 0x%X \n",acceptance_mask_1);
568
 
569
                acceptance_mask_2 = 0x00;
570
                printf( "acceptance mask register: 0x%X \n",acceptance_mask_2);
571
 
572
                acceptance_mask_3 = 0x00;
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
void self_reception_test()
593
{
594
        unsigned char r_val;
595
 
596
        printf( "Switch on Reset Mode\n");
597
        control_register = 0x01;
598
        printf( "control 0x%X \n\n",control_register);
599
 
600
        // witch to extended mode
601
        clock_divider_register = 0x80;
602
        printf( "clock_divider 0x%X \n\n",clock_divider_register);
603
 
604
        // set bus timing       
605
        //bus_timing_0_register = 0xBF;
606
        bus_timing_0_register = 0x80;
607
 
608
        bus_timing_1_register = 0x34;
609
 
610
        // set acceptance and mask register
611
        acceptance_code_0 = 0xA6;
612
        printf( "acceptance 0 0x%X \n",acceptance_code_0);
613
 
614
        acceptance_code_1 = 0xB0;
615
        printf( "acceptance 1 0x%X \n",acceptance_code_1);
616
 
617
        acceptance_code_2 = 0x12;
618
        printf( "acceptance 2 0x%X \n",acceptance_code_2);
619
 
620
        acceptance_code_3 = 0x30;
621
        printf( "acceptance 3 0x%X \n\n",acceptance_code_3);
622
 
623
        acceptance_mask_0 = 0x00;
624
        printf( "acceptance mask 0x%X \n",acceptance_mask_0);
625
 
626
        acceptance_mask_1 = 0x00;
627
        printf( "acceptance mask 0x%X \n",acceptance_mask_1);
628
 
629
        acceptance_mask_2 = 0x00;
630
        printf( "acceptance mask 0x%X \n",acceptance_mask_2);
631
 
632
        acceptance_mask_3 = 0x00;
633
        printf( "acceptance mask 0x%X \n\n",acceptance_mask_3);
634
 
635
        // Setting the "self test mode" 
636
        control_register = 0x05;
637
        printf( "control 0x%X \n\n",control_register);
638
 
639
        kill_time(50);
640
        // Switch-off reset mode       
641
        control_register = 0X04;
642
        printf( "control_register 0x%X \n\n",control_register);
643
 
644
        kill_time(150);
645
 
646
        // Send frame
647
        tx_frame_information_eff = 0x88;
648
 
649
        printf( "Set identifier - 0xA6 0xB0 0x12 0x30\n");
650
        tx_identifier_1_eff = 0xA6;
651
        //printf( "identifier 0: 0x%X \n",tx_identifier_1_eff);
652
 
653
        tx_identifier_2_eff = 0xB0;
654
        //printf( "identifier 1: 0x%X \n",tx_identifier_2_eff);
655
 
656
        tx_identifier_3_eff = 0x12;
657
        //printf( "identifier 2: 0x%X \n",tx_identifier_3_eff);
658
 
659
        tx_identifier_4_eff = 0x30;
660
        //printf( "identifier 3: 0x%X \n\n",tx_identifier_4_eff);
661
 
662
        printf( "Set data - 0x12 0x34 0x56 0x78 0x9A 0xBC 0xDE 0xF0\n");
663
        tx_data_1_eff = 0x12;
664
        //printf( "data byte 1: 0x%X \n",tx_data_1_eff);
665
 
666
        tx_data_2_eff = 0x34;
667
        //printf( "data byte 2: 0x%X \n",tx_data_2_eff);
668
 
669
        tx_data_3_eff = 0x56;
670
        //printf( "data byte 3: 0x%X \n",tx_data_3_eff);
671
 
672
        tx_data_4_eff = 0x78;
673
        //printf( "data byte 4: 0x%X \n",tx_data_4_eff);
674
 
675
        tx_data_5_eff = 0x9A;
676
        //printf( "data byte 5: 0x%X \n",tx_data_5_eff);
677
 
678
        tx_data_6_eff = 0xBC;
679
        //printf( "data byte 6: 0x%X \n",tx_data_6_eff);
680
 
681
        tx_data_7_eff = 0xDE;
682
        //printf( "data byte 7: 0x%X \n",tx_data_7_eff);
683
 
684
        tx_data_8_eff = 0xF0;
685
        //printf( "data byte 8: 0x%X \n\n",tx_data_8_eff);
686
 
687
 
688
        // Enable ints
689
        interrupt_enable_register = 0xFF;
690
        kill_time(50);
691
        //tx_request_command();
692
        self_reception_request();
693
 
694
 
695
        //tx_request_command();
696
        printf( "Finnished \n");
697
 
698
        printf( "control_register 0x%X \n\n",control_register);
699
 
700
        //kill_time(10000);
701
 
702
        printf( "interrupt_register 0x%X \n\n",interrupt_register);
703
 
704
        printf( "control_register 0x%X \n\n",control_register);
705
 
706
        //read_receive_buffer_extended();
707
}
708
 
709
void write_frame_basic(unsigned char write_field[])
710
{
711
        int i = 0;
712
        printf("************************************\n");
713
        printf("******** write frame basic *********\n");
714
        printf("************************************\n");
715
 
716
        for (i=0; i<10; i++)
717
        {
718
                *((unsigned char *)(0xfffc000A+i)) = write_field[i];
719
                kill_time(10);
720
                printf( "write data: %i , 0x%X , 0x%X \n",i,write_field[i],*((unsigned char *)(0xfffc000A+i)));
721
        }
722
 
723
}
724
 
725
void write_frame_extended(unsigned char write_field[])
726
{
727
        int i = 0;
728
        printf("************************************\n");
729
        printf("******* write frame extended *******\n");
730
        printf("************************************\n");
731
 
732
        for (i=0; i<13; i++)
733
        {
734
                *((unsigned char *)(0xfffc0010+i)) = write_field[i];
735
                kill_time(10);
736
                printf( "write data %i:  0x%X , 0x%X \n",i,write_field[i],*((unsigned char *)(0xfffc0010+i)));
737
        }
738
 
739
}
740
 
741
int test_read_frame_extended(unsigned char write_field[])
742
{
743
        unsigned char read_field[13];
744
        int i = 0;
745
 
746
        for (i=0; i<13; i++)
747
        {
748
                read_field[i] = *((unsigned char *)(0xfffc0010+i));
749
        }
750
 
751
        for (i=0; i<13; i++)
752
        {
753
                if (read_field[i] != write_field[i])
754
                {
755
                        return 0;
756
                }
757
        }
758
 
759
        return 1;
760
}
761
 
762
 
763
main()
764
{
765
        unsigned char frame_basic[10] = {0xEA,0x28,0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0};
766
        unsigned char frame_extended[13] = {0x88,0xA6,0xB0,0x12,0x30,0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0};
767
 
768
 
769
        unsigned char r_val;
770
 
771
        // test *** 1 Basic --> send frame basic
772
        printf("************************************\n");
773
        printf("****** Test 1 **********************\n");
774
        printf("************************************\n");
775
        printf("****** Send frame basic ************\n");
776
        printf("************************************\n");
777
        printf("************************************\n\n");
778
 
779
        init_can("Basic","normal");
780
        enable_irq_sff();
781
        write_frame_basic(frame_basic);
782
        tx_request_command();
783
        //read_receive_buffer_basic();
784
 
785
        reset_all_irqs();
786
 
787
 
788
        // test *** 2 Extended --> send frame extended  
789
        printf("************************************\n");
790
        printf("****** Test 1 **********************\n");
791
        printf("************************************\n");
792
        printf("****** Send frame extended *********\n");
793
        printf("************************************\n");
794
        printf("************************************\n\n");
795
 
796
        init_can("Extended","no_self_test");
797
        enable_irq_eff();
798
        write_frame_extended(frame_extended);
799
        tx_request_command();
800
        read_receive_buffer_extended();
801
 
802
        reset_all_irqs();
803
 
804
        // test *** 3 Extended --> self test mode
805
        printf("************************************\n");
806
        printf("****** Test 1 **********************\n");
807
        printf("************************************\n");
808
        printf("****** Self test mode **************\n");
809
        printf("****** extended ********************\n");
810
        printf("************************************\n\n");
811
        init_can("Extended","self_test");
812
        enable_irq_eff();
813
        write_frame_extended(frame_extended);
814
        self_reception_request();
815
        read_receive_buffer_extended();
816
 
817
        if (test_read_frame_extended(frame_extended) == 1)
818
        {
819
                printf( "Test Passed !!!\n");
820
        }
821
        else
822
        {
823
                printf( "Test failed !!!\n");
824
        }
825
        reset_all_irqs();
826
 
827
 
828
        // test *** 3 Extended --> self test mode    
829
 
830
}

powered by: WebSVN 2.1.0

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