实验四 用定时器实现数字振荡器
555多谐震荡器-实验报告

实验题目:用555定时器设计一个时钟信号源,频率为f=1KHz,占空比为60%。
实验报告:一、实验相关信息1、实验日期:2、实验地点:二、实验内容用555定时器设计一个时钟信号源,频率为f=1KHz,占空比为60%。
三、实验目的1、了解555定时器的工作原理和电路结构;2、掌握555定时器的典型应用。
三、实验设备、元器件1、实验仪器:(写清型号)2、实验元器件:四、理论计算(1)555多谐震荡器电路结构图1 多谐振荡器(2)工作波形(3)工作过程简述接通电源后,电容C 被充电,νc 上升,当νc 上升到 Vcc 32时,触发器被复位,同时放电T 导通,此时 νo 为低电平,电容C 通过R 2 和T 放电,使νc 下降,当νc 下降到Vcc 31时,触发器又被复位,νo 为高电平。
电容C 放电所需时间为C R C R t PL 227.02ln ≈= (1)当电容C 放电结束时,T 截止,Vcc 将通过R 1、R 2向电容C 充电,νc 由Vcc 31上升到Vcc 32所需时间为C R R C R R t PH )(7.02ln )(2121+≈+= (2)当νc 上升到Vcc 32时,触发器由发生翻转,如此周而服始,在输出端就得到一个周期性的方波,其频率为C R R t t f PH PL )2(43.1121+≈+=(3) %100)2((%)2121X R R R R t t t q PH PL PH++=+= (4) (4)占空比可调电路结构对于图1电路结构占空比固定不变,要得到占空比可调的周期方波,对其电路改进,如图2所示。
由(4)式可知,占空比始终大于50%,要得到占空比小于50%的方波,只要在输出端加一个反向器即可。
图2 占空比可调的方波发生器五、元件参数计算与选择已知占空比为60%,由(4)式得R 2=2R 1根据(6)式,若电容C 取nF 51 ,Ω===+-K fC R R 6.2810*05.0*10*143.143.126321Ω=K R 7.51 Ω=5.112R加上可调电阻,其实际参数为Ω=K R 1.51 Ω=112R Ω=K R w 1六、计算机仿真(1) 电路结构(2)波形图七、硬件实现电路(1)实际电路结构(2)波形测试用示波器观察和测试V0端的输出波形,读取周期值、正脉冲宽度,计算出周期方波信号的频率和占空比。
DSP 用定时器实现数字振荡器程序详解1

汇编源程序====================================================================== ======*/;/* Copyright (C) 2004 YINXING TECHNOLOGY CO., LTD */;/* All Rights Reserved. */ ;/* ----------------------------------------------------------------------------*/;/*======================================================================.title "for test INT service program ...(25 us) ".mmregs 定义存储器影响寄存器,这样就可以用AR0,PMST等助记符替换实际的存储器地址.global_c_int00,_tint,vector标明一个或多个全局符号OFF_INTIMER .set 04Ch ; TIMER的向量初始化入口地址VECTOR+OFF_INTIMERINIT_A .set 079bch ; A/2=0.9510498INIT_B .set 0c000h ; B/2=-0.5INIT_C .set 013c7h ; C/2=0.1545105.bss y0,1 ;为结果y0分配一个存储单元.bss y1,1.bss y2,1.bss temp,1.bss AA,1.bss BB,1.bss CC,1.text ;定义可可执行代码段_c_int00:ld #0,dp;设置DP页指针ssbx intm ; 关闭所有中断st #1fffh,spld #vector, a ; 读出中断向量地址and #0FF80h, a ;保留高9位(IPTR:中断向量指针andm #007Fh, pmst ;保留pmst的低7位or pmst, astlm a, pmst ; 设置IPTRstm #10h,TCR ; 初始化定时器TCR为定时器控制寄存器stm #2499,PRD ; f=100M/(2499+1)=40kHz PRD 为计数器周期寄存器stm #20h,TCR ; 重新装入TIM和PSC,然后启动定时器ldm IMR,a ; 重新返回中断屏蔽寄存器or #08h,a ; 启动定时器中断stlm a,IMR ; 设置中断屏蔽寄存器ld #temp,dp ; 设置DP页指针ssbx FRCT ; prepare for fraction mpy FRCT为ST1中的小数方式位;(Ssbx 状态寄存器复位,即对状态寄存器ST0,ST1特定位置1)st #INIT_A,AA ; init AA,BB,CC 即初始化AA BB CCst #INIT_B,BB ;将常数B装入变量BBst #INIT_C,CC ;pshd CC ;将变量CC压入堆栈popd y2 ; init y2,y2=CCld AA,T ; T=AA装载AA到T寄存器mpy y2,a ; y2*AA放入a中sth a,y1 ; y2*AA -> y1(将A寄存器的高十六位放入变量y1)stm #0h,TCR ; 定时器复位noprsbx intm ;复位所有的中断(状态寄存器复位STN (SBIT)=0)again:nopb againnopnopnopnopnopnop;-------------------------------------------------------------; interrupt for INT_TIMER ! 中断服务程序;-------------------------------------------------------------_tint:ld#BB,DPld BB,T ; T=BBmpy y2,a ; a=y2*BBltd y1 ; T=y1,y2=y1mac AA,a ; a=a+y1*AAsth a,1,y1 ; new cos data -> y1sth a,1,y0 ; new cos data -> y0nop ; set breakpoint in CCS !!!int1_end:noprete.end连接命令文件/*====================================================================== ======*//* Copyright (C) 2004 YINXING TECHNOLOGY CO., LTD *//* All Rights Reserved. */ /* ----------------------------------------------------------------------------*//*====================================================================== ======*/MEMORY;描述系统的硬件资源,用来定义用户设计的系统中所包含的的各种形式的存储器{PAGE 1:INT_D : ORIGIN=80h, LENGTH=1F80hPAGE 0:EXT_P : ORIGIN=2000h, LENGTH=2000h}SECTIONS ;描述段如何定位到家当的硬件资源上,将输出段定位到所定义的存储器中{.text : > EXT_P PAGE 0.int_table : > (EXT_P ALIGN (128) PAGE (0)).data : > INT_D PAGE 1}中断向量表:;/*====================================================================== ======*/;/* Copyright (C) 2004 YINXING TECHNOLOGY CO., LTD;/* All Rights Reserved. */ ;/* ----------------------------------------------------------------------------*/;/*====================================================================== ======*/.mmregs ;.ref _ret ;.ref 在当前段中使用,在其他段中定义.ref _c_int00.ref _tint.global vector.sect ".int_table" ;.建立包含代码和数据的定义段;--------------------------------------------------------------------; interrupte vector table !;--------------------------------------------------------------------vector:rs b _c_int00 ;复位nopnopnmi b __ret ;非屏蔽中断nopnopsint17 b __ret ;软件中断sint17nopnopsint18 b __retnopnopsint19 b __retnopnopsint20 b __ret.word 0,0sint21 b __ret.word 0,0sint22 .word 01000h.word 0,0,0sint23 .word 0ff80h /*TMS320C54x中,中断向量地址由PMST寄存器中的9 .word 0,0,0 位向量地址指针IPTR和左移2位后的中断向量序号组sint24 .word 01000h 成,复位时,IPTR全为1,因此中断向量地址为FF80H.*/ .word 0,0,0.word 0,0,0sint26 .word 01000h ;word用来设置一个或多个16位带符号整型常数.word 0,0,0sint27 .word 0ff80h.word 0,0,0sint28 .word 01000h.word 0,0,0sint29 .word 0ff80h.word 0,0,0sint30 .word 01000h.word 0,0,0int0 b __ret ;外部中断0,软中断0nopnopint1 b __ret ;外部中断1,软中断1nopnopint2 b __ret ;外部中断2,软中断2nopnoptint b _tint ;定时中断,软中断3nopnopbrint0 b __ret ;McBSP(串行口)0接收中断nopnopbxint0 b __ret ;McBSP(串行口)0发送中断nopnoptrint b __retnopnopdmac1 b __ret ;McBSP2发送中断(默认)/DMA通道中断,软中断7 nopnopint3 b __ret ;外部中断3,软中断8nopnophpint b __ret ;HPI中断,软中断9nopnopq26 .word 0ff80h.word 0,0,0.word 0,0,0dmac4 b __retnopnopdmac5 b __retnopnopq30 .word 0ff80h.word 0,0,0q31 .word 01000h.word 0,0,0;--------------------------------------------------------------------------; end of interrupte vector table !;-------------------------------------------------------------------------__ret rete ;开中断,从中断快速返回说明:中断向量表是用来装载不同类型的中断服务程序的入口!。
振荡、分频、译码、计数、显示电路

综合性、设计性实验报告姓名姜泽政学号200908001217专业计算机科学与技术班级2009级02 班实验课程名称数字逻辑指导教师及职称李文讲师开课学期2011 至2012 学年上学期上课时间2011年12 月12 日湖南科技学院教务处编印一、实验要求及方案设计实验名称:振荡、分频、计数、译码、显示电路实验时间:2011-12-12小组合作:是○否●小组成员:无1、实验目的:1)学会使用555定时器构成多谐振荡器的方法及电路测试。
2)巩固集成触发器的逻辑功能,学会应用触发器做分频电路。
3)学会任意进制计数器设计方法,提高电子电路综合分析和设计能力。
4)学会使用显示译码器将计数器输出的8421BCD码转换成七段显示码。
5)掌握七段显示器的显示原理及电路连接。
2、实验设备及材料:(注意:请自行设计选择触发器、计数器、显示译码器的类型、电阻电容)硬件设备:数字逻辑实验箱实验耗材:555定时器、触发器J—K触发器集成芯片两片、计数器74LS163(或者74LS161)一片、显示译码器74LS48一片、七段显示数码管、电阻两个、电容两个、导线若干。
实验工具:数字万用表、数字示波器3、实验内容:使用常用的中规模集成电路设计一个以1秒钟为间隔循环显示0-9数字的电子电路,该电路应包括振荡模块、分频模块、计数模块、译码模块、显示模块,用实物独立组装、调试。
4、实验方法步骤及注意事项:(注意:此部分为本实验的关键部分,请自行填写,不得雷同!)① 实验步骤(请参考实验指导书总结归纳之后再认真填写)1,划分好模块,设计各模块电路。
2,按照各模块电路用实物独立组装、调试,调试过程中遇到的问题,找出原因,分析解决。
3,用示波器同时观察多谐振荡器的输出波形与分频器的输出波形,是否起到四分频的作用。
4,先将计数模块按照高低位接四个发光二级管,观察灯熄灭情况,是否符合二进制0—9从0000到1001的变换情况。
5,观察显示器的记数结果,是否为期望实验结果,如果不是检查电路,各引脚是否正确接线。
用定时器实现数字振荡器

