On my custom board, I am seeing a system hang (interrupt does not trigger any more) when another AMP measurement is attempted following the first successful amp measurement. I modified the AD5940_Amperometric example code and was able to reproduce the same issue on my EVAL-AD5941ELCZ. I built it with KEIL uVision 5.
/examples/AD5940_Amperometric/AD5940Main.c
void AD5940_Main(void)
{
uint32_t temp;
uint32_t count;
restart:
count = 0;
AD5940PlatformCfg();
AD5940AMPStructInit(); /* Configure your parameters in this function */
AppAMPInit(AppBuff, APPBUFF_SIZE); /* Initialize AMP application. Provide a buffer, which is used to store sequencer commands */
AppAMPCtrl(AMPCTRL_START, 0); /* Control AMP measurement to start. Second parameter has no meaning with this command. */
while(1)
{
/* Check if interrupt flag which will be set when interrupt occurred. */
if(AD5940_GetMCUIntFlag())
{
AD5940_ClrMCUIntFlag(); /* Clear this flag */
temp = APPBUFF_SIZE;
AppAMPISR(AppBuff, &temp); /* Deal with it and provide a buffer to store data we got */
AMPShowResult((float*)AppBuff, temp); /* Show the results to UART */
count++;
}
if (count == 10) {
AppAMPCtrl(AMPCTRL_SHUTDOWN, 0);
goto restart;
}
}
}
Any idea how to debug this?