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_basic.c] - Rev 2
Compare with Previous | Blame | View Log
// Filename : can_receive_basic.c //-- Description : Waits (polling) for a can frame in standard frame format //-- Author : Harald Obereder //-- Created On : Wed Okt 06 10.07 //-- //-- CVS entries: //-- $Author: hobe $ //-- $Date: 2004/10/12 12:47:19 $ //-- $Revision: 1.2 $ //-- $State: Exp $ // addressdefinition for basic can registers // tb...transmit buffer // rb...receive buffer #define basic #define extended #define CANADDR 0xfffc0000 #ifdef basic #define control_register *((unsigned char *)(CANADDR+0x0000)) #define command_register *((unsigned char *)(CANADDR+0x0001)) #define status_register *((unsigned char *)(CANADDR+0x0002)) #define interrupt_register *((unsigned char *)(CANADDR+0x0003)) #define acceptance_code_register *((unsigned char *)(CANADDR+0x0004)) #define acceptance_mask_register *((unsigned char *)(CANADDR+0x0005)) #define bus_timing_0_register *((unsigned char *)(CANADDR+0x0006)) #define bus_timing_1_register *((unsigned char *)(CANADDR+0x0007)) #define output_control_register *((unsigned char *)(CANADDR+0x0008)) #define test_register *((unsigned char *)(CANADDR+0x0009)) #define tb_identifier_byte_0 *((unsigned char *)(CANADDR+0x000A)) #define tb_identifier_byte_1 *((unsigned char *)(CANADDR+0x000B)) #define tb_data_byte_1 *((unsigned char *)(CANADDR+0x000C)) #define tb_data_byte_2 *((unsigned char *)(CANADDR+0x000D)) #define tb_data_byte_3 *((unsigned char *)(CANADDR+0x000E)) #define tb_data_byte_4 *((unsigned char *)(CANADDR+0x000F)) #define tb_data_byte_5 *((unsigned char *)(CANADDR+0x0010)) #define tb_data_byte_6 *((unsigned char *)(CANADDR+0x0011)) #define tb_data_byte_7 *((unsigned char *)(CANADDR+0x0012)) #define tb_data_byte_8 *((unsigned char *)(CANADDR+0x0013)) #define rb_identifier_byte_0 *((unsigned char *)(CANADDR+0x0014)) #define rb_identifier_byte_1 *((unsigned char *)(CANADDR+0x0015)) #define rb_data_byte_1 *((unsigned char *)(CANADDR+0x0016)) #define rb_data_byte_2 *((unsigned char *)(CANADDR+0x0017)) #define rb_data_byte_3 *((unsigned char *)(CANADDR+0x0018)) #define rb_data_byte_4 *((unsigned char *)(CANADDR+0x0019)) #define rb_data_byte_5 *((unsigned char *)(CANADDR+0x001A)) #define rb_data_byte_6 *((unsigned char *)(CANADDR+0x001B)) #define rb_data_byte_7 *((unsigned char *)(CANADDR+0x001C)) #define rb_data_byte_8 *((unsigned char *)(CANADDR+0x001D)) #define Extra_register *((unsigned char *)(CANADDR+0x001E)) #define clock_divider_register *((unsigned char *)(CANADDR+0x001F)) #endif #ifdef extended #define control_register *((unsigned char *)(CANADDR+0x0000)) #define command_register *((unsigned char *)(CANADDR+0x0001)) #define status_register *((unsigned char *)(CANADDR+0x0002)) #define interrupt_register *((unsigned char *)(CANADDR+0x0003)) #define interrupt_enable_register *((unsigned char *)(CANADDR+0x0004)) #define reserved_register *((unsigned char *)(CANADDR+0x0005)) #define bus_timing_0_register *((unsigned char *)(CANADDR+0x0006)) #define bus_timing_1_register *((unsigned char *)(CANADDR+0x0007)) #define output_control_register *((unsigned char *)(CANADDR+0x0008)) #define test_register *((unsigned char *)(CANADDR+0x0009)) #define reserved_1_register *((unsigned char *)(CANADDR+0x000A)) #define arbitration_lost_capture *((unsigned char *)(CANADDR+0x000B)) #define error_code_capture *((unsigned char *)(CANADDR+0x000C)) #define error_warning_limit *((unsigned char *)(CANADDR+0x000D)) #define rx_error_counter *((unsigned char *)(CANADDR+0x000E)) #define tx_error_counter *((unsigned char *)(CANADDR+0x000F)) #define acceptance_code_0 *((unsigned char *)(CANADDR+0x0010)) #define acceptance_code_1 *((unsigned char *)(CANADDR+0x0011)) #define acceptance_code_2 *((unsigned char *)(CANADDR+0x0012)) #define acceptance_code_3 *((unsigned char *)(CANADDR+0x0013)) #define acceptance_mask_0 *((unsigned char *)(CANADDR+0x0014)) #define acceptance_mask_1 *((unsigned char *)(CANADDR+0x0015)) #define acceptance_mask_2 *((unsigned char *)(CANADDR+0x0016)) #define acceptance_mask_3 *((unsigned char *)(CANADDR+0x0017)) #define rx_frame_information_sff *((unsigned char *)(CANADDR+0x0010)) #define rx_identifier_1_sff *((unsigned char *)(CANADDR+0x0011)) #define rx_identifier_2_sff *((unsigned char *)(CANADDR+0x0012)) #define rx_data_1_sff *((unsigned char *)(CANADDR+0x0013)) #define rx_data_2_sff *((unsigned char *)(CANADDR+0x0014)) #define rx_data_3_sff *((unsigned char *)(CANADDR+0x0015)) #define rx_data_4_sff *((unsigned char *)(CANADDR+0x0016)) #define rx_data_5_sff *((unsigned char *)(CANADDR+0x0017)) #define rx_data_6_sff *((unsigned char *)(CANADDR+0x0018)) #define rx_data_7_sff *((unsigned char *)(CANADDR+0x0019)) #define rx_data_8_sff *((unsigned char *)(CANADDR+0x001A)) #define rx_frame_information_eff *((unsigned char *)(CANADDR+0x0010)) #define rx_identifier_1_eff *((unsigned char *)(CANADDR+0x0011)) #define rx_identifier_2_eff *((unsigned char *)(CANADDR+0x0012)) #define rx_identifier_3_eff *((unsigned char *)(CANADDR+0x0013)) #define rx_identifier_4_eff *((unsigned char *)(CANADDR+0x0014)) #define rx_data_1_eff *((unsigned char *)(CANADDR+0x0015)) #define rx_data_2_eff *((unsigned char *)(CANADDR+0x0016)) #define rx_data_3_eff *((unsigned char *)(CANADDR+0x0017)) #define rx_data_4_eff *((unsigned char *)(CANADDR+0x0018)) #define rx_data_5_eff *((unsigned char *)(CANADDR+0x0019)) #define rx_data_6_eff *((unsigned char *)(CANADDR+0x001A)) #define rx_data_7_eff *((unsigned char *)(CANADDR+0x001B)) #define rx_data_8_eff *((unsigned char *)(CANADDR+0x001C)) #define tx_frame_information_sff *((unsigned char *)(CANADDR+0x0010)) #define tx_identifier_1_sff *((unsigned char *)(CANADDR+0x0011)) #define tx_identifier_2_sff *((unsigned char *)(CANADDR+0x0012)) #define tx_data_1_sff *((unsigned char *)(CANADDR+0x0013)) #define tx_data_2_sff *((unsigned char *)(CANADDR+0x0014)) #define tx_data_3_sff *((unsigned char *)(CANADDR+0x0015)) #define tx_data_4_sff *((unsigned char *)(CANADDR+0x0016)) #define tx_data_5_sff *((unsigned char *)(CANADDR+0x0017)) #define tx_data_6_sff *((unsigned char *)(CANADDR+0x0018)) #define tx_data_7_sff *((unsigned char *)(CANADDR+0x0019)) #define tx_data_8_sff *((unsigned char *)(CANADDR+0x001A)) #define tx_frame_information_eff *((unsigned char *)(CANADDR+0x0010)) #define tx_identifier_1_eff *((unsigned char *)(CANADDR+0x0011)) #define tx_identifier_2_eff *((unsigned char *)(CANADDR+0x0012)) #define tx_identifier_3_eff *((unsigned char *)(CANADDR+0x0013)) #define tx_identifier_4_eff *((unsigned char *)(CANADDR+0x0014)) #define tx_data_1_eff *((unsigned char *)(CANADDR+0x0015)) #define tx_data_2_eff *((unsigned char *)(CANADDR+0x0016)) #define tx_data_3_eff *((unsigned char *)(CANADDR+0x0017)) #define tx_data_4_eff *((unsigned char *)(CANADDR+0x0018)) #define tx_data_5_eff *((unsigned char *)(CANADDR+0x0019)) #define tx_data_6_eff *((unsigned char *)(CANADDR+0x001A)) #define tx_data_7_eff *((unsigned char *)(CANADDR+0x001B)) #define tx_data_8_eff *((unsigned char *)(CANADDR+0x001C)) #define rx_message_counter *((unsigned char *)(CANADDR+0x001D)) #define rx_buffer_start_address *((unsigned char *)(CANADDR+0x001E)) #define clock_divider_register *((unsigned char *)(CANADDR+0x001F)) #endif #define reset_mode_on 0x01 #define reset_mode_off 0xFE #define enable_all_int 0x1E #define tx_request 0x01 #define basic_mode 0x7F #define extended_mode 0x80 #define release_buffer 0x04 #define receive_interrupt 0x01 #define self_test_mode 0x04 #define self_reception 0x10 #define enable_all_int_eff 0xFF // can mode "Basic" or "Extended" //const char * mode = "Basic"; //const char * mode = "Extended"; // waits for some time void kill_time(int rep) { int i; for (i=rep; i>0; --i) asm("nop"); } void self_testing_mode() { unsigned char r_val; printf("************************************\n"); printf("***** Set to self testing mode *****\n"); printf("************************************\n"); r_val = control_register | self_test_mode; control_register = r_val; printf( "control_register 0x%X \n\n",control_register); } void reset_all_irqs() { printf("************************************\n"); printf("********** reset all irqs **********\n"); printf("************************************\n"); printf( "interrupt_register 0x%X \n\n",interrupt_register); } void disable_irq_sff() { unsigned char r_val; printf("************************************\n"); printf("*********** disable irqs ***********\n"); printf("************************************\n"); r_val = interrupt_enable_register | enable_all_int_eff; interrupt_enable_register = r_val; printf( "interrupt_enable_register 0x%X \n\n",interrupt_enable_register); } void enable_irq_sff() { unsigned char r_val; //printf("************************************\n"); //printf("*********** enable irqs ************\n"); //printf("************************************\n"); r_val = control_register | enable_all_int; control_register = r_val; printf( "control_register 0x%X \n\n",control_register); } void disable_irq_eff() { unsigned char r_val; printf("************************************\n"); printf("*********** disable irqs ***********\n"); printf("************************************\n"); r_val = interrupt_enable_register | enable_all_int_eff; interrupt_enable_register = r_val; printf( "interrupt_enable_register 0x%X \n\n",interrupt_enable_register); } void enable_irq_eff() { unsigned char r_val; printf("************************************\n"); printf("*********** enable irqs eff ********\n"); printf("************************************\n"); r_val = interrupt_enable_register | enable_all_int_eff; interrupt_enable_register = r_val; printf( "interrupt_enable_register 0x%X \n\n",interrupt_enable_register); } void tx_request_command() { unsigned char r_val; // printf("************************************\n"); // printf("*********** tx requestet ***********\n"); // printf("************************************\n"); printf( "Send transmit-request \n"); r_val = command_register | tx_request; command_register = r_val; printf( "command register: 0x%X \n\n",command_register); } void self_reception_request() { unsigned char r_val; printf("************************************\n"); printf("***** self reception requestet *****\n"); printf("************************************\n"); r_val = command_register | self_reception; command_register = r_val; printf( "command register : 0x%X \n\n",command_register); } void release_receive_buffer() { unsigned char r_val; printf("************************************\n"); printf("****** release receive buffer ******\n"); printf("************************************\n"); r_val = command_register | release_buffer; command_register = r_val; printf( "command register : 0x%X \n\n",command_register); } void read_receive_buffer_basic() { unsigned char r_val; printf("************************************\n"); printf("******** read receive buffer *******\n"); printf("************************************\n"); printf( "identifier 0: 0x%X \n",rb_identifier_byte_0); printf( "identifier 1: 0x%X \n",rb_identifier_byte_1); printf( "data byte 1: 0x%X \n",rb_data_byte_1); printf( "data byte 2: 0x%X \n",rb_data_byte_2); printf( "data byte 3: 0x%X \n",rb_data_byte_3); printf( "data byte 4: 0x%X \n",rb_data_byte_4); printf( "data byte 5: 0x%X \n",rb_data_byte_5); printf( "data byte 6: 0x%X \n",rb_data_byte_6); printf( "data byte 7: 0x%X \n",rb_data_byte_7); printf( "data byte 8: 0x%X \n\n",rb_data_byte_8); } void read_receive_buffer_extended() { unsigned char r_val; printf("************************************\n"); printf("******* read frame extended ********\n"); printf("************************************\n"); printf( "rx_frame_information_eff: 0x%X \n\n",rx_frame_information_eff); printf( "identifier 0: 0x%X \n",rx_identifier_1_eff); printf( "identifier 1: 0x%X \n",rx_identifier_2_eff); printf( "identifier 2: 0x%X \n",rx_identifier_3_eff); printf( "identifier 3: 0x%X \n\n",rx_identifier_4_eff); printf( "data byte 1: 0x%X \n",rx_data_1_eff); printf( "data byte 2: 0x%X \n",rx_data_2_eff); printf( "data byte 3: 0x%X \n",rx_data_3_eff); printf( "data byte 4: 0x%X \n",rx_data_4_eff); printf( "data byte 5: 0x%X \n",rx_data_5_eff); printf( "data byte 6: 0x%X \n",rx_data_6_eff); printf( "data byte 7: 0x%X \n",rx_data_7_eff); printf( "data byte 8: 0x%X \n\n",rx_data_8_eff); } /*void write_frame_basic() { unsigned char r_val; printf("************************************\n"); printf("********* Send frame basic *********\n"); printf("************************************\n"); printf( "Set identifier - 0xEA 0x28\n"); tb_identifier_byte_0 = 0xEA; printf( "identifier 0: 0x%X \n",tb_identifier_byte_0); tb_identifier_byte_1 = 0x28; printf( "identifier 1: 0x%X \n\n",tb_identifier_byte_1); printf( "Set data byte 1 \n"); tb_data_byte_1 = 0x12; printf( "data byte 1: 0x%X \n",tb_data_byte_1); printf( "Set data byte 2 \n"); tb_data_byte_2 = 0x34; printf( "data byte 2: 0x%X \n",tb_data_byte_2); printf( "Set data byte 3 \n"); tb_data_byte_3 = 0x56; printf( "data byte 3: 0x%X \n",tb_data_byte_3); printf( "Set data byte 4 \n"); tb_data_byte_4 = 0x78; printf( "data byte 4: 0x%X \n",tb_data_byte_4); printf( "Set data byte 5 \n"); tb_data_byte_5 = 0x9A; printf( "data byte 5: 0x%X \n",tb_data_byte_5); printf( "Set data byte 6 \n"); tb_data_byte_6 = 0xBC; printf( "data byte 6: 0x%X \n",tb_data_byte_6); printf( "Set data byte 7 \n"); tb_data_byte_7 = 0xDE; printf( "data byte 7: 0x%X \n",tb_data_byte_7); printf( "Set data byte 8 \n"); tb_data_byte_8 = 0xF0; printf( "data byte 8: 0x%X \n\n",tb_data_byte_8); } */ /*void write_frame_extended() { unsigned char r_val; printf("************************************\n"); printf("******* write frame extended *******\n"); printf("************************************\n"); tx_frame_information_eff = 0x88; printf( "tx_frame_information_eff: 0x%X \n\n",tx_frame_information_eff); printf( "Set identifier - 0xA6 0xB0 0x12 0x30\n"); tx_identifier_1_eff = 0xA6; printf( "identifier 0: 0x%X \n",tx_identifier_1_eff); tx_identifier_2_eff = 0xB0; printf( "identifier 1: 0x%X \n",tx_identifier_2_eff); tx_identifier_3_eff = 0x12; printf( "identifier 2: 0x%X \n",tx_identifier_3_eff); tx_identifier_4_eff = 0x30; printf( "identifier 3: 0x%X \n\n",tx_identifier_4_eff); printf( "Set data - 0x12 0x34 0x56 0x78 0x9A 0xBC 0xDE 0xF0\n"); tx_data_1_eff = 0x12; printf( "data byte 1: 0x%X \n",tx_data_1_eff); tx_data_2_eff = 0x34; printf( "data byte 2: 0x%X \n",tx_data_2_eff); tx_data_3_eff = 0x56; printf( "data byte 3: 0x%X \n",tx_data_3_eff); tx_data_4_eff = 0x78; printf( "data byte 4: 0x%X \n",tx_data_4_eff); tx_data_5_eff = 0x9A; printf( "data byte 5: 0x%X \n",tx_data_5_eff); tx_data_6_eff = 0xBC; printf( "data byte 6: 0x%X \n",tx_data_6_eff); tx_data_7_eff = 0xDE; printf( "data byte 7: 0x%X \n",tx_data_7_eff); tx_data_8_eff = 0xF0; printf( "data byte 8: 0x%X \n\n",tx_data_8_eff); } */ void init_can(char * mode, char * self_test) { unsigned char r_val; if (mode == "Basic") { //printf("************************************\n"); printf("********** Basic Can Mode **********\n"); //printf("************************************\n"); printf( "Switch on Reset Mode\n"); r_val = control_register | reset_mode_on; control_register = r_val; //printf( "control_register: 0x%X \n\n",control_register); //printf( "Set clock divider register to basic can mode\n"); r_val = clock_divider_register & basic_mode | 0x07; clock_divider_register = r_val; //printf( "clock_divider_register: 0x%X \n\n",clock_divider_register); //printf( "Output control register \n"); //output_control_register = 0x01; //printf( "output control register : 0x%X \n\n",output_control_register); //printf( "Set bus timing register 0\n"); //printf( "Sync Jump Width = 2 Baudrate Prescaler = 1\n"); bus_timing_0_register = 0x83; //printf( "bus timing register 0: 0x%X \n\n",bus_timing_0_register); //printf( "Set bus timing register 1\n"); //printf( "SAM = 0 ---> Single Sampling\n"); bus_timing_1_register = 0x25; //printf( "bus timing register 1: 0x%X \n\n",bus_timing_1_register); //printf( "Set acceptance code register\n"); acceptance_code_register = 0x88; //printf( "acceptance code register: 0x%X \n\n",acceptance_code_register); //printf( "Set acceptance mask register\n"); acceptance_mask_register = 0xFF; //printf( "acceptance mask register: 0x%X \n\n",acceptance_mask_register); kill_time(50); printf( "Switch off reset mode\n"); r_val = control_register & reset_mode_off; control_register = r_val; //printf( "control_register 0x%X \n\n",control_register); kill_time(50); } else if (mode == "Extended") { printf("************************************\n"); printf("******** Extended Can Mode *********\n"); printf("************************************\n"); printf( "Switch on Reset Mode\n"); r_val = control_register | reset_mode_on; control_register = r_val; printf( "control_register: 0x%X \n\n",control_register); kill_time(50); printf( "Set clock divider register to extended can mode\n"); r_val = clock_divider_register | extended_mode | 0x07; clock_divider_register = r_val; printf( "clock_divider_register: 0x%X \n\n",clock_divider_register); kill_time(50); //printf( "Output control register \n"); //output_control_register = 0x01; //printf( "output control register: 0x%X \n\n",output_control_register); printf( "Set bus timing register 0\n"); printf( "Sync Jump Width = 2 Baudrate Prescaler = 1\n"); bus_timing_0_register = 0xA8; printf( "bus timing register 0: 0x%X \n\n",bus_timing_0_register); printf( "Set bus timing register 1\n"); printf( "SAM = 0 ---> Single Sampling\n"); bus_timing_1_register = 0x34; printf( "bus timing register 1: 0x%X \n\n",bus_timing_1_register); printf( "Set acceptance code register\n"); acceptance_code_0 = 0xA6; printf( "acceptance code register 0: 0x%X \n",acceptance_code_0); acceptance_code_1 = 0xB0; printf( "acceptance code register 1: 0x%X \n",acceptance_code_1); acceptance_code_2 = 0x12; printf( "acceptance code register 2: 0x%X \n",acceptance_code_2); acceptance_code_3 = 0x30; printf( "acceptance code register 3: 0x%X \n\n",acceptance_code_3); printf( "Set acceptance mask register\n"); acceptance_mask_0 = 0x00; printf( "acceptance mask register: 0x%X \n",acceptance_mask_0); acceptance_mask_1 = 0x00; printf( "acceptance mask register: 0x%X \n",acceptance_mask_1); acceptance_mask_2 = 0x00; printf( "acceptance mask register: 0x%X \n",acceptance_mask_2); acceptance_mask_3 = 0x00; printf( "acceptance mask register: 0x%X \n\n",acceptance_mask_3); if (self_test == "self_test") { self_testing_mode(); } printf( "Switch off reset mode\n"); r_val = control_register & reset_mode_off; control_register = r_val; printf( "control_register 0x%X \n\n",control_register); kill_time(50); } } void self_reception_test() { unsigned char r_val; printf( "Switch on Reset Mode\n"); control_register = 0x01; printf( "control 0x%X \n\n",control_register); // witch to extended mode clock_divider_register = 0x80; printf( "clock_divider 0x%X \n\n",clock_divider_register); // set bus timing //bus_timing_0_register = 0xBF; bus_timing_0_register = 0x80; bus_timing_1_register = 0x34; // set acceptance and mask register acceptance_code_0 = 0xA6; printf( "acceptance 0 0x%X \n",acceptance_code_0); acceptance_code_1 = 0xB0; printf( "acceptance 1 0x%X \n",acceptance_code_1); acceptance_code_2 = 0x12; printf( "acceptance 2 0x%X \n",acceptance_code_2); acceptance_code_3 = 0x30; printf( "acceptance 3 0x%X \n\n",acceptance_code_3); acceptance_mask_0 = 0x00; printf( "acceptance mask 0x%X \n",acceptance_mask_0); acceptance_mask_1 = 0x00; printf( "acceptance mask 0x%X \n",acceptance_mask_1); acceptance_mask_2 = 0x00; printf( "acceptance mask 0x%X \n",acceptance_mask_2); acceptance_mask_3 = 0x00; printf( "acceptance mask 0x%X \n\n",acceptance_mask_3); // Setting the "self test mode" control_register = 0x05; printf( "control 0x%X \n\n",control_register); kill_time(50); // Switch-off reset mode control_register = 0X04; printf( "control_register 0x%X \n\n",control_register); kill_time(150); // Send frame tx_frame_information_eff = 0x88; printf( "Set identifier - 0xA6 0xB0 0x12 0x30\n"); tx_identifier_1_eff = 0xA6; //printf( "identifier 0: 0x%X \n",tx_identifier_1_eff); tx_identifier_2_eff = 0xB0; //printf( "identifier 1: 0x%X \n",tx_identifier_2_eff); tx_identifier_3_eff = 0x12; //printf( "identifier 2: 0x%X \n",tx_identifier_3_eff); tx_identifier_4_eff = 0x30; //printf( "identifier 3: 0x%X \n\n",tx_identifier_4_eff); printf( "Set data - 0x12 0x34 0x56 0x78 0x9A 0xBC 0xDE 0xF0\n"); tx_data_1_eff = 0x12; //printf( "data byte 1: 0x%X \n",tx_data_1_eff); tx_data_2_eff = 0x34; //printf( "data byte 2: 0x%X \n",tx_data_2_eff); tx_data_3_eff = 0x56; //printf( "data byte 3: 0x%X \n",tx_data_3_eff); tx_data_4_eff = 0x78; //printf( "data byte 4: 0x%X \n",tx_data_4_eff); tx_data_5_eff = 0x9A; //printf( "data byte 5: 0x%X \n",tx_data_5_eff); tx_data_6_eff = 0xBC; //printf( "data byte 6: 0x%X \n",tx_data_6_eff); tx_data_7_eff = 0xDE; //printf( "data byte 7: 0x%X \n",tx_data_7_eff); tx_data_8_eff = 0xF0; //printf( "data byte 8: 0x%X \n\n",tx_data_8_eff); // Enable ints interrupt_enable_register = 0xFF; kill_time(50); //tx_request_command(); self_reception_request(); //tx_request_command(); printf( "Finnished \n"); printf( "control_register 0x%X \n\n",control_register); //kill_time(10000); printf( "interrupt_register 0x%X \n\n",interrupt_register); printf( "control_register 0x%X \n\n",control_register); //read_receive_buffer_extended(); } void write_frame_basic(unsigned char write_field[]) { int i = 0; //printf("************************************\n"); //printf("******** write frame basic *********\n"); //printf("************************************\n"); for (i=0; i<10; i++) { *((unsigned char *)(CANADDR+0x000A+i)) = write_field[i]; kill_time(10); printf( "write data: %i , 0x%X , 0x%X \n",i,write_field[i],*((unsigned char *)(CANADDR+0x000A+i))); } } void write_frame_extended(unsigned char write_field[]) { int i = 0; //printf("************************************\n"); printf("******* write frame extended *******\n"); //printf("************************************\n"); for (i=0; i<13; i++) { *((unsigned char *)(CANADDR+0x0010+i)) = write_field[i]; kill_time(10); printf( "write data %i: 0x%X , 0x%X \n",i,write_field[i],*((unsigned char *)(CANADDR+0x0010+i))); } } int test_read_frame_extended(unsigned char write_field[]) { unsigned char read_field[13]; int i = 0; for (i=0; i<13; i++) { read_field[i] = *((unsigned char *)(CANADDR+0x0010+i)); } for (i=0; i<13; i++) { if (read_field[i] != write_field[i]) { return 0; } } return 1; } main() { int i; unsigned char frame_basic0[10] = {0xEA,0x28,0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0}; unsigned char frame_basic1[10] = {0xEB,0x28,0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0}; unsigned char frame_basic2[10] = {0xEC,0x28,0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0}; unsigned char frame_basic3[10] = {0xED,0x28,0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0}; unsigned char frame_extended[13] = {0x88,0xA6,0xB0,0x12,0x30,0x12,0x34,0x56,0x78,0x9A,0xBC,0xDE,0xF0}; unsigned char r_val; init_can("Basic","normal"); enable_irq_sff(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); release_receive_buffer(); printf("interrupt register 0x%X \n",interrupt_register); while(1) { if ((interrupt_register & receive_interrupt) == 0) { kill_time(4000000); printf("No data!\n"); } else { read_receive_buffer_basic(); release_receive_buffer(); } } }