定时器和中断系统(425)

上传人:我** 文档编号:114001819 上传时间:2019-11-10 格式:PPT 页数:37 大小:260.50KB
返回 下载 相关 举报
定时器和中断系统(425)_第1页
第1页 / 共37页
定时器和中断系统(425)_第2页
第2页 / 共37页
定时器和中断系统(425)_第3页
第3页 / 共37页
定时器和中断系统(425)_第4页
第4页 / 共37页
定时器和中断系统(425)_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《定时器和中断系统(425)》由会员分享,可在线阅读,更多相关《定时器和中断系统(425)(37页珍藏版)》请在金锄头文库上搜索。

1、2.5片内外设,C54x 片内外设包含如下几部分:, 外部总线操作; 通用I/O口(引脚); 定时器; 时钟发生器; 主机接口; 同步串行接口; 时分复用串行接口(TDM); 软件可编程等待状态发生器; 可编程存储器组切换模块。 JTAG接口,2.5.1 通用I/O口,通用I/O口有两个:跳转控制输入引脚BIO和外部标志输出引脚XF,跳转控制输入引脚BIO :该引脚可用于监视外部设备的状态 。程序可以根据引脚BIO输入状态有条件地执行一个分支转移。 条件执行指令: XC n, cond,cond ,cond 操作数 n=1或2 功能:1、如果n=1且条件满足,则在该指令之后的一条1-字指令被执

2、行; 2、如果n=2且条件满足,则在该指令之后的一条2-字指令或两条1-字指令被执行。 3、如果条件未满足,则根据n=1或2执行一条或两条NOP指令。,例一: XC 1,ALEQ;如果A的值小于或等于0,则执行1字指令MAR *AR1+以修改AR1 MAR *AR1+ ADD A,DAT100 指令执行前 指令执行后 A=FF FFFF FFFFh A=FF FFFF FFFFh AR1=0031h AR1=0032h 例二: XC 2,BIO;如果引脚BIO为低电平(条件满足),则执行后面的一条双字指令或2条单字指令。,外部标志输出引脚XF 外部标志输出引脚XF可以用于向外部设备发出信号。

3、XF信号可以由软件控制。通过对STl(bit13)中的XF位置1或清0, XF引脚输出为高电平和低电平,亦即CPU向外部发出1和0信号。 执行指令: SSBX XF ;对XF置位 RSBX XF ;对XF复位,2.5.2 定时器,C5402内部有定时器0和定时器1两个定时器。结构一样。 片内硬件定时器是软件可编程的,可用于周期性地产生中断。定时器可以用来产生外部接口电路的采样时钟,如模拟接口。,1. 定时器的结构和特点,定时器主要由3个16位的存储器映像寄存器及相应的逻辑控制电路组成。3个存储器映像寄存器的地址列于下表中。,C54x DSP定时器结构如下图所示。它由两个基本功能块组成,即主定时

4、器模块(PRD和TIM)、预定标器模块(TCR中的TDDR和PSC等)及相应的逻辑控制电路。,主定时器模块(由PRD和TIM组成) 预定标器模块(由TCR的TDDR和PSC位组成)。,* 定时器寄存器(TIM):是减1计数器,可加载周期寄存器PRD的值,并随计数减少。 * 定时器周期寄存器(PRD):PRD用于重载定时器寄存器(TIM)。 定时器控制寄存器(TCR) TCR包含定时器的控制和状态位,控制定时器的工作过程。,定时器主要特点: (1)定时器是一个减计数器。 (2)由16位计数器和4位预分频计数器组成。16位计数器的触发脉冲由预分频计数器提供,预分频计数器的触发脉冲是CPU时钟信号。

5、 (3) 有复位功能。 (4) 可以选择调试断点时定时器的工作方式。,定时器控制寄存器的控制和状态位如下:,2.定时器控制寄存器(TCR),TCR各位的意义描述如下表所示,3定时器工作原理,定时器的工作过程: 定时器的基准工作脉冲由CLKOUT提供,每来一个脉冲,预定标计数器PSC减1,当PSC减至0时,下一个脉冲到来时,PSC产生借位。借位信号分别控制定时计数器TIM减1和重新将TDDR的内容加载到预定标计数器PSC。每次定时计数器TIM 减为0时, PSC的下一个借位信号到来时, TIM也产生借位信号,此借位信号作为中断信号送到CPU和定时器输出引脚TOUT ,同时控制或门3重新用PRD值