山西 电子技术
应 用 实践
用 定 时 器 实现 数 字振 荡器
李 方 健
’
( 重庆 电子 工程职 业学院 , 重庆 4 1 3 ) 0 3 1
摘
要: 简要介绍 了利用数 字振 荡器产生正弦信号的方法。常规的方法是将 某个频率的正弦/ 弦值预 先计 余
算 出来后制成一个表 , S D P工作 时仅作查表运 算即可。本文利用定时器产生一个 2 H 的正 弦信号 , kz 定时器被设置
成每 5 产生一次 中断( O 等效于采样速率 为 2 k z , 用该 中断, 中断服 务程序 中用叠代算 法计算 出一个 s 0 H )利 在 i n 值, 并利 用C S的 图形显示功 能查看波形。中断 矢量表 用汇编语言编辑 , C 主程序和中断服务程序使 用 C语 言编写。 关键词 : 时器 ; 定 中断; 字振 荡器 ; S 数 DP
( =A ( 一1 +B (2 ) ”) y ) y ,—2
结论 : ” 在 >2以后 , ( ) Y , 能用 Y( 一1 和 Y ”一2 算 z ) ( )
出 , 是 一个 递 归 的差 分 方 程 。 因此 只 要 已知 系 统 输 出正 弦 这 信号 角 频 率 和系 统 采样 周 期 了, 可 以得 到输 出 (z的 、 就 ,) 差分 方 程 。 系 统 只 需 要 每 隔 r 秒 ( 过 定 时 器 设 置 , 隔 , 通 每 5 中断 一次 ) 0 计算 一 次 差 分 方 程 , 可 以得 到 当前 输 出 正 就
Ti rc n r l e itr me o t g s e o r
定时器启动时 ,R P D的值装 入 TI 作为初始值 , M 然后 在
用定时器实现数字振荡器

