Pavel Pisa commented on a discussion on cpukit/dev/can/can-bittiming.c: 
https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/726#note_132797

 >      sample_point = 1000 * ( tseg + CAN_CALC_SYNC_SEG - tseg2 ) /
 >          ( tseg + CAN_CALC_SYNC_SEG );
 >  
 > -    sample_point_error = abs( sample_point_nominal - sample_point );
 > +    sample_point_error = sample_point_nominal - sample_point;

What is correct for values smaller than 32768 (16-minimal int width defined by 
standard or 2147483648 on the more common systems today) is

```
sample_point_error = abs( (int)sample_point_nominal - (int)sample_point ); 
```
The numbers should not exceed 32768 for all bitrates which make sense.
Another option is
```
sample_point_error = sample_point_nominal > sample_point ?; 
                     sample_point_nominal - sample_point :
                     sample_point - sample_point_nominal; 
```
Which would work to the range twice as big when compared to the first option.

-- 
View it on GitLab: 
https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/726#note_132797
You're receiving this email because of your account on gitlab.rtems.org.


_______________________________________________
bugs mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/bugs

Reply via email to