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