This posting summarizes known issues, not already in the errata) for Sensor Fusion Build 420:
- FRDM-KL25Z, KL26Z, KL46Z, K20D50M and K64F boards shipped to date do not include pull-up resistors on the NMI pin. This has reportedly caused applications to not start properly because of inadvertent non-maskable interrupts. There are several possible ways to resolve this:
- Add the missing pull-up resistor
- Disable the NMI during the first call to the NMI interrupt handler. You can do that by replacing the existing default handler with:
// called on NMI
void Cpu_OnNMIINT(void)
{
// Disable NMI pin (some boards do not have pullups)
SIM_SCGC5 |= (uint32_t)SIM_SCGC5_PORTA_MASK; /* NMI and PORTA clock gate enable */
PORTA_PCR4 &= PORT_PCR_MUX_MASK;
/* enable input with pull up enable not NMI */
PORTA_PCR4 |= PORT_PCR_MUX(01) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK;
// return with no action
return;
}
- Add two new PE components. One of type BitIO_LDD and the other of type Init_GPIO. Between them you can assign PTA4 as an input GPIO with pullup enabled. This has the advantage of requiring no changes to the .c or .h files.
- KDS builds using optimization level O3 do not properly execute the command interpreter within Events.c function UART_OnBlockReceived(). Change the project settings optimization level to O1 and it should work fine.
- It is possible for the Sensor Fusion Toolbox (both Windows and Android versions) to "fall out of sync" with the development board firmware with regard to desired sensor fusion algorithm being executed. Symptoms and root causes are reviewed in the PDF attached to this posting.