短波通信作为一种应急保障通信手段,在现代通信系统中具有不可替代的作用,在军事、海事、矿山、人防等领域发挥重要作用。随着现代短波无线通信设备的集成度和复杂度越高,实现的业务功能就越多,如GPS、短信、电子邮件等,因此,设备控制器往往需同时处理多种业务功能的发送请求信号PTT(Press to Talk),并为之分配信道占用时间,确保各种业务依据其优先级即时获得信道使用权。
PTT信号具有高实时性的要求,需要即时响应,因此,在系统设计时.需要利用MCU的中断处理机制满足PTT信号的要求。这里选用AT9lR-M9200型微处理器作为系统控制器核心,可通过并行IO控制器PIO(Parallel IO Controller)将128个复用IO口配置为中断输入。大大提高系统的扩展能力。详细分析PIO中断的处理流程,并给出系统设计中针对脉冲中断信号的二次响应问题的优化解决方案。
1 系统介绍
短波通信系统PTT处理部分简化框图如图1所示。
AT91RM9200提供7个专用中断信号(IRQO~IRQ6),均被集成外设占用,为满足PTT信号的实时处理要求,PIO控制器将IO口配置为中断输入引脚。FPGA处理4路发送请求信号,即PTT_A,PTT_B,PTT_C,PTT_D。PTT信号发生变化时,FPGA产生一个负脉冲中断信号PTT_INT通知MCU,MCU通过数据,地址总线读取PTT状态并进行处理。[page]
2 中断处理过程
2.1 概述
图2为AT91RM9200中断级联结构。图3为PIO信号和控制框图。
根据图3所示,当边沿检测器(EDGE DETECTOR)检测到IO口上电平变化,PIO_ISR寄存器对应位置1,PIO_ISR状态决定PIO_INT信号是否有效。中断服务程序读PIO_ISR后所有位自动清零,同时,PIO_INT信号也无效。中断处理流程如图4所示。
[page]
2.2 脉冲中断信号的二次响应
对于外设(FPGA或专用IC)产生的中断信号来说,一般都是一个负脉冲信号,具有下降和上升2个边沿。PIO端口线作为中断输入时,根据检测2个采样周期内的电平差实现,端口线上的任何电平变化都会产生中断,所以,当接收到负脉冲中断信号时,则产生2次中断请求,图5是其处理流程。
2.3 解决方案
一般可采用软件查询的方法解决脉冲中断信号的二次响应。中断服务程序读取PIO_ISR后,通过寄存器PIO_PDSR判断PB28端口线上当前电平是1还是0,以确定是否处理。但采用这种方法仍会进入中断服务程序2次,造成较大的系统开销,影响系统实时性。因此,在深入分析系统硬件结构的基础上,给出以下2种优化解决方案。
1)延时读取中断状态寄存器 如图6所示,系统进入中断服务程序后延时至T3时刻读取PIO_ISR,晚于负脉冲信号上升沿到达时间,则2次电平变化只产生一次中断响应。
[page]
2)调整检测时钟 PIO通过PMC产生的高速时钟检测PIO端口线上电平变化,通过调整PIO检测时钟至满足W>T>W/2,其中,W为负脉冲宽度,T为采样时钟周期,可解决脉冲中断信号的二次响应问题。
如图7所示,调整检测时钟周期,使负脉冲的低电平阶段只有一个采样点,在3个上升沿检测到电平为1→0→1。此时对检测时钟的要求为:T>W/2。如果继续加大检测时钟周期,使之大于负脉冲宽度,则可能检测不到电平变化。所以,检测时钟周期要求T2.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种优化解决方案,成功避免了脉冲中断二次响应的问题,并在软件查询方法的基础上大幅降低系统中断服务的开销,确保满足短波无线通信系统业务功能的实时性要求。
关键字:AT91RM9200 中断 并行控制器 PTT
引用地址:
AT91RM9200 PIO中断在短波通信系统中的应用
推荐阅读最新更新时间:2024-03-16 13:05
AVR单片机定时器T0的基本中断使用ICCAVR
#include iom128v.h void main(void) { TCNT0=0x83; TCCR0=0x07; TIMSK=0x01; SEI(); DDRC=0xff; PORTC=0; OCR0=0X00; while(1); } #pragma interrupt_handler Timer0:iv_TIMER0_OVF void Timer0() { TCNT0=0x83; PORTC=~PORTC; } 得出一个结论:别指望巧合。
[单片机]
基于MSP430F149单片机串口程序,中断查询方式
基于MSP430F149单片机串口程序,中断查询方式 #include msp430x14x.h #define uint unsigned int #define uchar unsigned char #define RXF BIT7//p2 #define TXF BIT6 #define Read BIT4//p3 #define Write BIT5//p3 uchar static usb_flag=0; void int_clk() { uchar i; BCSCTL1&=~XT2OFF; //打开XT振荡器 BCSCTL2|=SELM1+SELS;//MCLK 8M and SMCLK 1
[单片机]
基于AT91RM9200的图像采集系统设计
引言: 近年来高性能、低功耗的ARM处理器成为嵌入式应用的主流;开源的嵌入式Linux操作系统由于系统稳定、兼容性和移植性好、网络功能强等优点也成为首选嵌入式操作系统之一,但目前嵌入式Linux支持的USB摄像头(如OV511)市场上已淘汰,使用现有USB摄像头需开发相关驱动程序,由于采用中芯微公司的USB摄像头在市场中的占有率很高,可高效压缩后输出JPEG图像,所以本文针对这类USB摄像头设计了基于 AT91RM9200处理器的图像采集处理平台,实现了JPEG图像的采集和网络传输。 1.硬件系统设计 (1) AT91RM9200简介 AT91RM9200是ATMEL公司生产的基于ARM920T的工业级SOC芯片,不仅有
[单片机]
Stm32定时器中断触发AD采样
Stm32的ADC有DMA功能这都毋庸置疑,也是我们用的最多的!然而,如果我们要对一个信号(比如脉搏信号)进行定时采样(也就是隔一段时间,比如说2ms),有三种方法: 1)使用定时器中断每隔一定时间进行ADC转换,这样每次都必须读ADC的数据寄存器,非常浪费时间! 2)把ADC设置成连续转换模式,同时对应的DMA通道开启循环模式,这样ADC就一直在进行数据采集然后通过DMA把数据搬运至内存。但是这样做的话还得加一个定时中断,用来定时读取内存中的数据! 3)使用ADC的定时器触发ADC转换的功能,然后使用DMA进行数据的搬运!这样只要设置好定时器的触发间隔,就能实现ADC定时采样转换的功能,然后可以在程序的死循环中一直检
[单片机]
STM32 UART5 中断接收程序
/* 此函数是根据网上程序改写,串口5采用中断接收 收够20个字符 就向PC 返回20个数字 详见main函数和中断函数 */ #include stm32f10x_lib.h unsigned char TxBuffer5 ; unsigned int i; unsigned int flag; /*************************************************** * 函数名称 :void RCC_Configuration() * 功能描述 : 复位和时钟控制 配置 * 参数 : 无 * 返回值 : 无 * 全局变量 : 无 * 全局静态变量: 无 * 局
[单片机]
CAN总线学习笔记 | CAN盒测试STM32的CAN中断接收CAN总线学习笔记 | CAN盒测试STM32的CAN中断接收
CAN基础知识介绍文中介绍了CAN协议相关的基础知识,以及STM32F4芯片的CAN控制器相关知识,下面将通过实例,利用STM32CubeMX图形化配置工具,并配合CAN盒,来实现CAN通讯的中断收发测试 1. STM32CubeMX配置 ⏩ CAN是挂载在APB1总线上,设置PCLK1时钟频率到最大45MHz ⏩ 激活CAN1,配置位时序参数,其他基本参数以及工作模式(此处设置为Normal普通模式) CAN波特率的计算公式:只需要知道BS1和BS2的设置,以及APB1的时钟频率,就可以方便的计算出波特率。比如设置TS1=8、TS2=6和BRP=6,在APB1频率为45Mhz的条件下,即可得到CAN通信的波特率=45
[单片机]
STM8S003定时器1中断服务程序(PWM)中开启定时器2定时计数
STM8S003定时器1中断服务程序(PWM)中开启定时器2定时定时功能,那么在定时器1中断服务程序退出时,立即就产生了定时器2更新中断,但是轴定时器2中断服务程序中(PWM),开启定时器2定时功能,却工作正常,何故? 这是定时器1中断服务程序的开启定时器2的代码: //TIM2_Cmd(DISABLE); TIM2- CR1 &= (uint8_t)(~TIM2_CR1_CEN); //TIM1_Cmd(DISABLE); TIM1- CR1 &= (uint8_t)(~TIM1_CR1_CEN); gsMOTOR.ucPulseCnt = 0;
[单片机]
ATmega88 中断向量
本节描述 ATmega88 的中断处理。更一般的 AVR 中断处理请参见 P11” 复位与中断处理 ” 。 (点击图片放大) Notes: 1. 熔丝位BOOTRST被编程时,MCU复位后程序跳转到Boot Loader。请参见 P241”Boot Loader 支持RWW自编程,ATmega88 与 ATmega168” 2. 当寄存器MCUCR的IVSEL置位时,中断向量转移到Boot区的起始地址。此时各个中断 向量的实际地址为表中地址与Boot 区起始地址之和。 Table29 给出了不同的BOOTRST IVSEL设置条件下的复位和中断向量的位置。如果程序 没有使用中断,中断向量就没有意义。用户可以在此直接写程序。同样
[单片机]