DSP计数器DSP定时器 计数器原理及设计举例.docx

上传人:b****1 文档编号:10685781 上传时间:2023-05-27 格式:DOCX 页数:15 大小:503.26KB
下载 相关 举报
DSP计数器DSP定时器 计数器原理及设计举例.docx_第1页
第1页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第2页
第2页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第3页
第3页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第4页
第4页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第5页
第5页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第6页
第6页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第7页
第7页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第8页
第8页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第9页
第9页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第10页
第10页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第11页
第11页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第12页
第12页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第13页
第13页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第14页
第14页 / 共15页
DSP计数器DSP定时器 计数器原理及设计举例.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DSP计数器DSP定时器 计数器原理及设计举例.docx

《DSP计数器DSP定时器 计数器原理及设计举例.docx》由会员分享,可在线阅读,更多相关《DSP计数器DSP定时器 计数器原理及设计举例.docx(15页珍藏版)》请在冰点文库上搜索。

DSP计数器DSP定时器 计数器原理及设计举例.docx

DSP计数器DSP定时器计数器原理及设计举例

DSP定时器/计数器原理及设计举例

1、定时器结构

定时器的组成框图如图1所示。

它有3个16位存储器映像寄存器:

TIM、PRD和TCR。

这3个寄存器在数据存储器中的地址及其说明如表1所示。

定时器控制寄存器(TCR)位结构如图2所示,各控制位和状态位的功能如表2所示。

(说明:

图中包括,一个16位的主计数器(TIM)和一个4位预定标计数器(PSC)。

TIM从周期寄存器PRD加载,PSC从周期寄存器TDDR加载。

1.1典型操作顺序:

(1)在每个CLKOUT脉冲后PSC减1,直到它变为0。

(2)在下一个CLKOUT周期,TDDR加载新的除计数值到PSC,并使TIM减1。

(3)以同样方式,PSC和TIM连续进行减操作,直到TIM减为0。

(4)下一个CLKOUT周期,将定时器中断信号(TINT)送到CPU,同时又用另一脉冲送到TOUT引脚,把新定时器计数值从PRD加载到TIM,并使PSC再次减1。

因此,定时器中断的速率为

1.2定时器编程

(1)TIM:

定时器中的当前值。

(2)PRD:

正常情况,当TIM减到0后,PRD中的时间常数自动地加载到TIM。

系统复位(=1)或定时器复位(TRB=1)时,PRD中的时间常数重新加载到TIM。

(3)控制寄存器(TCR)包含的控制位有下列功能:

①控制定时器模式;

②指定定时器预先定标计数器的当前计数值;

③重新加载定时器;

④启动、停止定时器;

⑤定义定时器的分频系数。

(说明:

TDDR(TimerDivide-DownRatio):

复位时,TDDR各位清零;PSC(TimerPrescalerCounter):

PSC可被TCR读取,但不能直接写入)

1.3定时器初始化步骤:

(1)将TCR中的TSS位(停止状态位)置1,关闭定时器。

STM#0010H,TCR

(2)加载PRD。

STM#0100H,PRD;

(3)重新加载TCR(使TDDR初始化;令TSS位为0,以接通CLKOUT;重新加载位TRB位置1,以使TIM减到0后重新加载PRD),启动定时器。

STM#0C20H,TCR;Soft=1,Free=1,定时器遇到断点后继续进行

TINT周期=CLKOUT×(TDDR+1)×(PRD+1)

2、时钟发生器

时钟发生器:

内部振荡器和锁相环电路PLL。

由内部振荡电路或外部时钟源驱动。

3、中断系统

3.1中断结构

3.1.1中断类型:

硬件中断:

外部硬件中断和内部硬件中断

软件中断:

由程序指令引起,INTR、TRAP或RESET。

软件中断不分优先级,硬件中断有优先级。

还可以分为:

1)可屏蔽中断:

用软件可以屏蔽或开放的中断。

通过对中断屏蔽寄存器(IMR)中的相应位;状态寄存器(ST1)中的中断允许控制位INTM;C54x最多可以支持16个用户可屏蔽中断(SINT15~SINT0)

2)非可屏蔽中断:

不能用软件来屏蔽的中断,不受IMR和INTM位的影响。

TMS320C54x对这一类中断总是响应的,并从主程序转移到中断服务程序。

3.1.2中断管理有关的寄存器

1)中断标志寄存器(IFR,InterruptFlagRegister):

16位存储器映像的CPU寄存器;数据存储器空间,地址为0001H;当一个中断出现的时候,DSP收到了一个相应的中断请求(中断挂起),IFR中相应的中断标志位为1。

2)中断屏蔽寄存器(IMR,InterruptMaskRegister)

INTM:

可屏蔽中断的总允许控制位,ST1中第11位。

INTM=0时,开放全部可屏蔽中断;

