Post Go back to editing

ADUCM355 Impedance example adding more tasks to sequencer, data ready Interrupt does not trigger

Category: Software
Product Number: ADUCM355
Software Version: 9.40.1

Hello, I am using the ADUCM355 development board and the provided impedance example code. I am wanting to task more sequences on the WuptOrder, so I started by adding the configure sequence that is already made under SEQID_1 to the WuptOrder. Below shows the explained edits. I also changed the end sequence to WUPTENDSEQ_B so that it would operate both sequences. When adding this extra command, the FIFO full interrupt no longer fires and the code sits in an infinite loop. I have also tried adding drastic delays between SEQID_1 (configure) and SEQID_0 (take measurement).

If you would like to replicate my code, please open the M355_Impedance example project and copy and paste the below code over the IMPCTRL_START case of AppIMPCtrl function inside Impedance.c file.

Now you may be asking," why not just configure at initialization instead upon every start request?" That is simply because I am trying to simulate putting more than one sequence on the WuptOrder for further use measuring more than one sensor on separate channels.

To my understanding of the code, we also shouldn't need to reconfigure the Wake-up timer upon every start up command, but could do so upon initialization? (side question). Then, whenever we wake up the AFE, the sequence order is executed.

Any help would be greatly appreciated.

    case IMPCTRL_START:
    {
      WUPTCfg_Type wupt_cfg;

      if(AD5940_WakeUp(10) > 10)  /* Wakup AFE by read register, read 10 times at most */
        return AD5940ERR_WAKEUP;  /* Wakeup Failed */
      if(AppIMPCfg.IMPInited == bFALSE)
        return AD5940ERR_APPERROR;
      /* Start it */
      wupt_cfg.WuptEn = bTRUE;
      wupt_cfg.WuptEndSeq = WUPTENDSEQ_B;
      wupt_cfg.WuptOrder[0] = SEQID_1;
      wupt_cfg.WuptOrder[1] = SEQID_0;
      wupt_cfg.SeqxSleepTime[SEQID_1] = 4;
      wupt_cfg.SeqxSleepTime[SEQID_0] = 4;
      wupt_cfg.SeqxWakeupTime[SEQID_1] = (uint32_t)(AppIMPCfg.WuptClkFreq/AppIMPCfg.ImpODR)-4;
      wupt_cfg.SeqxWakeupTime[SEQID_0] = (uint32_t)(AppIMPCfg.WuptClkFreq/AppIMPCfg.ImpODR)-4;
      AD5940_WUPTCfg(&wupt_cfg);