第六章 定时器 6.1 定时器模块概述 S12X定时器模块在标准定时器(TIM)基础上增加了一些新功能,称为增强型定时器模块(Enhanced Capture Timer Module, ECT) 有以下特点: 1个16位自由运行计数器; 8个具有16位缓冲寄存器的输入捕捉通道; 4个8位脉冲累加器可以通过级联形成2个16位的脉冲累加器(A/B)

Slides:



Advertisements
Similar presentations
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
Advertisements

单片机技术及应用 河南信息工程学校 电子工程系.
(2)资产阶级统治最终确立,资产阶级、 无产阶级对立; (3)东方落后,西方先进
实验四 利用中规模芯片设计时序电路(二).
5.4 顺序脉冲发生器、 三态逻辑和微机总线接口 顺序脉冲发生器 顺序脉冲 计数型 分类 移位型.
单片机应用技术 项目二 电子打铃装置 第4讲 单片机的定时器/ 计数器 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
ATmega128单片机 概述、系统结构 夏洁 2009年3月.
第09章 PWM脉宽调制 PULSE WIDTH MODULATION---数字脉冲输出
第5章 定时计数技术 单片机控制系统中常常用到的定时与计数问题。 5.1 定时计数概述 5.2 MCS-51单片机的定时计数器.
Roy Wan PCI MS/s 14-bit 高速数字化仪 Roy Wan
走进编程 程序的顺序结构(二).
第九讲 增强型脉冲捕获模块eCAP 《手把手教你学DSP——基于TMS320F28335》配套视频资料 南京研旭电气科技有限公司
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月20日.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
时序逻辑电路实验 一、 实验目的 1.熟悉集成计数器的功能和使用方法; 2.利用集成计数器设计任意进制计数器。 二、实验原理
实验七 计数器及其应用 一.实验目的 1.掌握中规模集成计数器的使用方法和功能测试方法 2. 运用集成计数器构成任意模值计数器
逆向工程-汇编语言
CPU结构和功能.
14.2 时序逻辑电路的分析 概述 时序逻辑电路是由存储电路和组合逻辑电路共同组成的,它的输出状态不仅与输入有关,还与电路的过去状态有关,即具有存储功能。 输入信号 输出信号 输出方程 驱动方程 描述时序逻辑电路的三个方程 状态方程 存储电路的输入信号 时序逻辑电路构成框图 存储电路的输出信号.
第五章 MCS-51中断与定时系统.
主要内容 定时/计数器的工作原理模式 定时/计数器的工作方式 定时/计数器的应用
S3C44B0X PWM定时器 功能及应用 第23组 SC 袁 悦 SC 常俊强
Freescale HCS12 微控制器.
移相正弦信号发生器设计 采用直接数字综合器DDS发生器的设计 原理:图1是此电路模型图
第八讲 事件管理器及其应用 DSP原理及其应用技术 8.1 事件管理器功能概述 8.2 通用定时器 8.3 PWM电路 8.4 捕获单元
中 断 王 静 阜阳师范学院 计算机与信息工程学院.
C语言程序设计 主讲教师:陆幼利.
得技通电子 问题 1.0 、选择题:本大题共15个小题,每小题1分,共15分,在每小题给出的四个选项中,只有一项符合题目要求,把所选项前的字母填在括号内。
8051單晶片 蘇恆生 老師.
模块6 S7-200 PLC基本逻辑指令 项目 6.2 电动机Y-减压起动控制设计 项目 6.2 电动机Y-减压起动控制设计
第四章 MCS-51定时器/计数器 一、定时器结构 1.定时器结构框图
数字电子技术 Digital Electronics Technology
K60入门课程 02 首都师范大学物理系 王甜.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
微机原理与接口技术 第6章 并行输入输出接口(8255A)
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
微机原理与接口技术 西安邮电大学计算机学院 杨锐.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
第4章 Excel电子表格制作软件 4.4 函数(一).
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月04日.
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
本节内容 内存复制指令 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
实验二 带进位控制8位算术逻辑运算实验 带进位控制8位算术逻辑运算: ① 带进位运算 ② 保存运算后产生进位
FBs系列PLC 高级应用篇高速计数/定时器
《数字电子技术基础》(第五版)教学课件 清华大学 阎石 王红
5. 1 中 断 概 述 单片机接通电源后将循环执行我们编制好的程序(一般称为主程序),当有外部设备或内部部件要求CPU为其服务时,计算机将被迫“中断”主程序的执行,并记录下暂停处程序地址(断点地址),然后转去为外部设备服务,即执行中断服务程序;在中断程序执行完毕后自动返回被迫中断主程序的地址,继续执行原主程序。
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
第7章 定时/计数器 教学目的:了解80C51系列单片机内部定时器/计数器的结构与工作原理;能够采用查询方式对定时器/计数器的4种工作模式编程、应用。 教学重点:1. 定时/计数器的工作原理; 2. 定时器方式1、2的编程、应用。 教学难点:1.定时/计数器控制寄存器的设置 2.定时初值的设置.
第4章 定时器与计数器 本章内容 定时器/计数器工作原理 定时器/计数器的工作方式 定时器/计数器的应用.
Chapter 18 使用GRASP的对象设计示例.
HSC高速输出例程 HORNER APG.
单片机应用技术 (C语言版) 第7章 定时器/计数器
概述 一、基本要求 1. 有两个稳定的状态(0、1),以表示存储内容; 2. 能够接收、保存和输出信号。 二、现态和次态
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
定时中断与LED MCU起航 QQ:
6.1 定时器/计数器的结构及工作原理 定时器/计数器的结构 定时器/计数器T0、T1的逻辑结构如图6-1所示。
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
得技通电子 问题 三 判断题:.
现代电子技术实验 同步计数器及其应用研究 实验目的 实验原理 实验内容 注意事项.
单片机应用技术 (C语言版) 第6章 中断系统.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
信号发生电路 -非正弦波发生电路.
上节复习(11.14) 1、方式2、方式0的特点? 2、定时/计数器的编程要点? 3、实验5方案优化问题.
第三节 数量积 向量积 混合积 一、向量的数量积 二、向量的向量积 三、向量的混合积 四、小结 思考题.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
上节复习(11.7) 1、定时/计数器的基本原理? 2、定时/计数器的结构组成? 3、定时/计数器的控制关系?
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
DSP技术与应用 电子与信息技术系.
Presentation transcript:

