This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMAG3001: Negative threshold for magnetic limit check does not trigger any interruption (on INT pin)

Part Number: TMAG3001

Tool/software:

Hi,

I'm trying to use the device to trigger an isr when above defined threshold on a given axis (Y), and I'm facing issue with negative thresholds.

- (1) It works when both thresholds are positive (i.e > 0). For instance THR_Config_2 = 0x1 and Sensor_Config_5 = 0x20, an isr is triggerred when magnetic field is above 10mT and below 0.312mT.

- (2) When low threhold is negative and High threshold is positive, no ISR is triggered at all. For instance THR_Config_2 = 0xFF (-1) and Sensor_Config_5 = 0x20, an isr is supposed to be triggered when magnetic field is above 10mT and below -0.312mT. But no ISR at all (INT signal is always up) is triggered.

- (3) When both thresholds are negative, isr is always triggered, except when magnetic field is between THR_LO and THR_HI but with sign of thr ignored. For instance, THR_Config_2 = 0xE0 (-32) and Sensor_Config_5 = 0xFF (-1), ISR is supposed to be triggered when magnetic field is below -9.90mT and above -0.312mT. But in that case, ISR is always triggered, except when magnetic field is between ~39mT and ~30mT. 39mT matches Sensor_Config_5 | 0x7F (sign bit ignored) : threshold = 127/128 * 40mT = 39.6mT. 30mT matchesTHR_Config_2 | 0x7F (sign bit ignored) : threshold = 96/127 * 40mT = 30.2mT.

Points (2) and (3) are not as I expect. Any idea?

Here is the dump of the registers of the tmag3001 in case (2) (only threshold are changed in other cases):

reg: 0, value: 10
reg: 1, value: 2
reg: 2, value: 29
reg: 3, value: 0
reg: 4, value: 1
reg: 5, value: FF
reg: 6, value: 64
reg: 7, value: 20
reg: 8, value: 64
reg: 9, value: 64
reg: A, value: 20
reg: B, value: 9C
reg: C, value: 69
reg: D, value: 0
reg: E, value: 49
reg: F, value: 54
reg: 10, value: 44
reg: 11, value: 30
reg: 12, value: 0
reg: 13, value: 0
reg: 14, value: FF
reg: 15, value: FE
reg: 16, value: 0
reg: 17, value: 0
reg: 18, value: 11
reg: 19, value: 0
reg: 1A, value: 0
reg: 1B, value: 0
reg: 1C, value: 11

Thank you