PDL 2.1.0 Dual Timer Channel 1 unusable

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
JuOs_3941651
Level 1
Level 1
First reply posted First question asked

We found out, that the PDL 2.1.0 has a defect that makes DT channel 1 unusable.

We are using the MB9BF368N and need the DT.

Is that problem resoleved and anybody has a solution?

0 Likes
1 Solution
GeonaP_26
Moderator
Moderator
Moderator
250 solutions authored 100 solutions authored 50 solutions authored

Please make the following changes in DT.c driver file;

(1) In the DtGetInternDataPtr API, please comment *ppstcDt = &((*ppstcDt)[u8Channel]);

(2) Modify the DtIrqHandler2 handler to following;

void DtIrqHandler2()

{

    volatile stc_dtn_t*  pstcDt;

    stc_dt_intern_data_t* pstcDtInternData;

    pstcDt = &DT0;

    pstcDtInternData = &m_astcDtInstanceDataLut[0].stcInternData;

  

    if (TRUE == pstcDt->TIMER2RIS_f.TIMER2RIS) /* Timer 0 interrupt? */

    {

        pstcDt->TIMER2INTCLR = 0u; /* Clear interrupt */

        /* Check for callback function pointer */

        if (NULL != pstcDtInternData->pfnIrqCallbackIntern[1])

        {

            pstcDtInternData->pfnIrqCallbackIntern[1]() ;

        }

    }

} /* DtIrqHandler */

#endif

View solution in original post

0 Likes
2 Replies
ShipingW_81
Moderator
Moderator
Moderator
500 replies posted 250 solutions authored 250 replies posted

You are correct. This is a known issue as shown in PDL2.1.0 release note. Sorry for missed it.

Currently, there is no verified workaround for this issue. As for the PDL2.1.0, there is no concrete schedule for the next release. I tend to believe PDL2.1.0 is the final release.

0 Likes
GeonaP_26
Moderator
Moderator
Moderator
250 solutions authored 100 solutions authored 50 solutions authored

Please make the following changes in DT.c driver file;

(1) In the DtGetInternDataPtr API, please comment *ppstcDt = &((*ppstcDt)[u8Channel]);

(2) Modify the DtIrqHandler2 handler to following;

void DtIrqHandler2()

{

    volatile stc_dtn_t*  pstcDt;

    stc_dt_intern_data_t* pstcDtInternData;

    pstcDt = &DT0;

    pstcDtInternData = &m_astcDtInstanceDataLut[0].stcInternData;

  

    if (TRUE == pstcDt->TIMER2RIS_f.TIMER2RIS) /* Timer 0 interrupt? */

    {

        pstcDt->TIMER2INTCLR = 0u; /* Clear interrupt */

        /* Check for callback function pointer */

        if (NULL != pstcDtInternData->pfnIrqCallbackIntern[1])

        {

            pstcDtInternData->pfnIrqCallbackIntern[1]() ;

        }

    }

} /* DtIrqHandler */

#endif

0 Likes