第六章 定时器 6.1 定时器模块概述 S12X定时器模块在标准定时器(TIM)基础上增加了一些新功能,称为增强型定时器模块(Enhanced Capture Timer Module, ECT) 有以下特点: 1个16位自由运行计数器; 8个具有16位缓冲寄存器的输入捕捉通道; 4个8位脉冲累加器可以通过级联形成2个16位的脉冲累加器(A/B) 1个具有4位预分频器的16位递减模数计数器; 4个可选的延迟计数器用来增强输入抗干扰能力。 重庆大学通信工程学院 任勇 王毅

定时器的基本结构 ECT定时器模块的中断---13个中断向量 IOC0 … IOC7 预分频因子 16 位自由计数器 位模数计数器 寄存器组 位脉冲累加器 A B 输入捕捉 输出比较 通道 7 总线时钟 上溢出中断 下溢出中断 定时器通道 中断 ~ PA 溢出中断 输入中断 PB ECT定时器模块的中断---13个中断向量 8个定时器通道产生的中断 1个模数计数器下溢中断 1个脉冲累加器B溢出中断 1个脉冲累加器A输入中断 1个脉冲累加器A溢出中断 1个自由计数器溢出中断 引脚复用:IOC7~IOC0  PT7~PT0 重庆大学通信工程学院 任勇 王毅

6.1.2 输入捕捉/输出比较 输入捕捉是通过捕获自由运行计数器来监视外部事件。主要用于信号检测、频率测量、脉冲宽度和输入计数。 6.1.2 输入捕捉/输出比较 1. 输入捕捉 输入捕捉是通过捕获自由运行计数器来监视外部事件。主要用于信号检测、频率测量、脉冲宽度和输入计数。 输入捕捉的基本过程: 外部事件或信号发生规定变化; 计数寄存器TCNT内容锁存到TCx; CxI= 1  允许中断; 发中断,标志位CxF置位 记录事件发生的时刻、信号变化的时刻; TCxH 实现两次输入捕捉, 产生中断或置位 TCNT  TCx  TCxH 重庆大学通信工程学院 任勇 王毅