用定时器实现数字振荡器
李方健
【期刊名称】《山西电子技术》
【年(卷),期】2008(0)5
【摘要】简要介绍了利用数字振荡器产生正弦信号的方法.常规的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP工作时仅作查表运算即可.本文利用定时器产生一个2kHz的正弦信号,定时器被设置成每50μS产生一次中断(等效于采样速率为20kHz),利用该中断,在中断服务程序中用叠代算法计算出一个sin 值,并利用CCS的图形显示功能查看波形.中断矢量表用汇编语言编辑,主程序和中断服务程序使用C语言编写.
【总页数】4页(P24-27)
【作者】李方健
【作者单位】重庆电子工程职业学院,重庆,401331
【正文语种】中文
【中图分类】TN752
【相关文献】
1.数字控制振荡器(NCO)的FPGA实现 [J], 李飞
2.一种基于DSP的数字振荡器的实现方式 [J], 李方健;曾浩
3.基于DSP的数字振荡器的设计与实现 [J], 黄福莹;陈华;徐金隆
4.测试台中自制数字式定时器的实现与应用 [J], 李桂新;蒋敏玉
5.基于FPGA的数字控制振荡器的设计与实现 [J], 彭兆军
因版权原因,仅展示原文概要,查看原文内容请购买。
数字振荡器

