实验2 中断模拟实验.

Slides:



Advertisements
Similar presentations
定 格 入 格 破 格 —— 新诗仿写复习训练 仿照下列句子,再把 “ 人生 ” 比喻成 “ 大海 ”“ 天空 ” , 造两个句子。 如果说人生是一首优美的乐曲,那么痛苦则 是其中一个不可或缺的音符。 参考答案: 1 、如果说人生是一望无际的大海,那么挫折则 是其中一个骤然翻起的浪花。 2 、如果说人生是一片湛蓝的天空,那么失意则.
Advertisements

汽車美容介紹. 汽車的外部構造 哪些是汽車 ?? 汽車 哪些是汽車 ?? 腳踏車 汽車 哪些是汽車 ?? 機車 汽車.
1 I/O 设备访问方式和类型. 2 Overview n The two main jobs of a computer: l I/O (Input/Output) l processing n The control of devices connneted to the computer is.
DSP技术及应用 Digital Signal Processor 数字信号处理器.
C语言程序设计 主讲教师 :张群燕 电话:
寫作教學—標點符號.
2011计算机类教研活动 陈国久.
組長:5號-周辰瑜 組員:4號-王耀賢 10號-康叡維 11號-張佳文 27號-鍾昱卉
Word高级应用——制作毕业论文 Word高级应用——制作毕业论文 6..
興華之寶.
第一章 C语言概述 计算机公共教学部.
2 职业生涯与人生 梦想 寻找适合自己的道路 1) 职业生涯的含义:
第七章 异常控制流 CPU控制流的概念 进程上下文切换 异常和中断的基本概念 异常和中断的响应和处理
Chapter 6 時序.
2017/3/22 如何用C 来完成SN8系列芯片的程序设计 2017/3/22.
申請土地徵收注意事項 內政部地政司 邱于蓉.
寫 作 教 學 6 電腦與我 時代改變,科技進步,電腦成為日常生活不可或缺的設備。我是二十一世紀的E世代少年,一隻滑鼠在手,樂趣無窮。
卫生监督协管服务 张家口市卫生监督所.
第5章 中央處理單元與主記憶體 5-1 中央處理單元-CPU 5-2 主記憶體.
第7章 中斷系統.
主讲教师:吴琼 微信群:C语言2016 QQ群: 密码scu2016 昵称:“真名+学号”
Timer & KEYPAD 11/24.
作業系統 第八章 記憶體管理.
第7章 汇编语言程序设计 7.1 程序流程控制 7.2 数据块传送 7.3 定点数的基本算术运算 7.4 长字运算和并行运算
第三章 系统的启动和初始化 (include lab1)
第五章 MSP430中斷式數位I/O.
Function.
专题 DSP McBSP设计 制作:DSP技术中心 主讲:李玉柏
… 第一节 外设的定时方式与信息交换 一、外围设备的定时方式 CPU 1、速度极慢或简单的外围设备 2、慢速或中速的外围设备
人生哲理 每一句話都充滿著智慧,值得和朋友們分享、共勉~ <每隔 6 秒,自動換頁 !!>
微机原理及应用 主讲:郑海春.
初始化串列通訊埠 在啟始串列傳輸介面時有以下3個步驟:假設傳輸的通訊協定為9600bps,傳送8個位元資料,沒有同位位元,1個停止位元。
第七章 定时/计数器.
‘C54x寻址方式 ‘C54x特殊寻址方式说明 ‘C54x指令集 ‘C54x特殊指令使用说明
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞.
第9章 DSP集成开发环境CCS 内容提要 CCS是TI公司推出的用于开发DSP芯片的集成开发环境,它采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP芯片的开发与设计,是目前使用最为广泛的DSP开发软件之一。 本章对CCS开发软件的使用作了详细地介绍。首先,对CCS开发软件作了简要地说明,并介绍了该软件的安装及配置;其次,介绍了CCS的基本操作,包括:CCS的窗口和工具条、文件的编辑、反汇编窗口、存储器窗口、寄存器窗口、观察窗口
Ch9 Communicating with Hardware
第五章 C/C++及汇编语言的混合编程 5.1 ARM C/C++编译器 5.2 在C/C++程序中内嵌汇编指令
計數式重複敘述 for 迴圈 P
第6章 预 处 理.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
合泰半导体股份有限公司 技术讲座 - Holtek V3 C Compiler介绍 主讲人:王幼端 2017/06/15.
Holtek C Compiler V3--advanced
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
嵌入式系统实验 ● 交叉开发实验 ● 仿真开发实验.
单片机原理与应用 主讲人:张荣刚 福建师范大学福清分校.
第11章 位运算 为了节省内存空间,在系统软件中常将多个标志状态简单地组合在一起,存储到一个字节(或字)中。C语言是为研制系统软件而设计的,所以她提供了实现将标志状态从标志字节中分离出来的位运算功能。 所谓位运算是指,按二进制位进行的运算。 11.1 数值在计算机中的表示 11.2.
指標
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
第十四章 若干深入问题和C独有的特性 作业: 函数指针 函数作参数 函数副作用 运算 语句 位段 存储类别 编译预处理
C程序设计.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第五章 输入/输出系统 本章讨论: 接口的基本概念 总线的基本概念 中断方式及其接口组成 中断方式及其接口组成 DMA方式及其接口组成
项目1 C程序设计起步 学习目标: 通过该项目你可以知道: C语言的用途。 C语言的基本符号和关键字。 C语言程序的结构及特点。
4-12 外部中斷 HT66F70A.
第6章 预 处 理.
第7章 程序的结构 四、生存期与存储属性 五、extern关键字与外部连接属性 六、static关键字与内部连接属性.
第二章 类型、对象、运算符和表达式.
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
数字图像处理(二).
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
#include <iostream.h>
第十二章 位运算.
英語職涯規劃 移民署職場生涯 5.2.1善用慈濟資源‧提升職涯就業力.
单片机应用技术 (C语言版) 第4章 C51程序设计入门
手机淘宝“变形”产品—微淘 操作流程指南 (内测版).
第4章 汇编语言程序设计 本章结合C54x的软件开发过程,介绍DSP所采用的COFF目标文件格式、结构和规范。
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
微型计算机系统.
96 教育部專案補助計畫案明細 單位 系所 教育部補助款 學校配合款 工作໨目 計畫主 持人 備註 設備費 業務費 579,000
Presentation transcript:

实验2 中断模拟实验

试验目的 掌握中断的含义和中断响应过程。 掌握用CCS simulator模拟中断的方法。 掌握中断应用程序的编写方法。

摘要 复习C54x中断操作 模拟中断的方法 实验内容及步骤

试验原理 中断是一些由硬件或软件产生的信号,能使CPU暂时停止执行正在执行的程序,转而执行由DSP程序开发者编写的中断服务程序(ISR—— Interrupt Service Routine) C54x既支持软件中断也支持硬件中断 软件中断,是由指令 (INTR、TRAP、RESET) 产生的。 硬件中断: 外部中断——通过DSP外部中断引脚接收到的片外设备产生的中断(例如ADC/DAC向DSP发出的中断) 片上外设中断——DSP片上外设 (如定时器、串口、DMA等) 向CPU发出的中断 当同一CPU时钟周期内有多个硬件中断发生时,CPU会按照中断优先级对它们进行响应 ! 软件中断无优先级。

可屏蔽和非可屏蔽中断 DSP的中断可分为两大类: 可屏蔽 (Maskable) 中断:可以通过软件被禁止/使能的中断。被禁止掉的中断即使产生,CPU 也不会去响应 !被使能的中断,当它产生时 CPU 就会去响应它 ! 非可屏蔽 (Nonmaskable) 中断:不能被禁止的中断。当这些中断产生时 CPU 会无条件响应 !C54x 的非可屏蔽中断有: 所有的软件中断 ! 外部中断 NMI (DSP外部中断引脚NMI) 复位中断 RS (DSP外部中断引脚RS) CPU在响应 NMI 中断时,将不能被任何其他中断打断 !包括复位中断 !

IFR IFR (Interrupt Flag Register) 中断标志寄存器 (地址0x01) 当一个可屏蔽中断产生时,IFR中相应的中断标志位会被置1,当CPU响应该中断后,该标志位才被清除 ! 清除中断标志还可通过: 软件或硬件复位; 向标志位写1; 使用INTR #K指令响应该中断 15-14 13 12 11 10 9 8 7 Reserved DMAC5 DMAC4 BXINT1 /DMAC3 BRINT1 /DMAC2 HPINT INT3 TINT1 /DMAC1 6 5 4 3 2 1 DMAC0 BXINT0 BRINT0 TINT0 INT2 INT1 INT0 C5402 DSP 的 IFR 寄存器

IMR IMR (Interrupt Mask Register) 中断屏蔽寄存器 (地址0x00) 当 ST1 的 INTM 位为 0 时,IMR 可用于禁止和使能可屏蔽中断,向 IMR 中的某个屏蔽位写 1 就能使能相应的可屏蔽中断 !如果写 0,则相应的中断被禁止 ! 11 INTM 中断模式位,可屏蔽中断的全局开关 ! =0 全局开 =1 全局关 ST1: (0x07) 15-14 13 12 11 10 9 8 7 Reserved DMAC5 DMAC4 BXINT1 /DMAC3 BRINT1 /DMAC2 HPINT INT3 TINT1 /DMAC1 6 5 4 3 2 1 DMAC0 BXINT0 BRINT0 TINT0 INT2 INT1 INT0 C5402 DSP 的 IMR 寄存器

