diff options
author | Henrik Sölver <henrik.solver@gmail.com> | 2015-11-01 23:30:46 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-11-02 23:09:49 +0000 |
commit | 35e7d9c0f114ea078d0a19c7f9743fdc4c7e8a3b (patch) | |
tree | 0a7f673a21d67945ffddc6786c19769bdf78298b /stmhal/can.c | |
parent | 06f70973f7cbbb9b64d8fe3990a2addc5c3329fd (diff) | |
download | micropython-35e7d9c0f114ea078d0a19c7f9743fdc4c7e8a3b.tar.gz micropython-35e7d9c0f114ea078d0a19c7f9743fdc4c7e8a3b.zip |
stmhal/can: Fix a bug in filter handling.
Reported here: http://forum.micropython.org/viewtopic.php?f=2&t=845
Diffstat (limited to 'stmhal/can.c')
-rw-r--r-- | stmhal/can.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/stmhal/can.c b/stmhal/can.c index eb52e982ff..005bd9e943 100644 --- a/stmhal/can.c +++ b/stmhal/can.c @@ -688,10 +688,10 @@ STATIC mp_obj_t pyb_can_setfilter(mp_uint_t n_args, const mp_obj_t *pos_args, mp rtr_masks[1] = mp_obj_get_int(rtr_flags[1]) ? 0x02 : 0; } } - filter.FilterIdHigh = (mp_obj_get_int(params[0]) & 0xFF00) >> 13; - filter.FilterIdLow = (((mp_obj_get_int(params[0]) & 0x00FF) << 3) | 4) | rtr_masks[0]; - filter.FilterMaskIdHigh = (mp_obj_get_int(params[1]) & 0xFF00 ) >> 13; - filter.FilterMaskIdLow = (((mp_obj_get_int(params[1]) & 0x00FF) << 3) | 4) | rtr_masks[1]; + filter.FilterIdHigh = (mp_obj_get_int(params[0]) & 0x1FFFE000) >> 13; + filter.FilterIdLow = (((mp_obj_get_int(params[0]) & 0x00001FFF) << 3) | 4) | rtr_masks[0]; + filter.FilterMaskIdHigh = (mp_obj_get_int(params[1]) & 0x1FFFE000 ) >> 13; + filter.FilterMaskIdLow = (((mp_obj_get_int(params[1]) & 0x00001FFF) << 3) | 4) | rtr_masks[1]; if (args[1].u_int == MASK32) { filter.FilterMode = CAN_FILTERMODE_IDMASK; } |