有4个非缓冲通道(PT4~PT7)各自具有一个捕捉寄存器。 (1)、非缓冲IC通道 有4个非缓冲通道(PT4~PT7)各自具有一个捕捉寄存器。 可以由输入覆盖控制寄存器ICOVW决定捕捉到的数据是否允许被覆盖(0-覆盖,1-为空时可写)。 (2)、缓冲IC通道 有4个缓冲通道(PT0~PT3)除了各自具有一个捕捉寄存器外,还有一个保持寄存器,可以连续捕捉2次不同时刻的值。 可以工作在锁存方式或队列方式。 (注:锁存方式类似于非缓冲通道,队列方式就是先进先出) 重庆大学通信工程学院 任勇 王毅

输入捕捉功能过程 • 共有8个输入捕捉通道 • 每个通道有自己的向量表和控制寄存器 当外部事件发生时,或外部信号输入发生变化时,记录当前时间 TCNT 比较/捕捉 单元 16位自由运行计数器 OR OR 上升/下降沿 TICx Edge 沿选择 检测 延时 计数器 16位输入捕捉锁存器TCx 引脚 ICx 16位保持寄存器TCxH • 共有8个输入捕捉通道 • 每个通道有自己的向量表和控制寄存器 CxF 捕捉发生时,状态位置1 向CPU发出中断请求 可选中断屏蔽 CxI 应用: ABS 刹车. 雷达测距,发动机 重庆大学通信工程学院 任勇 王毅

2.输出比较 • 在比较匹配的时刻,实际上就是定时时间到,同时还可输出一个信号 比较 中断请求 TCNT TCx • 共有8个输出比较通道 当比较寄存器的值和计数 器的值相等时,采取行动 比如:当TCNT=0x5678 置位 清零 翻转 16位自由运行计数器 OR OR 比较 相等 Pin OCx 比较器 引脚控制逻辑 TCx 16位输出比较寄存器 比如:0x5678 软件可以修改 状态标志位置位, 当比较发生时(值相等时) CxF 中断请求 CxI • 共有8个输出比较通道 • 每个通道有自己的向量表和控制寄存器 重庆大学通信工程学院 任勇 王毅

具体的设置方式参见相关资料,重点是了解其作用和意义。 各控制寄存器的设定 具体的设置方式参见相关资料,重点是了解其作用和意义。 定时器控制寄存器------TCTL3、 TCTL4 EDGxB 输入捕捉沿控制(IC7–IC0) EDGxA ICx EDGE 1 无边沿 – ICx 禁止 上升沿 下降沿 任何沿 注:上/下沿用于测量周期,任何沿用于测量高电平或低电平宽度 OR 输入延迟控制寄存器------DLYCT 注:如果延迟功能有效时,当输入引脚检测到一个有效的边沿后,延迟计数器开始对总线时钟进行计数当到达预先设定的计数值时,延迟计数器才输出一个脉冲,它用来去除噪声 注:实用于低频信号抗干扰,对高频信号不适用 重庆大学通信工程学院 任勇 王毅

定时器中断标志寄存器------TFLG CxF =1:通道x有中断事件发生; ② TFLG2: TOF:定时器溢出标志位 清CxF、TOF标志位的方法:向对应标志位置1 ,实现清除。 BSET TFLG2 , #$80; BSET TFLG1 , #$81 重庆大学通信工程学院 任勇 王毅

定时器系统控制寄存器1------ TSCR1 TEN TSWAI TSFRZ TFFCA Reserved $0006 RST: 0……………………………………………………………………………0 TFFCA – 定时器快速标志位清除使能 0 = 定时器标志位正常清零 1 = 输入捕捉时读取寄存器TCn, 输出比较时写寄存器TCn,可以对相应通道标志位清零。读TCNT清除TOF TSFRZ – 在Freeze模式时, 定时器停止。 0 = 不停止 ; 1 = 停止 TSWAI – 在WAIT模式时,定时器停止 0 = 不停止; 1 = 停止 定时器使能 1 – 定时器/计数器使能 0 – 定时器/计数器禁止 重庆大学通信工程学院 任勇 王毅