C54x 中断响应流程 中断请求产生 Request 中断应答 Acknowledgment 执行用户编写的ISR Y N N Y N Y 可屏蔽中断? INTM=0 ? Y 从ISR返回时,将先前 压入堆栈的 PC 值 弹出放入PC 中 N N Y N IMR屏蔽位=1? 产生应答信号 IACK INTM置1 Y 产生应答信号 IACK 将当前PC值压入堆栈 程序继续从被中断处 运行

PC = (IPTR<<7) + 中断号×4 CPU 如何跳转到 ISR 去执行 ? 中断 INT0 得到应答 Acknowledgment PC = (IPTR<<7) + 中断号×4 执行 C 函数 MyInt0isr PMST: (0x1D) 15 - 7 IPTR 中断向量(表)指针 … … 程序空间 中断向量表 中断 号 中断名称 RS 1 NMI … 16 INT0 17 INT1 18 INT2 4-word space 4-word space B _MyInt0isr NOP 4-word space INT0的 中断向量 NOP 4-word space NOP 4-word space

摘要 复习C54x中断操作 模拟中断的方法 实验内容及步骤

Simulator 下模拟中断 编写引脚文件,指示出中断产生的时间! 将引脚文件和相应的中断引脚进行“连接”! 装载并运行程序后,CCS会根据引脚文件中设置的时间来产生模拟的中断信号!

引脚文件(.txt) 文件内容 含义 100 120 300 分别在第 100、120、300 个CPU clock时产生中断 100 120 300 分别在第 100、120、300 个CPU clock时产生中断 100 +20 300 同上,分别在第 100、120、300 个CPU clock时产生中断 5 (+10) rpt 3 分别在第 5、15、25、35 个CPU clock时产生中断 5 (+10 +20) rpt 2 分别在第 5、15、35、45、65 个CPU clock时产生中断 100 (+200) rpt EOS 分别在第 100、300、500、700… 个CPU clock时产生中断,无限循环!

引脚文件和中断引脚的“连接” Tools → Pin connect

实验内容 在C54x Device Simulator模式下,编写引脚文件模拟部中断0 (INT0) 的产生。

实验步骤 使用CCS Setup添加“C5402 Device Simulator”配置到系统中;运行CCS,进入Simulator工作模式。 编写引脚文件 intsim.txt 包含: 10000 (+10000) rpt EOS 使用 Tools Pin Connect 工具将该引脚文件连接到引脚 INT0。 建立一个CCS项目,包含下列文件 main.c 使能并打开中断 isr.c 中断服务函数 vectors.asm 中断向量表 linker.cmd 链接器命令文件

实验环境建立

main.c #include <stdio.h> #define IMR *(unsigned int *)0x0000 #define IFR *(unsigned int *)0x0001 #define ST1 *(unsigned int *)0x0007 #define PMST *(unsigned int *)0x001D int INTtimes; void main() { asm(" SSBX INTM"); PMST = 0x00A0; IFR = 0xFFFF; IMR = 0x0001; asm(" RSBX INTM"); puts("interrupt enabled !"); INTtimes = 0; while(1) { }

isr.c #include <stdio.h> extern int INTtimes; interrupt void myisr() { printf("%d\n", ++INTtimes); }

vectors.asm .sect ".vectors" .ref _myisr .align 0x80 Unused .space 16*4*16 int0: B _myisr NOP int1: RETE int2: RETE .end

linker.cmd -lrts.lib -stack 0x400 -heap 0x400 MEMORY { PAGE 0: VECT: o=0x0080, l=0x0080 SRAM: o=0x4000, l=0x3000 PAGE 1: REVS: o=0x1000, l=0x0400 STACK: o=0x1400, l=0x0400 IDRAM: o=0x1800, l=0x2800 } SECTIONS .vectors: > VECT .text: > SRAM .cinit: > SRAM .stack: > STACK .bss: > IDRAM .const: > IDRAM .cio: > IDRAM .sysmem > IDRAM

实验内容和步骤 构建可执行模块。 装载并运行后观察结果。 修改程序,使其响应INT1中断。 重新构建、装载并运行后观察结果。

实验报告要求 中断发生时程序是如何转移到ISR的? 如何编程实现对中断的响应 ? 附.c程序和.asm程序(中断向量表),并添加注释,说明一些关键语句的含义。