其中,A=2cosω T,B=-1,C=sinω T。设初始条件为 0,求出上式的反变换位得: y[k]=Ay[k-1]+By[k-2]+Cx[k-1]
这是一个二阶差分方程,其单位冲击相应即为 sinkω T。利用单位冲击函数 x[k-1]的性质,即仅当 时 k=1 时,x[k-1]=1,代入上式得:
寄存器 名称
用途
地址
0024h TIM
定时器寄存器,每计数一次,自动减 1
0025h PRD
定时器周期寄存器,当 TIM 减为 0 后,CPU 自动将 PRD 的值装入
TIM
0026h TCR
定时器控制寄存器
(3) C54X 中断的使用 在 C54X 中用户可以通过中断屏蔽寄存器来决定开放或关闭一个中断请求。寄存器的各个比特位的定义 如表:
实验地点(实验室)
实验日期
年月日
成绩
指导
教师
名称
指导教师
年月日
(2) C54X 的定时器操作 C54X 的片内定时器利用 CLKOUT 时钟计数,用户使用三个寄存器(TIM,PRD,TCR)来
控制定时器,表中列出了定时器控制各个寄存器的各比特位的具体定义。VC5402 的另一个定时器(定时 器 1)的控制寄存器分别为:0x30(TIM1),0x31(PRD1),0x32(TCR1)。
15、14 13
12
11
10
9
8
7
Resvd
DMAC5 DMAC4 BXINT1 BXINT1 HPINT INT3
TINT
or
or
or
DMAC3 DMAC2
DMAC1
6
数字振荡器

一、实验原理
本实验采用递归的差分方程方法计算正弦和余弦值,其数字振荡器的实现原理与实验5(c )相同。
其实现公式为:
y[n]=2cos α×y[n-1]-y[n-2]
式中: 02s
f f πα⋅=为角度的计算步长,f 0是正弦信号的频率,f s 是D/A 转换速率。
利用上面的递推公式计算正弦或余弦值y[n]需要已知cos α和正弦/余弦的前两个初始值y[0]和y[1]。
在产生周期性的正弦信号时,必须以一定的D/A 转换速率f s 将各个样点值送往D/A 转换器。
正弦信号每个周期的样点数N 由正弦信号的频率f 0及D/A 转换速率f s 决定,即
s
0f N f =
例如,当利用递归的差分方程产生正弦信号时,若设定D/A 转换速率f s =16000Hz ,则产生f 0=1000Hz 的正弦波信号时,存在
s 016000161000
f N f === ,此时 02220.392716s f f N πππα⋅====
首先在程序中计算出cos α及初始值y[0]和y[1]。
cos α=0.9238795 ;
y[0]=sin0=0 ;
y[1]=sin α=0.382683 ;
n ≧2以后的y[n]的值,都可以通过前面的递推公式递归计算得出。
图1 实验运行结果。
【实验】555定时器构成的多谐振荡器