定时器系统控制寄存器2------ TSCR2 B7....................................................................................B0 TOI 0 0 0 TCRE PR2 PR1 PR0 $000D 除以 1 2 4 8 16 32 64 128 PR2 PR1 PR0 预分频系数选择 RST: 0 0 0 0 0 0 0 0 1 – 定时器由OC7比较符合时复位 0 – 定时器自由运行 0 – 定时器溢出中断禁止 1 – 定时器溢出中断使能 定时器中断使能寄存器------TIE Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 C7I C6I C5I C4I C3I C2I C1I C0I CxI 定时器计数寄存器------TCNT 时钟的计数,自由运行,高8+低8 ,只读,须按字读取 重庆大学通信工程学院 任勇 王毅

定时器控制寄存器------TCTL1、 TCTL2 B6 B5 B4 B3 B7 B2 B1 B0 输出模式和输出电平 (O7–OC0) OM7 OL7 OM6 OL6 OM5 OL5 OM4 OL4 $0008 TCTL1 RST: 0 0 0 0 0 0 0 0 OMx OLx Action on OCx 1 No Action OCx Toggle OCx Drive OCx LO Drive OCx HI B6 B5 B4 B3 B7 B2 B1 B0 OM3 OL3 OM2 OL2 OM1 OL1 OM0 OL0 TCTL2 $0009 RST: 0 0 0 0 0 0 0 0 IC/OC功能选择寄存器------TIOS 0- 相应通道为输入捕捉,1- 相应通道为输出比较 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 IOS7 IC/OC寄存器------TCx 8个,各16位,可读 OC方式---可写,IC方式---可读,写无效 重庆大学通信工程学院 任勇 王毅

输入引脚PT0~PT3,共4个8位累加器,对应IC0~IC3通道。 6.3脉冲累加器 1.脉冲累加器引脚功能 输入引脚PT0~PT3,共4个8位累加器,对应IC0~IC3通道。 每个通道具有8位脉冲累加器 PAx及8位保持寄存器PAxH PA0+PA1  PACB(16位脉冲累加器B),输入引脚-PT0 PA2+PA3  PACA(16位脉冲累加器A),输入引脚-PT7 2.脉冲累加器工作模式: LATQ=1:锁存模式。PAn --》 PAnH ,打入到累加器的条件: MCCNT计数器减到0 ,即计时到,可以产生中断; 向MCCNT 写0 ,不产生中断; MCCNT对应控制寄存器MCCTL的ICLAT位置1(对所有累加器); LATQ=1 队列模式。当读取TCnH时,PAn --》PAnH 并且 PAn=0; 重庆大学通信工程学院 任勇 王毅

3.脉冲累加器的计数模式 (1)事件计数模式: PEDGE 选择PAI的哪种沿用来增加 PACNT寄存器 16 位计数器 PACNT PT7/PAI 脉冲累加器输入引脚 (1)事件计数模式: PEDGE 选择PAI的哪种沿用来增加 PACNT寄存器 软件选择以什么沿来计数 可选: 计数器溢出时,产生中断 也可在PAI引脚每个主动电平产生中断 PT7/PAI 16 位计数器 PACNT 脉冲累加器输入引脚 (2)门控时间累加模式: PEDGE选择PAI的哪个电平状态用来禁止计数 (比如 PEDGE=0  允许计数 当PAI 为高电平时). 自由运行ECLK/64时钟 软件选择主动电平作为门的输入 可选: 当计数器溢出时产生中断 也可在有效的引脚电平后面的边沿时产生中断 重庆大学通信工程学院 任勇 王毅

脉冲累加控制寄存器(以A为例,B类似) (1) 16位脉冲累加器A控制寄存器PACTL PAEN: 脉冲累加器使能位:1:使能 ;0:禁止 PAMOD:脉冲累加器模式控制位:1:门控方式;0:事件计数 PEDGE:有效边沿设定: PAOVI : 脉冲累加器溢出中断使能:0:禁止 ;1:使能 PAI:脉冲累加器输入中断使能: 0:禁止 ;1:使能 CLK1,CLK2:TCNT计数时钟频率选择 PACLK = 总线频率/64 重庆大学通信工程学院 任勇 王毅