INTM=1时,禁止所有可屏蔽中断。

IMR:

1:

开放对应位的中断

0:

禁止对应位的中断

3.1.3中断向量

中断源服务程序的入口地址:

图5中断向量地址的形成

3.2中断流程

3.2.1有关指令

(1)INTRK:

该指令可启动TMS320C54x的任何中断,INTM=1。

(2)TRAPK:

TRAP与INTR的不同之处是TRAP中断时,不需要设置INTM位。

(3)RESET:

复位操作,INTM=1,PC=0080H。

3.2.2中断的响应

对于软件中断和非可屏蔽中断,CPU立即响应。

如果是可屏蔽中断,只有满足以下条件才能响应:

(1)优先级别最高。

(2)ST1中的INTM位为0,允许可屏蔽中断。

(3)IMR中的相应位为1,允许可屏蔽中断。

3.2.3执行中断服务程序

响应中断之后,CPU将执行下列操作:

(1)将PC值(即返回地址)压入堆栈。

(2)将中断向量的地址装入PC;将程序引导至中断服务程序ISR。

(3)现场保护,将某些要保护的寄存器和变量压入堆栈。

(4)执行中断服务程序ISR。

(5)恢复现场,以逆序将所保护的寄存器和变量弹出堆栈。

(6)中断返回,从堆栈弹出返回地址加载到PC。

(7)继续执行被中断的程序。

3.3中断过程:

图6中断过程

图7中断操作流程图

3.4汇编源程序如下:

.mmregs

.def_c_int00

STACK.usect"STACK",100h

t0_cout.usect"vars",1;计数器

t0_flag.usect“vars”,1;当前XF输出电平标志。

t0_flag=1,则XF=1;

;t0_flag=0,则XF=0

TVAL.set1639;16401061=1ms因中断程序中计数器初值

;t0_cout=1000,所以定时时间:

1ms1000=1s

TIM0.set0024H;定时器0寄存器地址

PRD0.set0025H

TCR0.set0026H

.data

TIMES.intTVAL;定时器时间常数

.text

**********************************

;中断矢量表程序段

_c_int00

bstart

nop

nop

NMIrete;非屏蔽中断

nop

nop

nop

SINT17.space4*16;各软件中断

SINT18.space4*16

SINT19.space4*16

SINT20.space4*16

SINT21.space4*16

SINT22.space4*16

SINT23.space4*16

SINT24.space4*16

SINT25.space4*16

SINT26.space4*16

SINT27.space4*16

SINT28.space4*16

SINT29.space4*16

SINT30.space4*16

INT0rsbxintm;外中断0中断

rete

nop

nop

INT1rsbxintm;外中断1中断

rete

nop

nop

INT2rsbxintm;外中断2中断

rete

nop

nop

TINT:

bdtimer;定时器中断向量

nop

nop

nop

RINT0:

rete;串口0接收中断

nop

nop

nop

XINT0:

rete;串口0发送中断

nop

nop

nop

SINT6.space4*16;软件中断

SINT7.space4*16;软件中断

INT3:

rete;外中断3中断

nop

nop

nop

HPINT:

rete;主机中断

nop

nop

nop

RINT1:

rete;串口1接收中断

nop

nop

nop

XINT1:

rete;串口1发送中断

nop

nop

nop

******************************************

start:

LD#0,DP

STM#STACK+100h,SP

STM#07FFFh,SWWSR

STM#1020h,PMST

ST#1000,*(t0_cout);计数器设置为1000(1s)

SSBXINTM;关全部中断

LD#TIMES,A

READATIM0;初始化TIM,PRD

READAPRD0

STM#669h,TCR0;初始化TCR0

STM#8,IMR;初始化IMR,使能timer0中断

RSBXINTM;开放全部中断

WAIT:

BWAIT

**************************************

;定时器0中断服务子程序

timer:

ADDM#-1,*(t0_cout);计数器减1

CMPM*(t0_cout),#0;判断是否为0

BCnext,NTC;不是0,退出循环

ST#1000,*(t0_cout);为0,设置计数器,并将XF取反

BITFt0_flag,#1

BCxf_out,NTC

SSBXXF

ST#0,t0_flag

Bnext

xf_out:

RSBXXF

ST#1,t0_flag

next:

RSBXINTM

RETE

.end

5.链接命令文件times.cmd如下:

times.obj

-otimes.out

-mtimes.map

MEMORY

{PAGE0:

RAM1:

origin=1000h,length=500h

PAGE1:

SPRAM1:

origin=0060h,length=20h

SPRAM2:

origin=0100h,length=200h

}

SECTIONS

{

.text:

>RAM1PAGE0

.data:

>RAM1PAGE0

vars:

>SPRAM1PAGE1

STACK:

>SPRAM2PAGE1

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2