6、装载TIM 。,定时器的基本定时周期(定时时间)T可由下式计算: T=TCLKOUT*(TDDR+1)*(PRD+1),4. 定时器的初始化,初始化定时器的步骤如下: (1) 对寄存器TCR中的TSS位置1,停止定时器工作; (2) 装入PRD初值; (3) 重新装入TCR:初始化TDDR、将TSS清0启动定时器、将TRB置1重新装入定时初值(PRD加载到TIM,TDDR加载到PSC)。 使能定时器中断的操作步骤如下(假定INTM=1): (1) 将IFR中的TINT位置1,清除尚未处理完(挂起)的定时器中断。 (2) 将IMR中的TINT位置1,使能定时器中断。 (3) 将ST1中的INTM

7、位清0,开放所有的中断。,例:用TMS320C54x作为信号发生器,输出周期为8ms的方波信号。假定主频f=10MHz。编写出汇编源程序。 解:因为输出方波周期为8ms ,所以定时中断周期T(即定时时间)应为4ms ,每中断1次将XF引脚的电平取反1次便可在XF引脚产生周期为8ms的方波。 (TDDR+1)(PRD+1)=T*f, T*f=4*10-3*10*106=40000 取TDDR+1=16,则PRD+1=40000/16= 2500 则TDDR=15,PRD=2499=9C3H 程序如下: .mmregs .def START .def INTSERVE X .usect “STAC

8、K“,10,定时器的使用,FLAG .set 60h .text START: STM #X+10,SP STM #0120H,PMST;中断向量表首址0100h,定时 ;器中断向量014ch STM #0010H,TCR STM #9C3H,PRD STM #0FEFH,TCR SSBX XF STM #1,FLAG STM #08H,IFR STM #08H,IMR RSBX INTM WAIT: B WAIT,;以下是中断服务程序 INTSERVE: RSBX CPL LD #0,DP BITF FLAG,#1 BC XFOUT,NTC RSBX XF STM #0,FLAG B NEX

9、T XFOUT: SSBX XF STM #1,FLAG NEXT: RETE .end,指令BITF Smem,#lk 功能:如果(Smem)AND lk)=0 则 否则 说明:该指令检测数据存储器操作数Smem的某位或多位,若指定位(一位或多位)为0,状态寄存器ST0中的TC位清0,否则置1。常数lk用于屏蔽待检测位。 要检测Smem中某位或某几位是否为1时,常数lk中与之对应的位应为1,而其他位为0。 例 BITF 60H,#0001H 指令执行前 TC=X DP=0 RAM: (60H)=1205H 7、命令文件的编写 命令文件在片内RAM中定义几个区间,用于存放与主程序和中断服务程序

10、、中断向量表、堆栈相应的段。,指令执行后 TC=1 DP=0 RAM: (60H)=1205H,定时器的使用,用定时器可以实现方波发生器、脉冲频率监测器、周期信号周期监测等功能。,ORM #0010h,TCR0 ;停止定时器0 STM #799,TIM0 STM #799,PRD0 STM #K_TCR0,TCR0 ;启动定时器0中断; K_TCR0=0269H ST #0FFFFh,IFR ;初始化中断 ORM #0008h,IMR RSBX INTM,例如:用定时器设计一个周期为4ms的方波信号发生器。 假设DSP主频为4MHZ(TCLKOUT=250ns), 方波信号周期为4ms,那么定