(2) 16位脉冲累加器A 标志寄存器PAFLAG PAOVF : 脉冲累加器溢出中断标志位 PAIF :计数方式下:有效边沿产生计数同时产生中断标志; 事件方式下:输入信号结束边沿产生中断标志 (3) 脉冲累加器计数寄存器PACN3、PACN2PACN32 (=PACNT) PACN3 PACN2 同样:PACN1、PACN0PACN10 (=PBCNT) 重庆大学通信工程学院 任勇 王毅

递减16位计数器 6.4 模数递减计数器 (1)16位模数计数器控制寄存器MCCTCL 6.4 模数递减计数器 递减16位计数器 (1)16位模数计数器控制寄存器MCCTCL MCZI:模数计数器向下溢出中断使能: 0:禁止 :1:使能 MODCM: 0:单次计数方式 ; 1:循环计数方式 RDMCL:模数读取位选择: 0:读回模数计数器当前值; 1:返回加载寄存器的值 ICLAT:捕捉寄存器强制转移控制位 0:无效: 1: TCn TCnH ; PAn PAnH;0  PAn MCEN:模数递减计数器使能位。 0:禁止 1:使能 FLMC:仅写1时,产生模数常数寄存器的内容强制装入MCCNT,复位分频因子 MCPR1,MCPR0: 重庆大学通信工程学院 任勇 王毅

(2)16位模数计数器标志寄存器MCFLG (3)16位模数递减计数寄存器MCCNT MCZF : 模数计数溢出中断标志位 POLF3~0 : 首次捕捉的极性记忆;0=下降沿;1=上升沿 (3)16位模数递减计数寄存器MCCNT 读MCCNT : RDMCL=0 返回计数器当前值; RDMCL=1 返回加载的常数值; 对输入捕捉或脉冲累加,如果设置为锁存模式且输入缓冲使能(LATQ=1,BUFFEN=1),写$0000到MCCNT锁存TC 、PA到保持寄存器 ;并且MCCNT保持为0 ,不会产生中断标志置1; 对应循环使用方式(MODMC=1),写入MCCNT的数据,在MCCNT回零后才生效,非立即生效。 对于单次计数方式(MODMC=0),写MCCNT,清零MCCNT,然后并用新值更新计数器,然后重新开始递减计数。 重庆大学通信工程学院 任勇 王毅

模数递减(向下)计数器 MCCNT 向下计数至0 二进制向下计数器. 可以完全控制计数起始值 装载 执行动作 二进制向下计数器. 可以完全控制计数起始值 应用于精确事件计时-用于产生周期性的标志位和中断 主定时器单独运行。时钟来自总线时钟,并经过预分频。 可以被设置为定时中断或产生标志位。或装载初始值后向下计数到$0000。 重庆大学通信工程学院 任勇 王毅

关于TCNT、 PAI、MCCNT总结 TCNT:一直运行。每当条件满足, 产生捕捉或输出比较; 脉冲累加器以输入为时钟, 或输入作为控制计数的起始/结束 MCCNT:可以随时进去控制计时的开始,作为锁存模式时间控制的基础,并形成打入锁存的信号。 重庆大学通信工程学院 任勇 王毅

【例6-1】OC定时 别忘: 在整个源程序的末尾声明定时器通道0中断的矢量地址所对应的中断服务程序名: ORG $FFEE 定时时间= TCx预置数 x 总线周期 x 分频系数=46875x500nsx128=3s 实际上需算: TCx预置数= 定时时间/(总线周期x分频) 另加:当前TCNT值 别忘: 在整个源程序的末尾声明定时器通道0中断的矢量地址所对应的中断服务程序名: ORG $FFEE FDB TC0_ISR 重庆大学通信工程学院 任勇 王毅

OC7比较成功时,TCNT可设为自动复位…… 程序见书 重庆大学通信工程学院 任勇 王毅

