Esempio n. 1
0
/* Application's Timer Setup Function */
static void TimerSetup( void )
{
    DRV_TMR_Alarm16BitRegister(flirData.handleTmrDrv, 
                               FLIR_TMR_DRV_PERIOD, 
                               FLIR_TMR_DRV_IS_PERIODIC,
                               (uintptr_t)NULL, 
                               TimerCallback);
    DRV_TMR_Start(flirData.handleTmrDrv);
}
Esempio n. 2
0
void hal_tick_init(void){
    ledIsOn = false;
    handleTmr = DRV_TMR_Open(APP_TMR_DRV_INDEX, DRV_IO_INTENT_EXCLUSIVE);
    if( DRV_HANDLE_INVALID == handleTmr ){
        log_error("Timer init failed");
        return;
    }
    DRV_TMR_Alarm16BitRegister(handleTmr, APP_TMR_ALARM_PERIOD, true, (uintptr_t)NULL, sys_tick_handler);
    DRV_TMR_Start(handleTmr);
    SYS_PORTS_PinDirectionSelect(PORTS_ID_0, SYS_PORTS_DIRECTION_OUTPUT, APP_LED_PORT, APP_LED_PIN);
}
Esempio n. 3
0
void SYS_TMR_Tasks ( SYS_MODULE_OBJ object )
{
    SYS_TMR_OBJECT* pTmrObject = (SYS_TMR_OBJECT*)object;

    // sanity check we're still here
    if(pTmrObject != &sSysTmrObject)
    {   // no valid handle 
        return;
    }

    switch ( sSysTmrObject.status )
    {
        case SYS_STATUS_BUSY:
            // Performing the initialization
            // Try to open a TMR driver
            sSysTmrObject.driverHandle =  DRV_TMR_Open ( sSysTmrObject.drvIndex, DRV_IO_INTENT_EXCLUSIVE );

            if ( sSysTmrObject.driverHandle == DRV_HANDLE_INVALID )
            {   // spin here until the driver is opened
                break;
            }

            // try to set up the pservice parameters
            if(!_SYS_TMR_Setup(&sSysTmrObject))
            {   // some parameter error occurred
                sSysTmrObject.status  = SYS_STATUS_ERROR;
                break;
            }

            // success
            /* Set the alarm */
            DRV_TMR_Alarm16BitRegister ( sSysTmrObject.driverHandle, sSysTmrObject.driverPeriod, true,
                                    (uintptr_t)&sSysTmrObject, _SYS_TMR_AlarmCallback );

            /* Start the timer */
            DRV_TMR_Start ( sSysTmrObject.driverHandle );

            /* Status of the state machine is changed to indicate initialization complete */
            sSysTmrObject.status = SYS_STATUS_READY;
            break;

        case SYS_STATUS_READY:

            /* If there is no activity we need not run the loop */
#if (SYS_TMR_INTERRUPT_NOTIFICATION)
            // block user access; we may delete clients
            _UserGblLock();
            _SYS_TMR_ProcessIsrClients();
            _UserGblUnlock();
#else
            if ( sSysTmrObject.alarmReceived == true )
            {
                sSysTmrObject.alarmReceived = false;
                // block user access; we may delete clients
                _UserGblLock();
                _SYS_TMR_ProcessTmrAlarm();
                _UserGblUnlock();
            }
#endif  // (SYS_TMR_INTERRUPT_NOTIFICATION)
            break;

        default:    // SYS_STATUS_ERROR
            // do nothing
            break;
    }

}