summaryrefslogtreecommitdiffstatshomepage
path: root/stmhal/can.c
diff options
context:
space:
mode:
authorHenrik Sölver <henrik.solver@gmail.com>2015-11-01 23:30:46 +0100
committerDamien George <damien.p.george@gmail.com>2015-11-02 23:09:49 +0000
commit35e7d9c0f114ea078d0a19c7f9743fdc4c7e8a3b (patch)
tree0a7f673a21d67945ffddc6786c19769bdf78298b /stmhal/can.c
parent06f70973f7cbbb9b64d8fe3990a2addc5c3329fd (diff)
downloadmicropython-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.c8
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;
}