DSP 的定时器和外中断实验报告
dsp实验:定时器
实验三:定时器一、实验原理1.定时器的结构2.定时器中断周期3.实验功能:通过XF管脚控制LED闪动以一定规律进行闪烁。
二、硬件资源及在片外围电路硬件资源:DSP芯片、CPU、LED、蜂鸣器、电阻、电容等在片外围电路:时钟发生器、定时器、通用输入/输出口等三、参数设置CPU工作时钟:*clkmd =0x21b3;0010000110110011CLKOUT=18M中断频率:9 /* PRSC 4bit*/18M/9000=2KHZ 四、实验流程图五、程序#include <stdio.h>#include <csl.h>#include <csl_irq.h>#include <csl_timer.h>#include <csl_chiphal.h>extern void VECSTART(void);#define TIMER_CTRL TIMER_TCR_RMK(\TIMER_TCR_IDLEEN_DEFAULT, /* IDLEEN == 0 */ \TIMER_TCR_FUNC_OF(0), /* FUNC == 0 */ \TIMER_TCR_TLB_RESET, /* TLB == 1 */ \TIMER_TCR_SOFT_BRKPTNOW, /* SOFT == 0 */ \TIMER_TCR_FREE_WITHSOFT, /* FREE == 0 */ \TIMER_TCR_PWID_OF(0), /* PWID == 0 */ \TIMER_TCR_ARB_RESET, /* ARB == 1 */ \TIMER_TCR_TSS_START, /* TSS== 0 */ \TIMER_TCR_CP_PULSE, /* CP== 0 */ \TIMER_TCR_POLAR_LOW, /* POLAR == 0 */ \TIMER_TCR_DATOUT_0 /* DATOUT == 0 */ \)/* Create a TIMER configuration structure that can be passed *//* to TIMER_config CSL function for initialization of Timer *//* control registers. */ TIMER_Config timCfg0 = {TIMER_CTRL, /* TCR0 */// 0x3400u, /* PRD0 0x3400=13312*/ 14400, /* PRD0 16bit0x3400=144000=14400*10*/9 /* PRSC 4bit*/}; //中断频率=Fcpu/(9000*1)=144MHz/13312=1kHzUint16 eventId0;/* Create a TIMER_Handle object for use with TIMER_open */ TIMER_Handle mhTimer0;volatile Uint16 timer0_cnt = 0;/* Function/ISR prototypes */interrupt void timer0Isr(void);int old_intm;Uint16 tim_val;Uint16 xfchange = 0;Uint16 ms,f;void main(void){/* Initialize CSL library - This is REQUIRED !!! *//*CLS库的初始化,这是必需的*/CSL_init();/* Set IVPH/IVPD to start of interrupt vector table *//*修改寄存器IVPH,IVPD,重新定义中断向量表*/IRQ_setVecs((Uint32)(&VECSTART));/* Temporarily disable all maskable interrupts *//*禁止所有可屏蔽的中断源*/old_intm = IRQ_globalDisable();/* Open Timer 0, set registers to power on defaults *//*打开定时器0,设置其为上电的的默认值,并返回其句柄*/ mhTimer0 = TIMER_open(TIMER_DEV0, TIMER_OPEN_RESET);/* Get Event Id associated with Timer 0, for use with *//* CSL interrupt enable functions. *//*获取定时器0的中断ID号*/eventId0 = TIMER_getEventId(mhTimer0);/* Clear any pending Timer interrupts *//*清除定时器0的中断状态位*/IRQ_clear(eventId0);/* Place interrupt service routine address at *//* associated vector location *//*为定时器0设置中断服务程序*/IRQ_plug(eventId0,&timer0Isr);/* Write configuration structure values to Timer control regs */ /*设置定时器0的控制与周期寄存器*/TIMER_config(mhTimer0, &timCfg0);/* Enable Timer interrupt *//*使能定时器的中断*/IRQ_enable(eventId0);/* Enable all maskable interrupts *//*设置寄存器ST1的INTM位,使能所有的中断*/IRQ_globalEnable();/* Start Timer *//*启动定时器0*/TIMER_start(mhTimer0);ms=0;for(;;){// Wait for at least 10 timer periods//等待10个定时周期if(xfchange == 0){//点亮XF的LEDCHIP_FSET(ST1_55,XF,1);}else{//关掉XF的LEDCHIP_FSET(ST1_55,XF,0);}}/* Restore old value of INTM *//*恢复INTM旧的值*/IRQ_globalRestore(old_intm);/* We are through with timer, so close it */ /*关掉定时器0*/TIMER_close(mhTimer0);}/*定时器0的中断程序*/interrupt void timer0Isr(void){ms++;++timer0_cnt;if(timer0_cnt == 500){xfchange = 1;}if(timer0_cnt == 1000){timer0_cnt = 0;xfchange = 0;}}。
[整理]DSP定时器实验.
-------------
}
interrupt void ISRTimer2(void)
{
CpuTimer2.InterruptCount++;
if(Led_Flag==1)
{ LED1_ON;
*LED3=0;
Led_Flag=0;}
else
{LED1_OFF;
*LED3=1;
(2)用 C 语言编程对频率为 400Hz、幅度为 1V 的三角波;利用通道 1=〉ADCINA4 口实现不同采样频率(8KHz、 44KHz 、 96KHz )下的 ADC 转换,采样长度 1024 点。
四、 小结与体会
通过本次实验,我学习了将 TMS320F2812 片上外设 AD,也了解了片上 AD 的 使用及通道的选择,学会了如何利用片上 AD 进行数据采集。
acc=0; y0=0; for (i=0;i<n;i++) {
if(i+j>=m) break;
else {
y0=(long)(h[i]*x[j+i]); acc=acc+y0; } } *y++=(short)(acc>>s); } 3、波形
噪声正弦 300Hz 1v 通道 0 滤波前时域
-------------
一、 实验目的
1、掌握数字滤波器的设计过程 2、了解 FIR 的原理和特性 3、熟悉设计 FIR 数字滤波器的原理和方法
二、实验原理
1、有限冲击响应数字滤波器(FIR)的基础理论: FIR 数字滤波器是一种非递归系统,其冲激响应 h(n)是有限长序列其差分
方程表达式为:
DSP中断实验报告lecture5-2011_478507120
实验事件管理器模块(EV)中通用定时器中断操作一、实验目的:1、熟悉事件管理器模块(EV)中通用定时器计时及比较的操作;2、熟悉中断产生过程及中断的配置操作。
二、实验原理及说明:本实验是让XF引脚相连的LED灯0.5s内亮灭一次,采用定时器计时产生中断的方法实现。
实验中外部时钟输入为30MHz,DSP内部锁相环半分频为15MHz,通用定时器1预分频因子为128,所以计算出延迟0.5s周期寄存器的值约为E4E0h(定时器的周期数等于周期寄存器的值加1)。
三、实验内容及步骤:1、新建一个名为interrupt1的工程并向其中添加相应的文件,并做好相应的配置。
2、在工程中新建名为interrupt1.c的源文件。
//step0: 输入所需的头文件和定义用户自己的函数#include "DSP28_Device.h"interrupt void ISRTimer1(void); //定义定时器1周期中断服务//程序void main(void){//step1: 初始化系统控制寄存器,主要内容包括PLL,WatchDog,系统时钟和外设时钟设置;InitSysCtrl(); // 调用DSP28_SysCtrl.c文件中的函数,也就是//说在DSP28_SysCtrl.c文件中完成系统初始化;//step2:初始化所需的通用IO口;InitGpio();// 调用DSP28_Gpio.c文件中的函数,也就是说在//DSP28_Gpio.c 文件中完成通用IO口的配置;//step3: 初始化系统中断//关闭CPU中断DINT;IER = 0x0000;IFR = 0x0000;//初始化PIE控制寄存器;InitPieCtrl(); //在DSP28_PieCtrl.c文件中要打开所需外设中断;//初始化PIE中断矢量表,设置成默认状态;InitPieVectTable(); //在DSP28_PieVect.c文件中完成;//step4:初始化所需的外设(包括事件管理器EV模块、ADC模块、CAN //总线模块等)InitPeripherals(); //在DSP28_InitPeripherals.c文件中完成//step5: 使用用户所需的函数、重新指定中断矢量(可选择的)、开用//户所需中断EALLOW; //EALLOW和EDIS已经在头文件中定义了PieVectTable.T1PINT = &ISRTimer1; //更该定时器1周期中断服//务程序地址EDIS;//开中断IER |= M_INT2; //开中断2,M_INT2已经在头文//件中定义EINT;EvaRegs.T1CON.all=EvaRegs.T1CON.all|0x0040; //启动Timer1//step6:无限空循环,等待中断(可选择)while(1){;}}//step7:用户自定义函数interrupt void ISRTimer1(void) //定时器1周期中断服务程序{double i;asm(" SETC XF ");for(i=0;i<50000;i++){;}asm(" CLRC XF ");PieCtrl.PIEACK.all=0x0002; //清除PIEACK中断标志位EvaRegs.T1CNT=0x0000; //Timer1的计数器重新赋0EvaRegs.EVAIFRA.all=EvaRegs.EVAIFRA.all&0x0080; //清除定//时器1周期中断标志IER |= M_INT3; //使能定时器2的中断EINT; //开CPU中断ERTM; // Enable Global realtime interrupt DBGM}在主程序中调用相关的初始化程序,完成相关的初始化工作,而中断程序中完成的是控制LED灯亮灭的功能。
DSP实验报告定时器2
实验二DSP系统定时器的使用一、实验目的:1、掌握5402 DSP片上定时器的初始化设置及应用;2、掌握DSP系统中实现定时的原理及方法;3、了解5402 DSP中断寄存器IMR、IFR的结构和使用;4、掌握5402 DSP系统中断的初始化设置过程和方法;5、掌握在C语言中嵌入汇编语句实现数字I/O的方法。
二、实验原理:1、定时器及其初始化在5402内部包括两个完全相同的定时器:定时器0和定时器1。
每个定时器分别包括3个寄存器:定时器周期寄存器PRD、定时器寄存器TIM、定时器控制寄存器TCR,其中TCR 寄存器中包括定时器分频系数TDDR、定时器预分频计数器PSC两个功能寄存器。
通过PRD 和TDDR可以设置定时器的初始值,TIM(16bits)和PSC(4bits)是用于定时的减法计数器。
CLKOUT是定时器的输入时钟,最大频率为100Mhz。
定时器相当于20bit的减法计数器。
定时器的结构如图1所示。
图1 定时器的组成框图定时器的定时周期为:CLKOUT×(TDDR+1)×(PRD+1)其中,CLKOUT为时钟周期,TDDR和PRD分别为定时器的分频系数和时间常数。
在正常工作情况下,当TIM减到0后,PRD中的时间常数自动地加载到TIM。
当系统复位或者定时器单独复位时,PRD中的时间常数重新加载到TIM。
同样地,每当复位或PSC减到0后,定时器分频系数TDDR自动地加载到PSC。
PSC在CLKOUT作用下,作减1计数。
当PSC 减到0时,产生一个借位信号,令TIM作减l计数。
TIM减到0后,产生定时中断信号TINT,传送至CPU和定时器输出引脚TOUT。
例如:欲设置定时器0的定时周期为1ms,当DSP工作频率为100Mhz时,通过上式计算可得出:TDDR=15,PRD=6520。
2、定时器的使用下面是一段定时器应用程序,每检测到一次中断,ms+1,利用查询方式每计500个数就令XF引脚的电平翻转一次,在XF引脚输出一矩形波信号,因定时器1ms中断一次,故500ms就使LED翻转一次,这样LED指示灯就不停地闪烁。
DSP外部中断实验报告
电子信息工程系实验报告课程名称:现代DSP技术成绩:实验项目名称:实验四外部中断实验实验时间:2011-11-22指导教师(签名):班级:&^^%%$ 姓名:*&% 学号:*****一、实验目的1、掌握中断技术,学会对外部中断的处理方法;2、掌握中断对程序流程的控制,理解DSP对中断的响应时序。
二、实验设备计算机,CCS 2.0版软件,DSP仿真器,实验箱。
三、实验原理1. 在DSP中,中断是由硬件或软件产生的驱动信号,要求DSP暂停执行的程序,转到中断服务子程序的执行。
2. 对于中断程序的设计,一般采用以下步骤:(1)将中断向量指针IPTR指向中断矢量所在的段,在段中偏移量为中断序号四倍的地指出写一个跳转到中断服务子程序的跳转指令。
(2)置位ST1中的INTM位,禁止中断,然后清除所以未执行完的中断。
(3)打开相应的中断,复位ST1中的INTM位,使能中断。
(4)写一段等待程序(一般用无效的死循环),等待中断事件的发生。
四、实验步骤与内容1、拨码开关:SW2SW2备注1 2 3 4 码位ON ON OFF ON 单脉冲产生的中断给CPU2的中断INT22、关K9拨到右边,即仿真器选择连接右边的CPU:CPU2;启动CCS 2.0,在Project→Open菜单打开exp05_cpu2目录下面的工程文件“exp05.pjt”。
用下拉菜单中Project-->Open,打开“exp05_cpu2\ exp05.pjt”,双击“Source”,可查看源程序。
在File→Load Program菜单下加载exp05_cpu2\debug目录下的exp05.out文件。
a)运行实验程序;b)每按一次“单脉冲输出”按键,观察LED1~LED8灯变化;每按一次“单脉冲输出”按键则显示灭亮灭亮灭亮灭亮。
如下图所示c)单击“Halt”暂停程序运行,反复按开关“单脉冲输出”,观察LED1~LED8灯变化。
dsp中断实验报告
dsp中断实验报告DSP中断实验报告引言:数字信号处理(Digital Signal Processing,简称DSP)是一门涉及信号处理、系统和算法的学科。
在实际应用中,DSP常常需要使用中断来处理实时任务,确保信号的准确处理和响应。
本实验旨在通过对DSP中断的实验,深入理解中断的原理和应用。
一、实验目的通过实验,掌握DSP中断的基本原理和实现方法,了解中断在实时信号处理中的重要性。
二、实验器材和软件1. 实验器材:DSP开发板、计算机、示波器等。
2. 实验软件:DSP开发工具、代码编辑器等。
三、实验步骤1. 准备工作a. 连接DSP开发板和计算机,确保通信正常。
b. 打开DSP开发工具,并创建一个新的工程。
c. 在代码编辑器中编写中断处理函数的框架。
2. 中断初始化a. 在主函数中,设置中断向量表的地址,指向中断处理函数的入口。
b. 初始化中断控制器,使其能够正确响应中断请求。
c. 打开中断使能开关,使中断能够正常工作。
3. 中断处理函数编写a. 根据实际需求,编写中断处理函数的具体逻辑。
b. 在中断处理函数中,对实时信号进行处理和响应。
4. 实验验证a. 编译并下载代码到DSP开发板。
b. 连接示波器,观察实时信号的处理情况。
c. 通过改变中断触发条件,验证中断的正常工作。
四、实验结果与分析经过实验验证,我们成功实现了DSP中断的功能。
通过中断处理函数,我们可以实时响应外部事件,对信号进行处理和控制。
在实时信号处理中,中断的应用可以大大提高系统的响应速度和准确性。
五、实验总结通过本次实验,我们深入理解了DSP中断的原理和应用。
中断作为一种实时处理机制,可以在处理器执行其他任务的同时,及时响应外部事件。
在实际应用中,我们可以根据需求合理配置中断,提高系统的实时性和稳定性。
六、实验心得通过实验,我对DSP中断有了更深入的认识。
中断作为一种重要的实时处理机制,在数字信号处理中发挥着重要作用。
在以后的学习和实践中,我将进一步探索中断的应用,提高自己的实时信号处理能力。
定时器dsp实验报告
实验四定时器实验实验目的与要求:1、熟悉C54的定时器;2、掌握C54定时器的控制方法;3、学会使用定时器中断方式控制程序流程。
一.实验设备计算机,CCS2.0版软件,DSP硬件仿真器,实验箱。
二.实验步骤和内容1、运行CCS软件,调入样例程序,装载并运行;2、定时器试验通过数字量输入输出单元的LED6~LED13来显示;3、启动CCS2.0,并打开工程exp04.pjt,编译,加载,运行。
启动CCS 2.0,并加载“exp04.out”;单击“Run”运行,可观察到LED灯(LED6~LED13)以一定的间隔时间不停摆动;单击“Halt”,暂停程序运行,LED灯停止闪烁;单击“Run”,运行程序,LED灯又开始闪烁;关闭所有窗口,本实验完毕。
三.问题及流程图一:在程序initial.asm 中:1、第12行中,注释为“set C5402 DSP clock to 10MHz”,为什么?如果: 要求“set C5402 DSP clock to 150MHz”,怎么修改。
答:软件可编程PLL受时钟方式寄存器CLKMD的控制,CLKMD用来定义PLL时钟模块中的时钟配置。
0xF7FF中第11位为0,PLLMUL即第15~12位为15,选择了PLL乘系数为1,芯片的工作频率等于输入时钟CLKIN乘以PLL的乘系数,即10M*1=10M。
设置PLL的乘系数为15,PLLMUL=14,PLLDIV=0,即E7FF,可使得频率为150M。
2、第13行中,STM 0x3FA0, PMST ; 注释为:vectors at 3F80h,是指什么?中断向量地址是多少?答:中断向量地址是由PMST寄存器中的IPTR(9位中断向量指针)和左移2位后的中断向量序号所组成。
0x3FA0h的高9位为0011 1111 1,后7位补0即为0x3F80h。
内部定时器0中断的中断序号为19,即001 0011,左移2位后为100 1100,中断向量地址是0011 1111 1100 1100,即为0x3FCCh。
DSP定时器与中断系统的使用实验报告
贵州大学实验报告学院:电气工程学院专业:电子信息工程班级:电信091 姓名徐朝忠学号0908040224 实验组实验时间2012年12月指导教师尉学军老师成绩实验项目名称DSP定时器与中断系统的使用实验目的1. 掌握TMS320C54x定时器的工作原理和初始化步骤2. 掌握DSP的中断结构和对中断的处理流程实验要求①根据本实验的特点、要求和具体条件,采用教师简单讲解,学生自己动手操作的形式;②学生实验时,并严格遵守实验室规则、安全制度和学生实验守则;③认真学习实验操作技能,严格按指导书和实验指导教师的指导操作有关仪器设备,不要做与本实验无关的事情;④做好实验预习、实验记录,并按要求按时完成实验报告。
实验原理译码后地址是03002HDSP的工作主频为8MHz,设置定时时间125ms,每定时器中断4次,正好为0.5s。
每0.5s 亮一次,灭一次,正好1s闪烁一次。
实验仪器计算机一台(安装CCS3.3)、ICETEC-VC5415-A试验箱实验步骤1、将试验箱<<DSP教学实验系统>>的JTAG连到ICETEC-VC5415-A板上,接好电源和USB接口。
2、进入CCSsetup,设置运行环境为3、输入程序:源程序1.Time1.asm.mmregs.bss count,1.bss x,1.def _main,_time1 TIMO .set 0024HPRD0 .set 0025HTCR0 .set 0026HPA1 .SET 3002H.text_main: STM #count,AR1 ST #4,*AR1STM #0008H,TCR0STM #0F423H,PRD0STM #042FH,TCR0STM #0008H,IMRSTM #0008H,IFRRSBX INTMSTM x,AR5ST #55H,*AR5PORTW *AR5,PA1stm #00A0H,PMST loop1: B loop1_time1: PSHM TRNPSHM TPSHM ST0PSHM ST1ADDM #-1,*AR1CMPM *AR1,#0BC still_wait,NTCPORTR 3002h,*AR5LD *AR5,AXOR #0ffh,0,A,ASTL A,*AR5PORTW *AR5,PA1ST #4,*AR1still_wait: POPM ST1 ;POPM ST0POPM TPOPM TRNRETE.end输入中断向量程序:.sect ".vectors.ref _main ; C entry point.align 0x80 ; must be aligned on page boundary RESET: ; reset vectorBD _main ; branch to C entry pointSTM #200,SP; stack size of 200 nmi: RETE ; enable interrupts and return from oneNOPNOPNOP ;NMI~; software interruptssint17 .space 4*16sint18 .space 4*16sint19 .space 4*16sint20 .space 4*16sint21 .space 4*16sint22 .space 4*16sint23 .space 4*16sint24 .space 4*16sint25 .space 4*16sint26 .space 4*16sint27 .space 4*16sint28 .space 4*16sint29 .space 4*16sint30 .space 4*16int0: RETENOPNOPNOP int1: RETENOPNOPNOP int2: RETENOPNOPNOP tint: B _time1.ref _time1NOPNOP rint0: RETENOPNOPNOP xint0: RETENOPNOPNOP rint1: RETENOPNOPNOP xint1: RETENOPNOPNOP int3: RETENOPNOPNOP.end *.CMD 文件:-w-stack 400h-heap 100-l rts.libMEMORY{PAGE 0:VECT : o=80h,l=80hPRAM : o=100h,l=1f00hPAGE 1:DRAM : o=2000h,l=1000h}SECTIONS{.text : {}> PRAM PAGE 0.data : {}> PRAM PAGE 0.cinit : {}> PRAM PAGE 0.switch : {}> PRAM PAGE 0.const : {}> DRAM PAGE 1.bss : {}> DRAM PAGE 1.stack : {}> DRAM PAGE 1.vectors: {}> VECT PAGE 0}4.编译链接,5.运行,观察试验箱中发光二级管的变化情况6.修改发光二级管的初始状态,观察其变化情况。
实验三定时器及外部中断实验
实验三定时器及外部中断实验一、实验目的1)熟悉VC5416的定时器工作原理。
2)掌握VC5416定时器的编程控制方法。
3)学会使用定时器的中断方式来控制程序执行方法。
4)掌握外部中断的编程控制方法,理解DSP对于中断的响应的过程。
5)了解并学习混合编程的实现方法。
二、实验设备1)计算机一套,DSP硬件仿真器一台,实验箱一台。
2)CCS4.1-CCS5.5软件版本。
3)源程序及链接命令文件见:D:\ EXPER\EXP3目录下的.asm 、.cmd、.C 和.lib文件。
三、实验步骤(一)、连接仿真器,将仿真器插接到C5416的JTAG接口上,另一头插接到电脑的USB接口上,因为仿真器是金属外壳,容易和箱子内部的电路触碰造成短路,从而对实验箱造成损坏,这个要特别注意,也不允许在机箱打开电源情况下插拔仿真器。
(二)、实验箱配置及连线:C5416DSP核心板上的SW1的1-6的开始设置为off off off off on on(上电后工做于1/2分频器方式,其它实验也按照此设置不变,我试验过改为PLL*2方式仿真器就连接不上了),SW2设置为on on on on。
将DSP核心板所在试验箱引脚连线区的BCANRX(C54的XF)引脚,与指示灯连线区LAMP的L1连接起来,这样就可以通过XF控制这个L1这个方光管的亮灭了。
将DSP核心板所在试验箱引脚连线区的INT0(C54的外部中断0输入)引脚与单脉冲按键PAULSE的P-(按下输出负脉冲)连接起来,这样按下按键时,就会给DSP的INT0中断引脚发送一个负脉冲。
连线照片见程序目录中的图片文件。
(二)、打开实验箱电源开关。
(三)、使用给定的文件,按照实验一的步骤建立实验项目,例如工作区目录为D:\ exp3 中建立一个exp3的实验项目,添加所有的给定的文件。
(四)、仿真调试方法1、通过菜单Project- Build All 对项目进行编译和链接,如下:如果有错误会出现在problem 窗口中。
dsp实验报告哈工大实验一定时器实验
dsp实验报告哈工大实验一定时器实验实验一定时器实验一. 实验目的1. 通过实验熟悉LF2407A 的定时器;2. 掌握LF2407A 定时器的控制方法;3. 掌握LF2407A 的中断结构和对中断的处理流程;4. 学会运用中断程序控制程序流程。
二. 实验设备计算机,ICETEK-LF2407-EDU 实验箱(或ICETEK 仿真器+ICETEK-LF2407-A系统板+ 相关连线及电源)。
三. 实验原理1. 通用定时器介绍及其控制方法⑴.事件管理器模块(EV)TMS320LF2407A DSP 片内包括两个事件管理模块EVA 和EVB ,每个事件管理器模块包括通用定时器(GP)、比较单元以及正交编码脉冲电路。
每个事件管理模块都包含两个通用定时器,用以完成计数、同步、定时启动ADC、定时中断等功能。
⑵.通用定时器(GP)每个通用定时器包括:一个16 位的定时器增/减计数的计数器TxCNT,可读写;一个16 位的定时器比较寄存器(双缓冲,带影子寄存器)TxCMPR,可读写;一个16 位的定时器周期寄存器(双缓冲,带影子寄存器)TxPR,可读写;一个16 位的定时器控制寄存器TxCON,可读写;可选择的内部或外部输入时钟;用于内部或外部时钟输入的可编程的预定标器(Prescaler);控制和中断逻辑,用于4 个可屏蔽中断—下溢、溢出、定时器比较和周期中断;可选择方向的输入引脚TDIRx,用于双向计数方式时选择向上或向下计数。
通用定时器之间可以彼此独立工作或相互同步工作,完成复杂的任务。
通用定时器在中断标志寄存器EVAIFRA,EVAIFRB,EVBIFRA 和EVBIFRB中有12 个中断标志位。
每个通用定时器可根据以下事件产生4 个中断:上溢—TxOFINF(x=1,2,3 或4);下溢—TxUFINF(x=1,2,3 或4);比较匹配--TxCINT(x=1,2,3 或4);周期匹配--TxPINT(x=1,2,3 或4)。
DSP控制器原理及技术实验报告
实验二定时器一.实验目的1. 熟悉如何编写28335 的中断服务程序;2. 掌握长时间间隔的定时器的处理。
3. 掌握片内外设的设置方法。
二.实验内容1. 系统初始化;2. DSP 的初始设置;3. 定时中断的编写;三.实验要求1. 通过本实验,熟悉中断的结构及用中断程序控制程序流程,掌握定时器的应用;2. 分析给定程序代码功能,并在实验报告中给出程序流程图和必要的注释;3. 改变定时时间,下载运行,观察结果,在报告中计算出运行时间。
四.实验背景知识TMS320F28335 片上有3 个32-位CPU 定时器,分别被称为CPU 定时器0、1 和2。
每个定时器中均有一个32-位减计数器,当计数器减到0 时,产生一个中断。
其中,CPU 定时器0 的中断TINT0 为PIE 中断,CPU 定时器1 的中断TINT1 直接连到CPU中断的INT13,CPU 定时器 2 的中断TINT2 直接连到CPU 中断的INT14。
如下图所示。
CPU 定时器2 保留为实时操作系统(如DSP BIOS)使用,而CPU 定时器0、1 则可被用户使用,SEED-DEC28335 未使用CPU 定时器0,用户可以根据应用的需要灵活使用。
CPU 定时器的原理框图和定时中断如下图所示。
定时器在工作过程中,首先用32 位计数寄存器(TIMH:TIM)装载周期寄存器(PRDH:PRD)内部的值。
计数寄存器根据SYSCLKOUT 时钟递减计数。
当计数寄存器等于0 时,定时器中断输出产生一个中断脉冲。
定时器计数器(TIMH:TIM):TIM 寄存器保存当前32 位定时器计数值的低16 位,TIMH 寄存器保存高16 位。
每隔(TDDRH:TDDR+1)个时钟周期TIMH:TIM 减1,当TIMH:TIM 递减到0 时,TIMH:TIM 寄存器重新装载PRDH:PRD 寄存器保存的周期值,并产生定时器中断TINT信号。
定时器周期寄存器(PRDH:PRD):PRD 寄存器保存32 位周期值的低16 位,PRDH 保存高16 位。
DSP实验报告
实验一:CPU 定时器实验一:实验目的1、熟悉F2812 的CPU 定时器;2、掌握F2812 的CPU 定时器的控制方法;3、学会使用CPU 定时器中断方式控制程序流程。
二:实验设备计算机,CCS 3.1 版软件,DSP 硬件仿真器,E300 实验箱,2812CPU 板。
三:实验原理样例实验是采用CPU 定时器来定时使LED 亮灭的。
F2812 的CPU 定时器不同于事件管理器模块(EVA、EVB)中的通用定时器(GP)。
F2812 的CPU共有三个定时器,其中,CPU 定时器 1 和 2 被保留用作实时操作系统OS(例如DSPBIOS),CPU 定时器0 可以供用户使用。
定时器的一般操作如下:将周期寄存器PRDH:PRD 中的值装入32 为计数器寄存器TIMH:TIM。
然后计数器寄存器以F281x 的SYSCLKOUT 速率递减。
当计数器减到0 时,就会产生一个定时器中断输出信号(一个中断脉冲)。
下图为CPU 定时器的内部结构:四:实验步骤1 、F2812CPU 板的JUMP1 的1 和2 脚短接,拨码开关SW1 的第二位置ON;其余置OFF。
2 、E300 底板的开关SW4 的第2 位置ON,其余位置OFF。
其余开关设置为OFF。
3 、运行CCS 软件,调入样例程序,装载并运行;(进入CCS 界面后需要点“Debug--Connect”)4 、加载“..\ e300_03_cpu_timer\Debug\Example_281x_cpu_timer.out”;5 、单击“Debug \ Animate”运行,可观察到灯LED1~LED8 的变化规律:6 、单击“Debug \ Halt”,暂停程序运行,LED 灯停止闪烁;单击“Debug \ Run”,运行程序,LED 灯又开始按上述规律变化;五:实验程序及结果修改后程序如下:/*;**************************************************************;* 北京达盛科技有限公司;* 研发部;*;* ;*************************************************************//*----------------------- 文件信息----------------------------;*;* 文件名称: Example_DSP281x_e300_switch.c;* 适用平台: DSP E300 实验箱;;* CPU类型: DSP TMS320F2812;* 软件环境: CCS3.1;* 试验接线: 1、F2812CPU板上:JUMP1的1和2脚短接,拨码开关SW1的第二位置ON;;* 2、E300底板的开关SW4的第2位置ON,其余置OFF。
DSP实验4实验报告
实验4 C54xDSP定时器及中断使用一、实验目的1、学会通过TI公司的片上支持库来调用片上外围设备;2、学会使用C54x系列DSP的定时器;3、学会使用C54x系列DSP的中断系统;二、实验原理C54xDSP片上支持库CSL的详细使用方法及步骤见“TMS320C54x CSL.pdf”。
1、定时器的使用(a)C语言部分(1)在预编译处包含CSL库及对应的定时器库;#include<stdio.h>#include<csl.h>#include<csl_timer.h>#include<csl_irq.h>(2)定义定时器的配置结构及句柄;TIMER_Config timerCfg1={0x0000,0x0080u};TIMER_Handle hTimer1;(3)在运行程序的开始调用“CSL初始化函数”;CSL_init();(4)在运行程序内调用“定时器打开函数”和“定时器配置函数”;hTimer1=TIMER_open(TIMER_DEV0,TIMER_OPEN_RESET);TIMER_config(hTimer1,&timerCfg1);(5)在需要开始计时的时候调用“定时器开始函数”;TIMER_start(hTimer1);(6)不再需要计时的时候调用“定时器停止函数”;TIMER_stop (hTimer1);(b)CCS Project Build Option部分(1)Compiler 下 Preprocessor 设置;(2)Linker 下 Libraries 设置;三、实验内容1、利用TI公司已定义的片上支持库,正确配置及使用定时器和中断,使能定时器中断;#include<stdio.h>#include<csl.h>#include<csl_timer.h>#include<csl_irq.h>TIMER_Config timerCfg1={0x0000,0x0080u};TIMER_Handle hTimer1;interrupt void timerIsr();int temp,timer_int_cnt;void main(){int temp=0;CSL_init();IRQ_plug (IRQ_EVT_TINT0,&timerIsr);IRQ_enable(IRQ_EVT_TINT0);IRQ_globalEnable();hTimer1=TIMER_open(TIMER_DEV0,TIMER_OPEN_RESET);TIMER_config(hTimer1,&timerCfg1);TIMER_start(hTimer1);while(1){};TIMER_stop (hTimer1);}interrupt void timerIsr(void){TIMER_stop (hTimer1);timer_int_cnt=timer_int_cnt+1;if(timer_int_cnt<20){TIMER_start(hTimer1);}printf("Now Enter a Timer interupt!\n");}2、编写相应的定时器中断服务函数,运行程序,把断点设置在中断服务函数内,并使程序在该断点处停下,并在CCS软件调试窗口上打印相应的提示。
DSP实验:定时器实验
DSP实验:定时器实验DSP实验二定时器实验一、实验目的1、熟悉C54X定时器的基本结构;2、掌握定时器的控制方法;3、掌握使用定时器中断方式控制程序的流程。
二、实验设备计算机、CCS2.0版软件,DSP仿真器、实验箱。
三、实验系统相关资源1、通过对I/0口8001H发送数据来控制LED灯(LED6-LED13)2、系统时钟频率设定为20MHz。
STM #0xF7FF, CLKMD ; set C5402 DSP clock to 10MHz 3、定时器中断周期=TCLK*(TDDR+1)*(PRD+1)其中TCLK 是时钟周期,在本系统中,TCLK=1/10MHz=100ns,TDDR 和PRD 分别表示定时器初始化时TCR相应位(0-3)和PDR的值。
4、定时器的初始化(1) 将TCR中的TSS位置1,停止定时器。
(2) 加载PRD。
(3) 重新加载TCR以初始化TDDR。
(4) 重新启动定时器。
TSS位为0,TRB位为l, 以重载定时器周期值,使能定时器。
5、定时器中断的设置(1)初始化PMST中的中断向量指针,在本实验中设IPTR =001111111B,即中断向量表为3F80H起始的128个存储单元。
(2)intt中断号为19,在中断向量表中对应的位置设置一条跳转指令,转向定时器中断服务程序。
6、中断服务程序的设计包括保护现场、执行中断服务程序和恢复现场三个步骤,在本实验中,使用C 函数编写定时器中断子程序,保护现场和恢复现场有C 函数自动实现。
四、实验步骤1、用仿真机将计算机与数字信号处理实验箱连接好,并依次打开实验箱电源、仿真机电源,然后运行CCS 软件。
2、打开工程文件Exp2.pjt,编译、链接生成可执行代码,装载到目标板,运行程序并记录实验结果。
3、查看工程源程序,分析C 语言各函数以及汇编语言子程序之间的调用关系。
4、查看initial.asm 的源代码,求出定时器初始化时PDR 和TDDR 的取值,计算定时器中断周期。
DSP定时器及硬件中断实验报告
《DSP原理及应用》课程实验报告学生姓名:所在班级:电信1001指导教师:记分及评价:项目满分5分得分一、实验名称实验6:定时器及硬件中断实验二、任务及要求■了解C55x DSP定时器结构。
■学习C5509定时器初始化。
■了解C55x DSP中断。
■学习中断处理。
三、实验程序(原理图)1. 定时器汇编源程序.mmregs.def _c_int00.ref sdram_init;引用外部变量,SDRAM初始化子程序入口led .set 400001h;led数据地址tim0 .set 0x1000;定时器寄存器TIM0prd0 .set 0x1001;定时器周期寄存器PRD0tcr0 .set 0x1002;定时器控制寄存器TCR0prsc0 .set 0x1003;定时器预定标寄存器sysr .set 0x07fdclkmd .set 0x1c00 ;时钟模块寄存器地址pdp_timer0 .set tim0/128STACK .usect ".stack", 200hSYSSTACK .usect ".sysstack", 200h.dataled_i .word 1,2,4,8,4,2.sect “.vectors”rsv: ; reset vectorb _c_int00 ;branch to C entry pointNOP.align 8nmi: .loop 8nop.endloopint0: .loop 8nop.endloopint2: .loop 8nop.endlooptint0: b _Timer0nop.align 8.textc_int00: amov #0,xdpamov #STACK+200h,xspamov #SYSSTACK+200h,xssp;init interupt(中断初始化)bset intm ;禁止全局中断mov #1,@ivpd ;初始化DSP中断矢量指针ivpd=1mov #1,@ivph ;初始化DSP中断矢量指针ivph=1mov #10h,@ier0 ;初始化中断屏蔽寄存器ier0,tint0=1mov #10h,@dbier0;调试中断使能寄存器dbier0=10hmov #0,@ier1 ;清中断使能寄存器ier0mov #0ffffh,@ifr0;清中断标志寄存器ifr0mov #0ffffh,@ifr1;清中断标志寄存器ifr1call sdram_init ;调用初始化SDRAM子程序;定时器初始化mov #pdp_timer0,pdp;置外围I/O数据页指针mov #04f0h,port(tcr0) ;*tcr0 = 0x04f0mov #0h,port(tim0);*tim0 = 0mov #0ffffh,port(prd0);*prd0 = 0x0ffffmov #15h,port(prsc0) ;*prsc0 = 0x15=21 mov #0e0h,port(tcr0) ;*tcr0 = 0x00e0bclr intm ;全局中断使能bset AR3LC ;置位AR3LC,AR3循环寻址amov #led,xar2 ;xar2指向ledmov #6,bk03 ;循环寻址长度为6amov #led_i,xar3 ;初始化xar3mov #led_i,bsa23 ;初始化bsa23,循环寻址首地址为led_imov #0,ar3 ;清ar3loop: NOPb loop ;等待中断_Timer0: mov *ar3+,*ar2 ;定时器Timer0中断服务程序reti ;中断返回.end2. 命令文件-stack 200h-sysstack 200hMEMORY{PAGE 0:MMR : origin = 0000000h, length = 00000c0h SPRAM : origin = 00000c0h, length = 0000040h VECS : origin = 0000100h, length = 0000100hDARAM0 : origin = 0000200h, length = 0001E00hDARAM1 : origin = 0002000h, length = 0002000hDARAM2 : origin = 0004000h, length = 0002000hDARAM3 : origin = 0006000h, length = 0002000h}SECTIONS{.vectors : > VECS PAGE 0.bss: > DARAM0 PAGE 0.stack: > DARAM1 PAGE 0.sysstack: > DARAM1 PAGE 0.text : > DARAM2 PAGE 0.data: > DARAM3 PAGE 0}四、仿真及结果分析无五、实验设备1、PC电脑(win7系统平台)2、CCS仿真软件系统六、小结通过对系统软件,硬件的设计开发,我掌握了DSP的许多用途和使用方法。
中断及定时器实验报告
中断及定时器实验报告中断及定时器实验报告引言:中断是计算机系统中一种重要的机制,它可以打破程序的顺序执行,响应外部事件的发生。
中断的引入使得计算机可以同时处理多个任务,提高了系统的效率和可靠性。
定时器是中断的一种常见应用,它可以在一定时间间隔内产生中断信号,实现定时任务的功能。
本实验旨在通过编程实现中断和定时器的功能,并测试其正确性和稳定性。
一、实验目的1. 学习中断的概念和原理;2. 掌握中断的编程方法和中断处理程序的编写;3. 理解定时器的工作原理和应用场景;4. 实现定时器的功能,并测试其正确性和稳定性。
二、实验过程1. 硬件准备在实验中,我们使用了一台基于8051单片机的开发板,通过连接外部电路和开发板的引脚,实现对定时器的控制。
2. 软件编程首先,我们需要在开发板上搭建一个简单的电路,包括一个LED灯和一个按钮。
然后,我们使用汇编语言编写中断处理程序,实现当按钮按下时,LED灯闪烁的功能。
具体的编程步骤如下:(1)设置中断向量表:将中断处理程序的地址存储到中断向量表中,以便系统在中断发生时能够正确地跳转到相应的处理程序;(2)初始化定时器:设置定时器的计数器初值和工作模式;(3)编写中断处理程序:当中断发生时,执行相应的处理程序。
在本实验中,我们编写了一个简单的中断处理程序,当按钮按下时,将LED灯的状态取反;(4)启用中断:使能中断,使得系统能够响应外部事件的发生。
3. 实验测试将编写的程序下载到开发板上,并连接相应的电路。
按下按钮,观察LED灯是否按照预期的频率闪烁。
通过调整定时器的计数器初值和工作模式,可以改变LED灯闪烁的频率。
三、实验结果经过多次实验测试,我们发现中断和定时器的功能正常,LED灯能够按照预期的频率闪烁。
通过改变定时器的计数器初值和工作模式,我们成功地实现了LED灯闪烁频率的调节。
实验结果表明,中断和定时器是一种有效的方法,可以实现对外部事件的及时响应和定时任务的精确控制。
基于DSP的定时器中断实验(汇编语言)
基于DSP的定时器中断实验(汇编语言)一、实验目的1.熟悉定时器初始化的步骤;2.熟悉定时器控制寄存器(TCR)的含义和使用;3.熟悉定时器中断的原理和应用;二、实验原理C54x的片内定时器是一个可编程的定时器,可用于周期地产生中断。
1. 定时器的组成定时器主要由定时寄存器TIM、定时周期寄存器PRD、定时控制寄存器TCR及相应的逻辑控制电路组成。
如图7.1所示。
寄存器TIM、PRD和TCR是存储器映像寄存器,地址分别为0024H、0025H和0026H。
图7.1定时器结构框图定时周期寄存器PRD:用来存放定时时间,地址:0025H定时寄存器TIM:16位减1计数器,地址:0024H定时控制寄存器TCR:存放定时器的控制位和状态位,地址:0026H。
逻辑控制电路:用来控制定时器协调工作,由三个或门和一个与门组成。
复位SRESET和TRB:①通过或门1、3控制PRD的加载计数;②通过或门1、2控制PSC的加载计数。
停止控制位TSS:通过与门屏蔽CLKOUT信号来控制定时器的启动。
TINT——外部定时中断,定时时间到发中断;TOUT——定时输出,输出定时波形。
2. 定时器工作原理主定时模块包括PRD和TIM,由预定标模块定时,预定标模块每输出一个时钟,TIM减1。
当TIM减到0后,TIM装入PRD的值。
当设备复位(SRESET=1)或者定时器复位(TRB=1)时,PRD的内容将装入TIM中。
主定时模块的定时中断(TINT)信号输出至CPU以及定时器的输出引脚TOUT。
预定标模块包括TCR中的TDDR和PSC位,由CPU时钟定时,每来一个CPU时钟,PSC 值减1。
当PSC减至0、设备复位或定时器复位时,TDDR的内容复制到PSC中。
4位预定标计数器PSC和16位定时计数器TIM组成一个20位计数器,定时器每接收一个CPU时钟减1,当计数器减到0时,产生定时中断(TINT),同时PSC和TIM重新装入预设的值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include "myapp.h"//定义指示灯寄存器地址和寄存器类型
#define LBDS (*((unsigned int *)0x400001))
void INTR_init( void );
void TIMER_init(void);
int nCount;
main()
{
nCount=0;
*tim0 = 0;
*prd0 = 0x0ffff;
*prsc0 = 2;
*tcr0 = 0x00e0;
}
六.实验结果
-Hale Waihona Puke 示灯在定时器的定时中断中按照设计定时闪烁。
-使用定时器和中断服务程序可以完成许多需要定时完成的任务,比如DSP定时启动A/D转
换,日常生活中的计时器计数、空调的定时启动和关闭等。
相关连线及电源)。
三.实验原理
1.通用定时器介绍及其控制方法(详见spru595b.pdf):
TMS320VC5509A内部有两个20位通用定时器(GP):
*每个通用定时器包括:
-一个16位的减计数的计数器TIM;
-一个16位的定时器周期寄存器PRD;
-一个16位的定时器控制寄存器TCR;
-一个16位的定时器预定标寄存器PSCR;
目录中的“Timer.pjt”。
在项目浏览器中,双击main.c,激活main.c文件,浏览该文件的内容,理解各语句作用。
打开ICETEK–VC5509-Ae.cmd,对照vector.asm源程序学习中断向量表的写法。
5.编译、下载程序。
6.运行程序,观察结果。
7.改变TIMER_init()函数里*prd0 = 0x0ffff为“=0x0fff ”;重复步骤5,6观察实验现象。
外设事件要引起CPU中断,必须保证:IER中相应使能位被使能,IFR相应中断也被
使能。在软件中,当设置好相应中断标志后,开中断,进入等待中断发生的状态;外设(如
定时器)中断发生时,首先跳转到相应中断高级的服务程序中(如:定时器1会引起TINT
中断),程序在进行服务操作之后,应将本外设的中断标志位清除以便能继续中断,然后返
{
IVPD=0xd0;
IVPH=0xd0;
IER0=0x10;
DBIER0 =0x10;
IFR0=0xffff;
asm(" BCLR INTM");
}
void TIMER_init(void)
{
ioport unsigned int *tim0;
ioport unsigned int *prd0;
ioport unsigned int *tcr0;
PLL_Init(40);
SDRAM_init();
LBDS=0;
INTR_init();
TIMER_init();
while ( 1 )
{
}
}
void interrupt Timer()
{
nCount++; nCount%=16;
if ( nCount==0 )
LBDS^=1;
}
void INTR_init( void )
* PSCR寄存器说明:
15 10 9 6 5 4 3 0
Reserved PSC Reserved TDDR
PSC: 4位的预定标值,与TIM共同组成20位的定时计数器.
TDDR:预定标周期寄存器(在需要时重装入PSC的值)
TCR寄存器说明(详见spru595b.pdf)
2.中断响应过程(详见spru595b.pdf):
请参看本书第三部分、第一章、四、2。
3.启动Code Composer Studio 3.1:
请参看本书第三部分、第一章、五、2。
选择菜单Debug→Reset CPU。
4.打开工程文件:
打开菜单“Project”的“Open”项;选择C:\ICETEK\VC5509Ae\VC5509Ae\Lab0303-Timer
实验三:DSP的定时器和外中断
定时器:
一.实验目的
1.通过实验熟悉VC5509A的定时器;
2.掌握VC5509A定时器的控制方法;
3.掌握VC5509A的中断结构和对中断的处理流程;
4.学会C语言中断程序设计,以及运用中断程序控制程序流程。
二.实验设备
计算机,ICETEK-VC5509-A实验箱(或ICETEK仿真器+ICETEK–VC5509-A系统板+
ioport unsigned int *prsc0;
tim0 = (unsigned int *)0x1000;
prd0 = (unsigned int *)0x1001;
tcr0 = (unsigned int *)0x1002;
prsc0 = (unsigned int *)0x1003;
*tcr0 = 0x04f0;
时控制是用循环计算方法得到的,延时不精确也不均匀,采用中断方式可以实现指示灯的定
时闪烁,时间更加准确。
实验程序的工程中包含了两种源代码,主程序采用C语言编制利于控制,中断向量表
在vector.asm汇编语言文件中,利于直观地控制存储区分配。在工程中只需将它们添加进来
即可,编译系统会自动识别分别处理完成整合工作。
实验程序的C语言主程序中包含了内嵌汇编语句,提供一种在需要更直接控制DSP状态时
的方法,同样的方法也能提高C语言部分程序的计算效率
四.实验步骤
1.实验准备:
连接实验设备:请参看本书第三部分、第一章、二。
关闭实验箱上扩展模块和信号源电源开关。
2.设置Code Composer Studio 3.1在硬件仿真(Emulator)方式下运行:
-向量表中每项为8个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地址。
第一个向量表的首项为复位向量,即CPU复位操作完成后自动进入执行的程序入口。
-服务程序在服务操作完成后,清除相应中断标志,返回,完成一次中断服务
5.实验程序分析:
本实验设计的程序是在上实验3.1基础上修改得来,由于实验3.1控制指示灯闪烁的延
-在调试程序时,有时需要指示程序工作的状态,可以利用指示灯的闪烁来达到,指示灯灵活
回。
3.中断程序设计:
-程序中应包含中断向量表,VC5509A默认向量表从程序区0地址开始存放,根据IPVD和
IPVH的值确定向量表的实际地址。
-注意观察程序中INTR_init()函数的定义部分,其中IPVD和IPVH的值都为0x0d0;同时
观察配置文件ICETEK–VC5509-AE.cmd中的VECT段描述中o=0x0d000。