【例6-3】利用IC对通道6的脉冲信号进行计数。下降沿,计数值送B口。 byte nPulseNums; //定义全局变量 void main() { DisableInterrupts; //关总中断, = asm SEI PORTB=0x00; //设B口初值 DDRB=0xFF; //设B口为输出 nPulseNums=0; //计数脉冲数先清零 TSCR2=0x07; //禁止定时器溢出中断,预分频系数128 TIOS=0xBF; //定时器通道6为IC方式 TCTL3=0x20; //IC6下降沿捕捉 TFLG1=0x40; //写1清除通道6中断标志 TIE=0x40; //定时器计数器通道6中断使能 TSCR1=0x80; //定时器使能 EnableInterrupts; //开总中断, = asm CLI for(;;) //无限循环等待 //... ... //其它处理 } #pragma CODE_SEG NON_BANKED //中断服务函数定位声明 interrupt 14 void Timer6_ISR() DisableInterrupts; TFLG1=0x40; //写1清除通道6中断标志 nPulseNums++; //脉冲数加1 PORTB=nPulseNums; //B口输出脉冲计数值 EnableInterrupts; 【例6-3】利用IC对通道6的脉冲信号进行计数。下降沿,计数值送B口。 注:其中中断服务子程序中关键词“interrupt”后的序号“14”即是定时计数器通道6的中断向量号。 重庆大学通信工程学院 任勇 王毅

100ms中断要求,采用16位脉冲累加器A计数脉冲个数(PT7引脚) MCCNT = 100ms/125ns/16=50000 word nPulseNums; //定义全局变量 void main() { DisableInterrupts; //关总中断, = asm SEI DDRB=0x00; PORTB=0xFF; nPulseNums=0; TIOS=0x00; //定时器通道为输入捕捉 PACTL=0x54; //PA使能,计数,上升沿,禁溢出、输入中断,使用PACLK DLYCT=0x01; //设输入信号的持续时间应大于256个Tbus,防干扰 MCFLG=0x80; //清除模数计数器下溢出标志 MCCNT=50000; //写模数计数器常数 MCCTL=0xC7; //MDC使能,下溢出中断使能,循环计数,预分频常数16 EnableInterrupts; //开总中断, = asm CLI for(;;) //总的循环等待 //... ... //其它处理 } #pragma CODE_SEG NON_BANKED //中断服务函数定位声明 interrupt 26 void MDC_ISR() DisableInterrupts; nPulseNums=PACN32; //读取脉冲累加器的计数值 PACN32=0; //清除脉冲累加器的计数值 //PACNT=0; PORTB=~PORTB; EnableInterrupts; 【例6-4】检测100ms中外来脉冲数 晶振频率= 16MHZ 总线频率= 晶振/2 = 8MHz 总线周期= 1/8000000=125ns MCCNT下溢出中断周期 =总线周期 x 预分频 x MCCNT MCCNT =下溢出中断周期/总线周期/预分频 100ms中断要求,采用16位脉冲累加器A计数脉冲个数(PT7引脚) MCCNT = 100ms/125ns/16=50000 程序 注:其中中断服务子程序中关键词“interrupt”后的序号“26”即是模数递减计数器下溢出的中断向量号。 重庆大学通信工程学院 任勇 王毅

6.2 PIT周期中断定时器 4个具有独立定时周期的模数递减计数器。 4个定时中断。 4个定时输出信号,可用来触发外围模块。 4定时器通道开始时间可以对齐。 每通道定时器可以被独立地使用。 每通道定时器都是24位计数,定时周期可在1到224总线时钟周期内选择。 总线时钟 8位 微定时器1 微定时器0 16位定时器0 16位定时器1 16位定时器2 16位定时器3 中断、触发接口 微时基0 微时基1 超时0 超时1 超时2 超时3 中断0 触发0 中断3 触发3 中断2 触发2 中断1 触发1 寄存器组 重庆大学通信工程学院 任勇 王毅

