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

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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