etisserant@0: #include etisserant@0: #include etisserant@0: etisserant@0: etisserant@0: /* etisserant@0: CiA DS-301, p.20 etisserant@0: */ etisserant@0: #define MAX_BIT_TIMING 9 etisserant@0: int table_bit_timing_settings[MAX_BIT_TIMING][3] = etisserant@0: { etisserant@0: {1000, 8, 6}, /* baudrate, number of time quanta per bit, tsync+tseg1 */ etisserant@0: {800, 10, 8}, etisserant@0: {500, 16, 14}, etisserant@0: {250, 16, 14}, etisserant@0: {125, 16, 14}, etisserant@0: {100, 16, 14}, etisserant@0: { 50, 16, 14}, etisserant@0: { 25, 16, 14}, etisserant@0: { 10, 16, 14} etisserant@0: }; etisserant@0: etisserant@0: etisserant@0: void can_timing_registers(double f, int *v) etisserant@0: /* fill the vector v with the proper setting for TIMER 0 and TIMER 1 etisserant@0: regarding the clock and the baudrate */ etisserant@0: { etisserant@0: int i; etisserant@0: etisserant@0: int BRP, TSEG1, TSEG2; etisserant@0: etisserant@0: double nominal, tq, tscl; etisserant@0: etisserant@0: double tclk = 1 / (f*1e6); /* sec */ etisserant@0: etisserant@0: for(i=0; i