Exemplo n.º 1
0
/*************************************************************************
 * Function Name: PDB_init
 * Parameters: none
 * Return: none
 * Description: PDB module initialization
 *************************************************************************/
void PDB_init(void)
{
  pdb_timer_config_t pdbUserConfig;
  PDB_HAL_Init(PDB0_BASE_PTR);
  PDB_HAL_SetAdcPreTriggerOutputEnable(PDB0_BASE_PTR, 0, (1U<<0)|(1U<<1), true);
  PDB_HAL_SetAdcPreTriggerEnable(PDB0_BASE_PTR, 0, (1U<<0)|(1U<<1), true);
  PDB_HAL_SetAdcPreTriggerBackToBackEnable(PDB0_BASE_PTR, 0, (1U<<1), true);

  PDB_HAL_SetAdcPreTriggerDelayValue(PDB0_BASE_PTR, 0, 0, (PWM_MODULO / 6));

  // Set load register mode
  pdbUserConfig.loadValueMode = kPdbLoadValueImmediately;
  // Select PDB external trigger source, it is from FTM0
  pdbUserConfig.triggerInput = kPdbTrigger8;
  PDB_HAL_ConfigTimer(PDB0_BASE_PTR,&pdbUserConfig);
  PDB_HAL_Enable(PDB0_BASE_PTR);
  PDB_HAL_SetTimerModulusValue(PDB0_BASE_PTR, 0x7fff);
  PDB_HAL_SetLoadValuesCmd(PDB0_BASE_PTR);
  
  // Set load register mode
  pdbUserConfig.clkPreDiv = kPdbClkPreDivBy1;
  pdbUserConfig.loadValueMode = kPdbLoadValueAtNextTrigger;
  // Select PDB external trigger source, it is from FTM0
  pdbUserConfig.triggerInput = kPdbTrigger8;
  pdbUserConfig.seqErrIntEnable = true;
  pdbUserConfig.clkPreMultFactor = kPdbClkPreMultFactorAs1;
  PDB_HAL_ConfigTimer(PDB0_BASE_PTR,&pdbUserConfig);
  PDB_HAL_SetLoadValuesCmd(PDB0_BASE_PTR);

  enable_irq(g_pdbIrqId[0]);
  set_irq_priority(g_pdbIrqId[0], ISR_PRIORITY_PDB0);
}
Exemplo n.º 2
0
/*FUNCTION*********************************************************************
 *
 * Function Name : PDB_DRV_LoadValuesCmd
 * Description   : Execute the command of loading values.
 *
 *END*************************************************************************/
void PDB_DRV_LoadValuesCmd(uint32_t instance)
{
    assert(instance < PDB_INSTANCE_COUNT);
    PDB_Type * base = g_pdbBase[instance];

    PDB_HAL_SetLoadValuesCmd(base);
}
/*FUNCTION*********************************************************************
 *
 * Function Name : PDB_HAL_Init
 * Description   : Reset PDB's registers to a known state. This state is
 * defined in Reference Manual, which is power on reset value.
 *
 *END*************************************************************************/
void PDB_HAL_Init(PDB_Type * base)
{
    uint32_t chn, preChn;

    /* Note: The setting would take effect only when the PDBEN bit is set. */
    PDB_WR_SC(base, PDB_SC_PDBEN_MASK);

    PDB_WR_MOD(base, 0xFFFFU);
    PDB_WR_IDLY(base, 0xFFFFU);
    /* For ADC trigger. */
    for (chn = 0U; chn < PDB_C1_COUNT; chn++)
    {
        PDB_WR_C1(base, chn, 0U);
        PDB_WR_S(base, chn,0xFU);
        for (preChn = 0U; preChn < FSL_FEATURE_PDB_ADC_PRE_CHANNEL_COUNT; preChn++)
        {
            PDB_HAL_SetAdcPreTriggerDelayValue(base, chn, preChn, 0U);
        }
    }

#if FSL_FEATURE_PDB_HAS_DAC
    /* For DAC trigger. */
    for (chn = 0U; chn < PDB_INTC_COUNT; chn++)
    {
        PDB_WR_INTC(base, chn, 0U);
        PDB_WR_INT(base ,chn, 0U);
    }
#endif

    /* For Pulse out trigger. */
    PDB_WR_POEN(base, 0U);
    for (chn = 0U; chn < PDB_PODLY_COUNT; chn++)
    {
        PDB_WR_PODLY(base, chn, 0U);
    }
    /* Load the setting value. */
    PDB_HAL_SetLoadValuesCmd(base);
    PDB_HAL_Disable(base);
}