硬件: EPSON RX8010 SJ
功能描述:
固定周期定时中断功能 (Fixed-cycle Timer Interrupt Function) 产生一个循环周期的中断事件, 在 244.14uS ~ 65535 小时之间。此功能可在某一时刻停止,也可将其做为一个累加计时器。在此中断事件发生后,其对应的 IRQ 输出状态将被自动清除。
设定固定周期定时器中断功能流程
功能图
涉及相关寄存器
寄存器设置规则
功能函数
/** Fixed-cycle Timer Interrupt Function,TIF-- START -- **/
void RX8010SJ_TIF_set_TIMER_COUNTER0( uint8_t para );
void RX8010SJ_TIF_set_TIMER_COUNTER1( uint8_t para );
void RX8010SJ_TIF_reset_EXT_TE(void);
void RX8010SJ_TIF_enable_EXT_TE(void);
void RX8010SJ_TIF_reset_FLAG_TF(void);
void RX8010SJ_TIF_reset_CONTROL_TIE(void);
void RX8010SJ_TIF_enable_CONTROL_TIE(void);
void RX8010SJ_TIF_reset_CONTROL_TSTP(void);
void RX8010SJ_TIF_enable_CONTROL_TSTP(void);
void RX8010SJ_TIF_select_output_by_IRQ_CONTROL_TMPIN(uint8_t sigal_output);
void RX8010SJ_TIF_output_at_IRQ1(void);
void RX8010SJ_TIF_output_at_IRQ2(void);
void RX8010SJ_TIF_trigger(uint8_t para_of_counter0,uint8_t para_of_counter1);
/** Fixed-cycle Timer Interrupt Function,TIF-- END -- **/
/** Fixed-cycle Timer Interrupt Function,TIF-- START -- **/
void RX8010SJ_TIF_set_TIMER_COUNTER0( uint8_t para )
{
RX8010SJ_write_reg_TIMER_COUNTER0( para );
}
void RX8010SJ_TIF_set_TIMER_COUNTER1( uint8_t para )
{
RX8010SJ_write_reg_TIMER_COUNTER1( para );
}
void RX8010SJ_TIF_reset_EXT_TE(void)
{
RX8010SJ_write_bit_EXT_TE( RX8010SJ_BIT_UNABLE );
}
void RX8010SJ_TIF_enable_EXT_TE(void)
{
RX8010SJ_write_bit_EXT_TE( RX8010SJ_BIT_ENABLE );
}
void RX8010SJ_TIF_set_EXT_TSEL( uint8_t para )
{
RX8010SJ_write_EXT_TSEL2_1_0(para);
}
void RX8010SJ_TIF_reset_FLAG_TF(void)
{
RX8010SJ_reset_bit_FLAG_TF();
}
void RX8010SJ_TIF_reset_CONTROL_TIE(void)
{
RX8010SJ_write_bit_CTRL_TIE( RX8010SJ_BIT_UNABLE );
}
void RX8010SJ_TIF_enable_CONTROL_TIE(void)
{
RX8010SJ_write_bit_CTRL_TIE( RX8010SJ_BIT_ENABLE );
}
void RX8010SJ_TIF_reset_CONTROL_TSTP(void)
{
RX8010SJ_write_bit_CTRL_TSTP( RX8010SJ_BIT_UNABLE );
}
void RX8010SJ_TIF_enable_CONTROL_TSTP(void)
{
RX8010SJ_write_bit_CTRL_TSTP( RX8010SJ_BIT_ENABLE );
}
void RX8010SJ_TIF_select_output_by_IRQ_CONTROL_TMPIN(uint8_t sigal_output)
{
uint8_t result = 0xFF;
result = RX8010SJ_read_reg_IRQ();
if (sigal_output == RX8010SJ_IRQ_TMPIN_TIF_OUPUT_IRQ1 )
result |= RX8010SJ_BIT_IRQ_TMPIN;
else
result &= ~RX8010SJ_BIT_IRQ_TMPIN;
RX8010SJ_write_reg_IRQ( result );
}
void RX8010SJ_TIF_output_at_IRQ1(void)
{
uint8_t result = 0xFF;
result = RX8010SJ_read_reg_IRQ();
result |= RX8010SJ_BIT_IRQ_TMPIN;
RX8010SJ_write_reg_IRQ( result );
}
void RX8010SJ_TIF_output_at_IRQ2(void)
{
uint8_t result = 0xFF;
result = RX8010SJ_read_reg_IRQ();
result &= ~RX8010SJ_BIT_IRQ_TMPIN;
RX8010SJ_write_reg_IRQ( result );
}
void RX8010SJ_TIF_trigger(uint8_t para_of_counter0,uint8_t para_of_counter1)
{
RX8010SJ_TIF_reset_EXT_TE();
RX8010SJ_TIF_reset_CONTROL_TIE();
RX8010SJ_TIF_reset_FLAG_TF();
RX8010SJ_TIF_enable_CONTROL_TSTP();
// RX8010SJ_TIF_select_output_by_IRQ_CONTROL_TMPIN( RX8010SJ_IRQ_TMPIN_TIF_OUPUT_IRQ2 );
RX8010SJ_TIF_output_at_IRQ2();
RX8010SJ_TIF_set_EXT_TSEL( RX8010SJ_COUNTDOWN_PERIOD_1Hz_TSEL_010 );
RX8010SJ_TIF_set_TIMER_COUNTER0(para_of_counter0);
RX8010SJ_TIF_set_TIMER_COUNTER1(para_of_counter1);
// RX8010SJ_TIF_set_TIMER_COUNTER0(0x05);
// RX8010SJ_TIF_set_TIMER_COUNTER1(0x00);
RX8010SJ_TIF_reset_CONTROL_TSTP();
RX8010SJ_TIF_enable_CONTROL_TIE();
RX8010SJ_TIF_enable_EXT_TE();
}
/** Fixed-cycle Timer Interrupt Function,TIF-- END -- **/