//*----------------------------------------------------------------------------
//* Function Name       : timer_init
//* Object              : Init timer counter
//* Input Parameters    : none
//* Output Parameters   : TRUE
//*----------------------------------------------------------------------------
void timer_init ( void )
//* Begin
{
    //init the timer interrupt counter
    count_timer0_interrupt=0;
    count_timer1_interrupt=0;

    //* Open timer0
	AT91F_TC_Open(AT91C_BASE_TC0,TC_CLKS_MCK1024,AT91C_ID_TC0);

    //* Open Timer 0 interrupt
	AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_TC0, TIMER0_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE, timer0_c_irq_handler);
	AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS;  //  IRQ enable CPC
	AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC0);

    //* Open timer1
	AT91F_TC_Open(AT91C_BASE_TC1,TC_CLKS_MCK128,AT91C_ID_TC1);

    //* Open Timer 1 interrupt
	AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_TC1, TIMER1_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE, timer1_c_irq_handler);
	AT91C_BASE_TC1->TC_IER  = AT91C_TC_CPCS;  //  IRQ enable CPC
	AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC1);


    //* Generate interrupt by software
 	AT91F_AIC_Trig (AT91C_BASE_AIC,AT91C_ID_TC0) ;
 	AT91F_AIC_Trig (AT91C_BASE_AIC,AT91C_ID_TC1) ;
    //* Start timer0
        AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG ;

    //* Start timer1
        AT91C_BASE_TC1->TC_CCR = AT91C_TC_SWTRG ;

//* End
}
Esempio n. 2
0
//*----------------------------------------------------------------------------
//* Function Name       : timer_init
//* Object              : Init timer counter
//* Input Parameters    : none
//* Output Parameters   : TRUE
//*----------------------------------------------------------------------------
void timer_init (unsigned int time)
{
    //* Open timer0
    AT91F_TC_Open(AT91C_BASE_TC0,TC_CLKS_MCK8 | AT91C_TC_WAVESEL_UP_AUTO,AT91C_ID_TC0);

    //* Open Timer 0 interrupt
    AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_TC0, TIMER0_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, timer0_c_irq_handler);
    AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS;  //  IRQ enable CPC
    AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC0);

    AT91C_BASE_TC0->TC_RC = (unsigned int)(AT91C_MASTER_CLOCK / 8 * time / 1000);

    //* Start timer0
    AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG ;
}
Esempio n. 3
0
// функция инициализации таймеров-счетчиков
void timer_init ( void )
{
    // разрешение timer 0
     //	AT91F_TC_Open(AT91C_BASE_TC0,TC_CLKS_MCK1024,AT91C_ID_TC0);
    // разрешение прерываний от  Timer 0
     //	AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_TC0,
     // TIMER0_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, timer0_c_irq_handler);
     //	AT91C_BASE_TC0->TC_IER = AT91C_TC_COVFS;  //  разрешение прерывания по переполнению
     //	AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC0);
    // разрешение timer 1
	AT91F_TC_Open(AT91C_BASE_TC1,TC_CLKS_MCK2,AT91C_ID_TC1);
    // разрешение прерываний от  Timer 1
	AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_TC1,
        TIMER1_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, timer1_c_irq_handler);
	AT91C_BASE_TC1->TC_IER  = AT91C_TC_CPCS;  //разрешение прерывания при совпадении с RC
	AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC1);
        AT91C_BASE_TC1->TC_RC = 0x1000 ; // задание значения RC (определяет период прерываний)
        AT91C_BASE_TC1->TC_CMR  = AT91C_TC_CPCTRG ; //задание триггера при совпадении с RC
    // сброс и запуск timer0
      //  AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG ;
    // сброс и запуск timer1
        AT91C_BASE_TC1->TC_CCR = AT91C_TC_SWTRG ;
}