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.

Bug in driver library function HibernateTamperIOEnable

I found a bug while attempting to use the HibernateTamperIOEnable function. After calling the function with HIBERNATE_TAMPER_IO_TRIGGER_HIGH, it is not possible to clear this bit with a subsequent call.

The bug is located at line 2069 in hibernate.c (Tivaware 2.1.1.71) where ui32Temp should be assigned to the right-hand value, not ORed with it, or else the first bit mask operation has no effect.

//
// Read the current tamper I/O configuration.
//
ui32Temp = HWREG(HIB_TPIO);

//
// Mask out configuration options for the requested input.
//
ui32Mask = (ui32Temp & (~((HIB_TPIO_GFLTR0 | HIB_TPIO_PUEN0 |
                           HIB_TPIO_LEV0 | HIB_TPIO_EN0) <<
                          (ui32Input << 3))));

//
// Set tamper I/O configuration for the requested input.
//
ui32Temp |= (ui32Mask | ((ui32Config | HIB_TPIO_EN0) << (ui32Input << 3)));

//
// Unlock the tamper registers.
//
HWREG(HIB_LOCK) = HIB_LOCK_HIBLOCK_KEY;
_HibernateWriteComplete();

//
// Write to the register.
//
HWREG(HIB_TPIO) = ui32Temp;

Kind regards Per