如图7所示,调整检测时钟周期,使负脉冲的低电平阶段只有一个采样点,在3个上升沿检测到电平为1→0→1。此时对检测时钟的要求为:T>W/2。如果继续加大检测时钟周期,使之大于负脉冲宽度,则可能检测不到电平变化。所以,检测时钟周期要求T<W。
2.4 实验结果
系统中FPGA产生的脉冲中断信号宽度为200 ns,AT91RM9200主时钟频率为59 MHz,PIO检测时钟与主时钟频率相同为59 MHz。
采用延时读取ISR方法,在中断服务程序中延时20个主时钟周期(320 ns)后,读寄存器PIO_ISR,成功实现单次响应脉冲中断信号,符合设计要求。
采用调整检测时钟的方法,将检测时钟调整为8 MHz,满足W>T>W/2要求,成功实现单次响应脉冲中断信号,符合设计要求,验证理论分析的正确性。
2.5 需要注意的问题
1)软件查询法原理较简单,但仍会2次进入中断服务程序,占用一定的系统资源;
2)延时读取ISR的方法适应能力较强,可通过软件代码的处理适应不同的系统;
3)调整PIO电平检测时钟的方法由于需要对比外设中断信号时钟频率和AT91RM9200电平检测时钟频率关系,不一定在所有外设上都能够实现需要的频率对比关系,应用范围受到一定限制。
3 结束语
AT9lRM9200通过配置PIO引脚为中断信号输入来提供较强的系统扩展能力。PIO中断的检测采用连续时钟检测电平变化的方式实现。在处理脉冲形式中断信号时会由于中断二次响应问题产生较大的系统开销,降低系统的实时性。
通过深入分析系统硬件结构和中断处理流程,将软硬件特性相结合进行设计,创新性地提出了延时读取中断状态寄存器和调整检测时钟2种优化解决方案,成功避免了脉冲中断二次响应的问题,并在软件查询方法的基础上大幅降低系统中断服务的开销,确保满足短波无线通信系统业务功能的实时性要求。