PIT中4个定时周期的中断申请的向量地址为: ● 通道0中断------基地址+$7A (复位默认$FF7A) 每当16位定时器计数器和连接的8位微定时器计数器已经到达0,预装载的寄存器值会重新装载。超时时间到,PIT超时标志寄存器(PITTF)中相应的PTF位置位。 超时时间(Time-out-period)是一个关于定时器装载寄存器(PITLD)、微定时器装载寄存器(PITMTLD)和总线时钟频率fBUS的公式: Time-out-period = (PITMTLD + 1) x (PITLD + 1) / fBUS 例如,一个40MHz的总线时钟,最大超时时间等于: 256 x 65536 x 25 ns = 419.43 ms PIT超时中断 每个超时事件可以被用来触发一个中断服务请求。对于每个定时器通道,PIT中断使能寄存器(PITINTE)中的设置位独立地使能中断,当超时标志寄存器(PITTF)中相应的标志位置位时,将会发生中断服务请求。 PIT中4个定时周期的中断申请的向量地址为: ● 通道0中断------基地址+$7A (复位默认$FF7A) ● 通道1中断------基地址+$78 (复位默认$FF78) ● 通道2中断------基地址+$76 (复位默认$FF76) ● 通道3中断------基地址+$74 (复位默认$FF74) 重庆大学通信工程学院 任勇 王毅

PIT寄存器 一般,在PIT模块初始化完成前,先不要使能PIT定时模块,这样可以避免刚开始一段的定时不准确;等完成了装载寄存器的设置、8位微计数器的选择、定时器通道的打开等初始化工作后,再使能PIT定时模块。 【例6-5】定时时间500ms,每时间到输出翻转电平到B口,B口接有8个LED灯,程序实现1s周期的LED灯闪烁。假设总线频率为8MHz(总线周期即为125ns)。 思想:采用PIT周期中断定时器通道0,在已知定时时间和总线时钟周期的情况下,在初始化时除设置B口、选择PIT通道外,主要需要计算并设置PIT的8位微计数器的装载寄存器值和16位计数器的装载寄存器值;然后使能中断,在中断服务程序中进行点亮/熄灭LED的翻转电平输出。 根据: Time-out-period = (PITMTLD+1) x (PITLD+1) / fBUS = 500ms 预定: PITMTLD =99,使(PITMTLD+1) = 100 则有: PITLD = (500ms / 100 / TBUS) -1 = 5ms /125ns-1=40000-1=39999 重庆大学通信工程学院 任勇 王毅

DisableInterrupts; //关总中断, = asm SEI DDRB=0xFF; //设B口为输出 void main() { DisableInterrupts; //关总中断, = asm SEI DDRB=0xFF; //设B口为输出 PORTB=0xFF; //熄灭LED PITCFLMT=0x00; //关闭PIT模块 PITMUX=0x00; //使用通道0使用微计数器0 PITMTLD0=99; //设置微计数器0的装载寄存器 PITLD0=39999; //设置16位计数器0的装载寄存器 PITINTE=0x01; //使能PIT通道0的中断 PITCE=0x01; //使能PIT通道0计数 PITCFLMT=0x80; //使能PIT模块 EnableInterrupts; //开总中断, = asm CLI for(;;) //无限循环等待 { } } #pragma CODE_SEG NON_BANKED //中断函数定位声明 interrupt void PIT0_ISR() PITTF=0x01; PORTB=~PORTB; //B口取反,输出翻转电平 注意:本例中中断服务函数PIT0_ISR没有直接表明中断向量号(66), 所以要在CodeWarrior工程对应的prm文件中添加一行中断向量位置定义: VECTOR 66 PIT0_ISR 当然,也可直接将中断函数名写成interrupt 66 void PIT0_ISR(),就不必另行定义。 重庆大学通信工程学院 任勇 王毅

TIM模块有哪4种主要功能?其相关引脚IOC0~IOC7与哪个并行I/O口复用? 本章习题: TIM模块有哪4种主要功能?其相关引脚IOC0~IOC7与哪个并行I/O口复用? TIM的输入捕捉和输出比较功能可分别被用作定时还是计数?其核心计数器TCNT有什么特点?计数时钟来源于哪里? 汇编语言编程:利用TIM的通道0输出比较功能实现PT0引脚输出周期为20ms的方波。 汇编语言编程:结合TIM的输入捕捉与输出比较功能检测的通道7输入的脉冲周期。 C语言编程:利用TIM的通道1输入捕捉功能实现每来5个脉冲亮灭一下B口LED4~LED7灯。 理解书例4.4.4实例:使用C语言的定时器中断控制程序。 指定定时时间情况下,PIT定时器初始化的C编程。 重庆大学通信工程学院 任勇 王毅