11、时中断周期应为T=2MS,每中断一次,输出端电平取反一次。 定时中断周期T=TCLKOUT*(TDDR+1)*(PRD+1), 假设TDDR=9,那么PRD=799(031FH).,;K_TCR0设置定时器0控制寄存器的内容 K_TCR0_SOFT .set 0b11 K_TCR0_FREE .set 0b10 K_TCT0_PSC .set 1001b6 K_TCT0_TRB .set 1b5 K_TCT0_TSS .set 0b4 K_TCT0_TDDR .set 1001b0 K_TCR0 .set K_TCR0_SOFT|K_TCR0_FREE|K_TCT0_PSC| K_TCT0_T

12、RB|K_TCT0_TSS|K_TCR0_TDDR ;初始化定时器0,t0_flag .usect “vars“,1 timout: PSHM ST0 PSHM ST1 BITF t0_flag,#1 BC xf_out, NTC SSBX XF ST #0 , t0_flag B next xf_out: RSBX XF ST #1 , t0_flag next : POPM ST1 POPM ST0 RETE ;当前XF输出电平标志位,如果t1_flag=1, ;则XF=1;如果t1_flag=0,则XF=0,.sect “.vector” rst: b _c_int00 nop nop

13、nop space 18*4*16 tint0: b timout,利用DSP的定时器,在XF引脚输出一个频率为1kHz的方波。编程要求:(1)DSP实验板上晶振频率为16MHz,对时钟发生器的PLL编程,使CPU的时钟频率为32MHz;(2)定时器采用中断方式定时,将中断向量表移到从0100h单元开始的程序存储空间。 1、计算定时器的参数TDDR和PRD 2、由中断向量表起始地址0100H求出IPTR值 3、由IPTR、MP/MC、OVLY、DROM、CLKOFF等的值求得PMST的值。 4、由中断向量表起始地址0100H和定时器0的中断号求得定时器0的中断向量地址 5、编写主程序。主程序主

14、要是对DSP初始化,主要包括: (1)设置堆栈和堆栈指针(中断时堆栈用于保存断点地址) (2)PMST寄存器的初始化 (3)定时器的初始化(包括中断初始化) 6、编写中断服务程序 中断服务程序主要作用是:每次定时时间到时,将XF引脚的状态取反。,但DSP没有取反指令,因此,进入中断服务程序后首先要判断XF引脚的当前状态,若为1则修改为0,若为0则修改为1。为此,需要将数据存储器的某个单元作为标志单元,该单元的某个位作为标志位,用此标志位来标志XF引脚的状态。每次进入中断服务程序后通过检测该标志位的值来判断XF引脚当前的状态。,指令BITF Smem,#lk 功能:如果(Smem)AND lk)

15、=0 则 否则 说明:该指令检测数据存储器操作数Smem的某位或多位,若指定位(一位或多位)为0,状态寄存器ST0中的TC位清0,否则置1。常数lk用于屏蔽待检测位。 要检测Smem中某位或某几位是否为1时,常数lk中与之对应的位应为1,而其他位为0。 例 BITF 60H,#0001H 指令执行前 TC=X DP=0 RAM: (60H)=1205H 7、命令文件的编写 命令文件在片内RAM中定义几个区间,用于存放与主程序和中断服务程序、中断向量表、堆栈相应的段。,指令执行后 TC=1 DP=0 RAM: (60H)=1205H,练习解答,5.3 链接命令文件有什么作用?在生成DSP代码过程

16、中何时发挥这些作用? 答:链接命令文件的主要作用有两方面:一是利用MEMORY命令定义目标系统的存储器配置,包括对存储器各部分命名,以及规定它们的起始地址和长度;一是利用SECTIONS命令告诉链接器如何将输入段组合成输出段,以及将输出段放在存储器中的什么位置。这些作用是在链接器对目标文件进行链接的过程中起作用的。,5.10 在文件的链接过程中,需要用到Linker命令文件。请按如下参数设计一个命令文件,其参数为: 中断向量表 起始地址为7600H;长度为8000H; 源程序代码 在中断向量之后; 初始化数据 起始为1F10H;长度为4000H; 未初始化数据 在初始化数据之后。 解:命令文件为: MEMORY PAGE 0: PROM: org=7600h, len=8000h PAGE 1: DRAM: org=1F10h, len=4000h SECTIONS

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号