555定时器构成的多谐振荡器555定时器是一种模拟电路和数字电路相结合的中规模集成器件,它性能优良,适用范围很广,外部加接少量的阻容元件可以很方便地组成单稳态触发器和多谐振荡器,以及不需外接元件就可组成施密特触发器。
因此集成555定时被广泛应用于脉冲波形的产生与变换、测量与控制等方面。
本实验根据555定时器的功能强以及其适用范围广的特点,设计实验研究它的内部特性和简单应用。
一、原理1、555定时器内部结构555定时器是一种模拟电路和数字电路相结合的中规模集成电路,其内部结构如图(A)及管脚排列如图(B)所示。
它由分压器、比较器、基本R--S触发器和放电三极管等部分组成。
分压器由三个5的等值电阻串联而成。
分压器为比较器、提供参考电压,比较器的参考电压为23ccV,加在同相输入端,比较器的参考电压为ccV,加在反相输入端。
比较器由两个结构相同的集成运放、组成。
高电平触发信号加在的反相输入端,与同相输入端的参考电压比较后,其结果作为基本R--S触发器端的输入信号;低电平触发信号加在的同相输入端,与反相输入端的参考电压比较后,其结果作为基本R—S触发器端的输入信号。
基本R--S触发器的输出状态受比较器、的输出端控制。
2、多谐振荡器工作原理由555定时器组成的多谐振荡器如图(C)所示,其中R1、R2和电容C为外接元件。
其工作波如图(D)所示。
设电容的初始电压c U =0,t =0时接通电源,由于电容电压不能突变,所以高、低触发端TH V =TL V =0<VCC,比较器A1输出为高电平,A2输出为低电平,即,(1表示高电位,0表示低电位),触发器置1,定时器输出此时,定时器内部放电三极管截止,电源cc V 经,2R 向电容C充电,逐渐升高。
当上升到13cc V 时,输出由0翻转为1,这时,触发顺保持状态不变。
所以0<t<期间,定时器输出为高电平1。
时刻,上升到23cc V ,比较器的输出由1变为0,这时,,触发器复0,定时器输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四用定时器实现数字振荡器1.实验目的在数字信号处理中,会经常使用到正弦/余弦信号。
通常的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP工作时仅作查表运算即可。
在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。
本实验除了学习数字振荡器的DSP实现原理外,同时还学习C54X定时器使用以及中断服务程序编写。
另外,在本实验中我们将使用汇编语言和C语言分别完成源程序的编写。
2.实验要求本实验利用定时器产生一个2kHz的正弦信号。
定时器被设置成每25uS产生一次中断(等效于采样速率为40K)。
利用该中断,在中断服务程序中用叠代算法计算出一个SIN值,并利用CCS的图形显示功能查看波形。
3.实验原理数字振荡器原理设一个传递函数为正弦序列sinkωT,其z变换为H(z)=EMBED Equation.3EMBED Equation.3v儭丌a=2cosÉ, B=-1, C=sinÉ其中,A=2cosωT, B=-1, C=sinωT。
设初始条件为0,求出上式的反Z变换得:y[k]=Ay[k-1]+By[k-2]+Cx[k-1]这是一个二阶差分方程,其单位冲击响应即为sinkωT。
利用单位冲击函数x[k-1]的性质,即仅当k=1时,x[k-1]=1,代入上式得:k=0 y[0] = Ay[-1] + By[-2] + 0 = 0k=1 y[1] = Ay[0] + By[-2] + c = ck=2 y[2] = Ay[1] + By[0] + 0 = Ay[1]k=3 y[3] = Ay[2] + By[1]...k=n y[n]= Ay[n-1] + By[n-2]在k>2以后,y[k]能用y[k-1]和y[k-2]算出,这是一个递归的差分方程。
根据上面的说明,我们可以开始数字振荡器的设计。
设该振荡器的频率为2kHz,采样率为40kHz (通过定时器设置,每隔25us中断一次,即产生一个y[n]),则递归的差分方程系数为:A=2cosωT=2cos (2 x PI x 2000 / 40000)=2 x 0.95105652 x4 1e6f0B=-1C=sinωT=sin (2 x PI x 2000 / 40000)=0.30901699 x4 =9e4b为了便于定点DSP处理,我们将所有的系数除以2,然后用16位定点格式表示为:a f378 c 4f25这便是本实验中产生2KHz正弦信号的三个系数。
在本实验中,主程序在初始化时先计算出y[1]和y[2],然后开放定时器中断。
以后每次进入定时器中断服务程序时,利用前面的y[1]和y[2],计算出新的有y[0],通过CCS提供的图形显示工具,我们将在图形窗口中看到一个正弦信号波形。
下面是初始化和中断服务程序代码片段:初始化y[1]和y[2]:ssbx FRCT ;置FRCT=1,准备进行小数乘法运算st #INIT_A,AA ;将常数A装入变量AAst #INIT_B,BB ;将常数B装入变量BBst #INIT_C,CC ;将常数C装入变量CCpshd CC ;将变量CC压入堆栈popd y2 ;初始化y2=CCld AA, T ;装AA到T寄存器mpy y2,a ;y2乘系数A,结果放入A寄存器sth a,y1 ;将A寄存器的高16位存入变量Y1中断服务程序片段:ld BB,T ;将系数B装入T寄存器mpy y2,a ;y2乘系数B,结果放入A寄存器ltd y1 ;将y1装入T寄存器,同时复制到y2mac AA,a ;完成新正弦数据的计算,a寄存器中为;y1*AA+y2*BBsth a,1,y1 ;将新数据存入y1,因所有系数都除过2,所以在保;存结果时转移一位,恢复数据正常大小。
sth a,1,y0 ;将新正弦数据存入y0(2)C54X的定时器操作C54X的片内定时器利用CLKOUT时钟计数,用户使用三个寄存器(TIM,PRD,TCR)来控制定时器,参见表4-1。
在表4-2中列出了定时器控制寄存器的各个比特位的具体定义。
‘VC5402的另一个定时器(定时器1)的控制寄存器分别为:0x30(TIM1),0x31(PRD1),0x32(TCR1)。
表4-1 ‘VC5402定时器0的相关寄存器寄存器地址名称用途0024hTIM定时器寄存器,每计数一次自动减10025hPRD定时器周期寄存器,当TIM减为0后,CPU自动将PRD的值装入TIM0026hTCR定时器控制寄存器表4-2 定时器控制寄存器(TCR)bit概要比特名称功能15-12 Ý余甠û诺凶攺丰11 Soft å诔歹牍伎丱0M位鄈呿伨痥亳冚定寶敨嘨坿伨痿丟眃賕诶斄皶爁怂」Soft=0 S忛轥凿丟眃賕诶攌レ寶敨囋穳卜偢毥嵜伂」Soft=1 S御議敨嚫裏儺丰15-12 保留读出时为011 Soft 该比特位与10位配合使用以决定定时器在使用仿真调试时的状态。
Soft=0 当进入仿真调试时,定时器立即停止工作。
Soft=1 当计数器被减为0后,停止工作。
10 Free 该比特位与11位配合使用以决定定时器在使用仿真调试时的状态。
Free=0 根据11比特位决定定时器状态。
Free=1 忽略11比特位,定时器不受影响。
9-6 PSC 定时器预置计数器。
当PSC减为0后,CPU自动将TDDR装入,然后TIM开始减1。
5 TRB 定时器复位。
当TRB=1时,CPU将PRD寄存器的值装入TIM寄存器,将TDDR的值装入PSC4 TSS 定时器停止状态。
当系统复位时,TSS被清除,定时器立刻开始工作。
TSS=0 表示启动定时器TSS=1 表示停止定时器0-3 TDDR 定时器扩展周期。
当PSC减到0后,CPU自动将TDDR的值装入PSC,然后TIM减1。
所以整个定时器的周期寄存器可以有20个比特(PRD+TDDR)。
从上面的介绍可以看到定时器实际上可以有20个比特的周期寄存器。
它对CLKOUT信号计数,先将PSC减1,直到PSC为0,然后用TDDR重新装入PSC,同时将TIM减1,直到TIM减为0。
这时CPU 发出TINT中断,同时在TOUT引脚输出一个脉冲信号,脉冲宽度为CLKOUT一致。
然后用PRD重新装入TIM,重复下去直到系统或定时器复位。
因而定时器中断的频率由下面的公式决定:TINT的频率=EMBED Equation.3EMBED Equation.3v儭乴ch蠺祃LKOUT其中tc表示CLKOUT的周期。
定时器当前的值可以通过读取TIM寄存器和TCR寄存器的PSC比特位得到。
下面是本实验中初始化定时器的程序片段:stm #10h,TCR ;停止定时器stm #2499,PRD ;设置PRD寄存器值为2499,TINT中断频率为;Foutclk /(2499+1)= 100MHz/2500 = 40 KHzstm #20h,TCR ;重新装入TIM和PSC,然后启动定时器(3)C54X中断的使用在C54X中用户可以通过中断屏蔽寄存器IMR来决定开放或关闭一个中断请求。
图4-1给出了C5402的IMR寄存器的各个比特位的定义。
þ嘴-1图4-1 ‘C5402的IMR寄存器其中,HPINT表示HPI接口中断,INT3-INT0为外部引脚产生的中断,TXINT和TRINT为TDM串口的发送和接收中断,BXINT0和BRINT0为BSP串口的发送和接收中断,TINT0为定时器0中断。
在中断屏蔽寄存器IMR中,1表示允许CPU响应对应的中断,0表示禁止。
当然要CPU响应中断,ST1寄存器中的INTM还应该为0(允许所有的中断)。
当DSP响应中断时,PC指针指向中断向量表中对应中断的地址,进入中断服务子程序。
中断向量表是C54X存放中断服务程序的一段内存区域,大小为80H。
在中断向量表中,每一个中断占用4个字的空间,一般情况是将一条跳转或延时跳转指令存放于此。
当然,如果中断服务程序很短(小于或等于4个字),可以直接放入该向量表。
中断向量表的位置可以通过修改基地址来改变,其基地址由PMST 寄存器中的IPTR(15-7 bits)决定。
表4-3给出了中断向量表的各中断的偏移说明。
例如C54x复位后其IPTR全为1,所以中断向量表起始位置在0FF80H,因而复位后程序从0FF80H开始运行。
本实验的初始化程序读取中断向量表的启始地址,然后设置PMST的高9位,以便DSP能正确响应中断,代码如下:ld #0,dp ;设置DP页指针ssbx intm ;关闭所有中断ld #vector, a ;读出中断向量(地址vector在中断向量表程序中定义)and #0FF80h, a ;保留高9位(IPTR)andm #007Fh, pmst ;保留PMST的低7位or pmst, a ;stlm a, pmst ;设置PMST(其中包括IPTR)h蠴-3 54X表4-3 54X的中断向量表4.实验内容本实验需要使用C54X汇编语言或C语言实现数字振荡器,并通过CCS提供的图形显示窗口观察输出信号波形以及频谱。
实验分下面几步完成:(1). 根据确定数字振荡器的频率,确定系数。
数字振荡器系数的确定在前面已经说明,这里不再赘述。
(2). 启动CCS,新建工程文件,如文件名为sinewave.mak。
选择Project菜单中的Add File to Project 选项,将汇编源程序exer3.asm、vec_table.asm和连接定位sinewave.cmd文件依次添加到工程文件中。
注意,你可以在添加文件对话框中选择显示不同的文件类型来加快文件选择速度。
你也可以使用鼠标右键单击工程文件名(如sinewave.mak)并选择Add Files项来添加需要的文件。
其中,exer3.asm 包括初始化代码和中断服务程序,而vec_talbe.asm包含中断向量表。
(3). 选择Project菜单中的Options选项,或使用鼠标右键单击工程文件名(如sinewave.mak)并选择Options项来修改或添加编译、连接中使用的参数。
例如,选择Assembler窗口,选择“Enable Symbolic Debug Infomation”以便使用汇编源代码级调试(你可以在汇编源程序设置断点等等)。
选择Linker 窗口,在“Output Filename”栏中写入输出OUT文件的名字,如sine.out,你还可以设置生成的MAP 文件名。
(4). 完成编译、连接,正确生成OUT文件。
然后使用File菜单的“Load Program”选项,将生成的OUT文件(如sine.out)装入DSP的片内存储器。