飞思卡尔9S12 ECT模块 ae输出模块设置在哪里比较功能

/** ################################################################### **
: Project_2.c **
: Project_2 **
Processor : MC9S12XEP100CAG **
: Driver 01.14 **
: CodeWarrior HCS12X C Compiler **
Date/Time : , 8:55 **
Main module. **
This module contains user's application code. **
No public methods ** ** ###################################################################*/ /* MODULE Project_2 */
/* Including needed modules to compile this module/procedure */ #include \#include \#include \#include \/* Include shared modules, which are used for whole project */ #include \#include \#include \#include \ /* User includes (#include below this line is not maintained by Processor Expert) */ /************************************************************/ /*
初始化ECT模块
*/ /************************************************************/ void initialize_ect(void){
//ECT_TSCR1_TFFCA = 1;
// 定时器标志位快速清除
ECT_TSCR1_TEN = 1;
// 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器)
//指定所有通道为输出比较方式
ECT_TCTL2_OM0 = 0;
// 后四个通道设置为定时器与输出引脚断开
ECT_TCTL2_OL0 = 1;
// 前四个通道设置为定时器与输出引脚断开
ECT_TCTL2_OM1 = 0;
// 后四个通道设置为定时器与输出引脚断开
ECT_TCTL2_OL1 = 1;
// 前四个通道设置为定时器与输出引脚断开
//ECT_DLYCT = 0x00;
// 延迟控制功能禁止
// ECT_ICOVW = 0x00;
// 对应的寄存器允许被覆盖;
NOVWx = 1, 对应的寄存器不允许覆盖
// ECT_ICSYS = 0x00;
// 禁止IC及PAC的保持寄存器
// 禁止所有通道定时中断
ECT_TSCR2 = 0x04;
// 预分频系数pr2-pr0:111,,时钟周期为4us,
ECT_TFLG1 = 0
// 清除各IC/OC中断标志位
//定时器中断标志1
ECT_TFLG2 = 0
// 清除自由定时器中断标志位
// ECT_TC0
} int x,y; void main(void) {
/* Write your local variable definition here */
/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
PE_low_level_init();
/*** End of Processor Expert internal initialization.
initialize_ect();
/* Write your code here */
ECT_TFLG1_C0F = 1;
//清除标志位
ECT_TC0 = ECT_TCNT + 32767;
//设置输出比较时间为0.125s
while(ECT_TFLG1_C0F == 0);
//等待,直到发生输出比较事件
// ECT_TFLG1_C0F = 1;
//清除标志位
// ECT_TC0 = ECT_TCNT + 31250;
//设置输出比较时间为0.125s
// while(ECT_TFLG1_C0F == 0);
//等待,直到发生输出比较事件
/*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/
/*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/ } /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/
/* END Project_2 */ /* ** ################################################################### ** **
This file was created by Processor Expert 3.02 [04.44] **
for the Freescale HCS12X series of microcontrollers. ** ** ################################################################### */ 上传我的文档
 下载
 收藏
粉丝量:60
该文档贡献者很忙,什么也没留下。
 下载此文档
飞思卡尔单片机 ECT学习资料
下载积分:1000
内容提示:飞思卡尔单片机 ECT学习资料
文档格式:DOC|
浏览次数:51|
上传日期: 20:47:18|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1000 积分
下载此文档
该用户还上传了这些文档
飞思卡尔单片机 ECT学习资料
关注微信公众号赞助商链接
当前位置: >>
飞思卡尔MC9S12XS128常用模块程序历程
目录目录 .................................................................................................................................................. I 第一章 PWM模块 ...........................................................................................................................1 第一节 PWM模块介绍 .........................................................................................................1 第二节 PWM寄存器简介 .....................................................................................................2 2.1 PWME寄存器 ........................................................................................................2 2.2 PWMPOL寄存器...................................................................................................2 2.3 PWMCLK寄存器 ..................................................................................................3 2.4 PWMPRCLK寄存器 .............................................................................................3 2.5 PWMCAE寄存器 ..................................................................................................4 2.6 PWMCTL寄存器...................................................................................................4 2.7 PWMSCLA寄存器 ................................................................................................5 2.8 PWMCNTx寄存器 ................................................................................................5 2.9 PWMPERx寄存器 .................................................................................................6 2.10 PWMDTYx寄存器 ................................................................................................7 第三节 PWM应用实例 .........................................................................................................8 3.1 周期和占空比计算举例 ..........................................................................................8 3.2 PWM初始化步骤总结 ............................................................................................9 3.3 PWM应用实例 ........................................................................................................9 第二章 ECT模块 ...........................................................................................................................12 第一节 ECT模块介绍 .........................................................................................................12 1.1 简述..........................................................................................................................12 1.2 特征..........................................................................................................................12 1.3 运行模式..................................................................................................................12 1.4 ECT的组成与工作模式 ...........................................................................................13 1.5 ECT的工作过程与设置 ...........................................................................................15 第二节 ECT寄存器简介 .....................................................................................................19 2.1 IC/OC选择寄存器(TIOS).................................................................................19 2.2 输出比较通道 7 屏蔽寄存器(OC7M) ................................................................20 2.3 输出比较通道 7 数据寄存器(OC7D).................................................................20 2.4 定时器核心寄存器(TCNT).................................................................................21 2.5 计时器系统控制寄存器 1(TSCR1) ...............................................................21 2.6 计时器溢出绑定寄存器 1(TTOV) ................................................................22 2.7 控制寄存器(TCTLl-TCTL4) .........................................................................23 2.8 计时器中断使能寄存器(TIE) ........................................................................24 2.9 计时器系统控制寄存器 2(TSCR2) ....................................................................24 2.10 主定时器中断标志寄存器(TFLG1、TFLG2) ...................................................25 2.11 IC/OC寄存器(TC0-TC7) ..................................................................................26 2.12 脉冲累加器A控制寄存器(PACTL)....................................................................27 2.13 脉冲累加器A标志寄存器(PAFLG)....................................................................28 2.14 脉冲累加寄存器(PACN3、PACN2、PACN1、PACN0).................................29I 2.15 模数递减计数器控制寄存器(MCCTL)..............................................................30 2.16 输入脉冲累加器控制寄存器(ICPAR) ...............................................................31 2.17 输入覆盖控制寄存器(ICOVW)..........................................................................31 2.18 输入系统控制寄存器(ICSYS)............................................................................32 2.19 脉冲累加器B控制寄存器(PBCTL) ....................................................................33 2.20 脉冲累加器B标志寄存器(PBFLG) ....................................................................34 2.21 脉冲累加器保持寄存器(PA3H-PA0H) .........................................................34 2.22 模数递减计数器工作寄存器(MCCNT) .............................................................35 2.23 IC保持寄存器(TC0H-TC3H).........................................................................35 第三节 ECT应用实例 .........................................................................................................37 3.1 定时器编程步骤 ....................................................................................................37 3.2 输入捕捉IC: ........................................................................................................37 3.3 通道 6 输出比较 ....................................................................................................38 3.4 通道 7 输出比较 ....................................................................................................39 3.5 模数递减计数器 ....................................................................................................40 第三章 SCI模块 ............................................................................................................................42 第一节 SCI寄存器简介 ......................................................................................................42 1.1 波特率控制寄存器(SCIBDH、SCIBDL) ............................................................42 1.2 控制寄存器 1(SCICR1).........................................................................................43 1.3 控制寄存器 2(SCICR2).........................................................................................44 1.4 状态寄存器 1(SCISR1) ....................................................................................45 1.5 状态寄存器 2(SCISR2) .........................................................................................47 1.6 数据寄存器(SCIDRH、SCIDRL) ........................................................................47 第二节 SCI应用示例 ..........................................................................................................48 第四章 SPI模块 .............................................................................................................................53 第一节 SPI模块介绍 ...........................................................................................................53 1.1 SPI的功能特点 ......................................................................................................53 1.2 SPl的组成与工作设置 ..........................................................................................54 第二节 SPI寄存器简介 .......................................................................................................60 2.1 SPI控制寄存器 1(SPICR1) ...................................................................................60 2.2 SPI控制寄存器 2(SPICR2) ...................................................................................62 2.3 SPI波特率选择寄存器 ..........................................................................................62 2.4 SPI状态寄存器 ......................................................................................................63 2.5 SPI数据寄存器 ......................................................................................................64 第三节 SPI应用实例 ...........................................................................................................64 第五章 A/D转换模块 ....................................................................................................................67 第一节 A/D模块介绍 ..........................................................................................................67 1.1 A/D转换原理 .........................................................................................................67 1.2 A/D转换原理的应用前景 .....................................................................................67 1.3 A/D转换模块 .........................................................................................................67 1.4 功能结构图 ............................................................................................................68 1.5 HCS12A/D特点 .....................................................................................................68 第二节 A/D寄存器简介 ......................................................................................................69 2.1 控制寄存器 2(ATDCTL2) ...............................................................................69II 2.2 控制寄存器 3(ATDCTL3) ...............................................................................71 2.3 控制寄存器 4(ATDCTL4) ...............................................................................71 2.4 控制寄存器 5(ATDCTL5) ...............................................................................73 第三节 A/D应用示例 ..........................................................................................................74 3.1 编程步骤 ................................................................................................................74 3.2 A/D程序示例―单通道查询 .................................................................................74 3.3 A/D程序示例―滤波 .............................................................................................75 3.4 A/D程序示例―定时采样 .....................................................................................76 第六章 EEPROM模块 ..................................................................................................................79 第一节 EEPROM模块介绍.................................................................................................79 1.1 EEPROM功能 .......................................................................................................79 1.2 EEPROM结构 .......................................................................................................79 1.3 EEPROM特点 .......................................................................................................80 第二节 EEPROM寄存器简介.............................................................................................80 2.1 时钟分频寄存器ECLKDIV ..................................................................................80 2.2 配置寄存器ECNFG...............................................................................................81 2.3 保护寄存器EPROT ...............................................................................................81 2.4 状态寄存器ESTAT ...............................................................................................82 2.5 命令寄存器ECMD ................................................................................................84 第三节 EEPROM应用实例.................................................................................................85 3.1 EEPROM的写入操作............................................................................................85 3.2 EEPROM的擦除操作............................................................................................85 3.3 EEPROM示例程序................................................................................................86 第七章 FLASH模块 ......................................................................................................................91 第一节 FLASH模块介绍 ....................................................................................................91 1.1 FLASH功能 ...........................................................................................................91 1.2 FLASH结构 ...........................................................................................................91 1.3 FLASH特点 ...........................................................................................................92 第二节 FLASH寄存器简介 ................................................................................................92 2.1 时钟分频寄存器FCLKDIV ....................................................................................93 2.2 配置寄存器 FCNFG...............................................................................................94 2.3 安全寄存器 FSEC ..................................................................................................94 2.4 保护寄存器 FPROT ...............................................................................................95 2.5 状态寄存器 FSTAT 状态寄存器 ..........................................................................96 2.6 命令寄存器 FCMD ................................................................................................98 第三节 FLASH应用实例 ....................................................................................................98 3.1 FLASH的写入操作 ...............................................................................................98 3.2 FLASH的擦除操作 ...............................................................................................99 3.3 FLASH的擦写操作注意事项 .............................................................................100 3.4 FLASH示例程序 .................................................................................................100 第八章 CodeWarrior IDE 12 应用 ..............................................................................................103III 第一章PWM 模块第一章 PWM模块第一节 PWM模块介绍PWM 调制波有 8 个输出通道,每一个输出通道都可以独立的进行输出。每 一个输出通道都有一个精确的计数器(计算脉冲的个数) ,一个周期控制寄存器 和两个可供选择的时钟源。 每一个 PWM 输出通道都能调制出占空比从 0―100% 变化的波形。 PWM 的主要特点有: 1、它有 8 个独立的输出通道,并且通过编程可控制其输出波形的周期。 2、每一个输出通道都有一个精确的计数器。 3、每一个通道的 PWM 输出使能都可以由编程来控制。 4、PWM 输出波形的翻转控制可以通过编程来实现。 5、周期和脉宽可以被双缓冲。当通道关闭或 PWM 计数器为 0 时,改变周 期和脉宽才起作用。 6、8 字节或 16 字节的通道协议。 7、有 4 个时钟源可供选择(A、SA、B、SB) ,他们提供了一个宽范围的时 钟频率。 8、通过编程可以实现希望的时钟周期。 9、具有遇到紧急情况关闭程序的功能。 10、每一个通道都可以通过编程实现左对齐输出还是居中对齐输出。1 第一章PWM 模块本页已使用福昕阅读器进行编辑。 福昕软件(C)2005-2009,版权所有, 仅供试用。第二节2.1 PWME寄存器PWM寄存器简介PWME 寄存器每一位如图 2 所示:图2PWME 寄存器每一个 PWM 的输出通道都有一个使能位 PWMEx。它是用来启动和关闭波 形输出的。当任意的 PWMEx 位置 1,则相关的 PWM 输出通道就立刻可用。然 而实际的 PWM 波形的输出还取决于时钟源。 此寄存器在任何时间都是可读、可写的,复位时全置 0。 用法: PWME7=1; PWME7=0; 7 通道可对外输出波形。 7 通道不能对外输出波形。注意:在通道使能后所输出的第一个波形可能是不规则的。当输出通道工作 在串联模式时(PWMCTL 寄存器中的 CONxx 位被设置) ,那么使能相应的 16 位 PWM 输出通道是由 PWMEx 的低电平位控制的(详情见 PWMCTL 寄存器) 。2.2PWMPOL寄存器PWMPOL 寄存器每一位如图 3 所示:图 3 PWMPOL 寄存器 每一个 PWM 输出通道的波形都可以选择是在高电平时翻转, 还是在低电平 时翻转。此功能就是由 PWMPOL 寄存器实现的。 此寄存器在任何时间都是可读、可写的,复位时全置 0。 用法:PWMPOL0=1; 0 通道对外输出波形先是高电平然后再变为低电平。2 第一章PWM 模块本页已使用福昕阅读器进行编辑。 福昕软件(C)2005-2009,版权所有, 仅供试用。PWMPOL0=0;0 通道对外输出波形先是低电平然后再变为高电平。2.3PWMCLK寄存器PWMCLK 寄存器每一位如图 4 所示:图 4 PWMCLK 寄存器PWM时钟选择寄存器每一个 PWM 输出通道都有两个时钟可供选择(A、SA 或 B、SB) 。0、1、 4、5 通道可选用 A、SA 时钟,2、3、6、7 通道可选用 B、SB 通道。此寄存器 在任何时间都是可读、可写的,复位时全置 0。应当注意的是,如果当一个 PWM 输出波形正在产生时,时钟改变,这时就会产生一个平头的或线形脉冲。 此寄存器在任何时间都是可读、可写的,复位时全置 0。 用法: PCLK1=1; PCLK1=0; 1 通道的时钟源设为 SA。 1 通道的时钟源设为 A。2.4PWMPRCLK寄存器PWMPRCLK 寄存器每一位如图 5 所示:图 5 PWMPRCLK 寄存器 PWMPRCLK 寄存器是单独用来给时钟源 A、B 进行预分频的。 PCKB2―PCKB0 是对 B 时钟源进行预分频。 PCKA2 ―PCKA0 是对 A 时钟 源进行预分频。这 6 位可以随时被读、被写。复位时置 0。 其 A 时钟设置分频值如图 6 所示: 其 B 时钟设置分频值如图 7 所示:3 第一章PWM 模块本页已使用福昕阅读器进行编辑。 福昕软件(C)2005-2009,版权所有, 仅供试用。图6时钟 A 预分频选择值图7时钟 B 预分频选择值2.5PWMCAE寄存器PWMCAE 寄存器每一位如图 8 所示:图 8 PWMCAE 寄存器 PWMCAE 寄存器包含 8 个控制位来对每个 PWM 通道设置左对齐输出或居 中对齐输出。如果 CAEx 置为 1,则为居中对齐输出。如果置为 0,则为左对齐 输出。应当注意的是,只有输出通道被关闭后才能对其进行设置,即通道被激活 后不能对其进行设置。2.6PWMCTL寄存器PWMCTL 寄存器每一位如图 9 所示:图 9 PWMCTL 寄存器 此寄存器的 2―7 位为可读、可写位。只有当相应的通道关闭后,才能改变 这些控制字。 控制字介绍:4 第一章PWM 模块CON67=1;这时通道 6、7 就串联为同一个输出通道。此时只有 7 通道的控 制字有用。例如:7 通道的 PWME 寄存器决定了他们的输出情况,7 通道的 PWMPOL 寄存器决定了他们是高电平翻转还是低电平翻转, 7 通道的 PWMCLK 寄存器决定了他们两个的时钟源,7 通道的 PWMCAE 寄存器决定了他们是左对 齐输出还是居中对齐输出等。 CON67=0 ;这时 6,7 通道分别作为独立输出通道对外输出。 CON45、CON23、CON01 的用法同 CON67 相似。设置此控制字的意义在 于扩大了 PWM 对外输出脉冲的频率范围。 PSWAI=1;则 MCU 一旦处于等待状态,就会停止时钟的输入。这样就不会 因时钟在空操作而费电。当它置为 0,则 MCU 就是处于等待状态,也允许时钟 的输入。2.7PWMSCLA寄存器PWMSCLA 寄存器每一位如图 10 所示:图 10 PWMSCLA 寄存器 时钟 SA 是通过对 PWMSCLA 寄存器的设置来对 A 时钟进行分频而产生的。 其计算公式为: Clock SA=Clock A /(2*PWMSCLA) PWMSCLB 寄 存 器 同 PWMSCLA 寄 存 器 相 似 , 时 钟 SB 就 是 通 过 对 PWMSCLB 寄存器的设置来对 B 时钟进行分频而产生的。 其计算公式为: Clock SB=Clock B /(2*PWMSCLB)2.8PWMCNTx寄存器PWMCNTx 寄存器共有 8 个,每一个通道都有一个。下面以 PWMCNT0 为例对 PWMCNTx 寄存器进行介绍。5 第一章PWM 模块PWMCNT0 寄存器每一位如图 11 所示:图 11PWMCNT0 寄存器计数器以所选时钟源的频率运行。计数器在任何时候都可以被读,而不影响 计数,也不影响对 PWM 通道的操作。 任何值写入 PWMCNT0 寄存器都会导致计数器复位置 0,且其计数方向会 被设置为向上计数,并且会立刻从缓冲器载入任务和周期值,并会根据翻转极性 的设置来改变输出。当计数器达到计数值后,会自动清零。只有当通道使能后, 计数器才开始计数。此寄存器随时都可以对其进行读、写操作。2.9PWMPERx寄存器PWMPERx 寄存器共有 8 个,每一个通道都有一个这样的周期寄存器。这个寄存器的值就决定了相关 PWM 通道的周期。 每一个通道的周期寄存器都是双缓 冲的,因此如果当通道使能后,改变他们的值,将不会发生任何作用,除非当下 列情况之一发生: *有效的周期结束。 *对计数器进行写操作(计数器复位成 0) 。 *通道不可用(PWMEx=0) 。 这样就会使 PWM 输出波形要么是新波形要么是旧波形, 并不会在两者之间 进行交替变换。如果通道不可用,那么对周期寄存器进行写操作,将会直接导致 周期寄存器同缓冲器一起闭锁。图 12 所示的是 PWMPER0 寄存器。图 12 PWMPER0 寄存器。 周期的计算方法: 1) 当 CAEx=0 时,即进行左线性输出时: PWMx 周期=通道时钟周期*PWMPERx 2) 当 CAEx=1 时,即进行居中对齐输出时:6 第一章PWM 模块PWMx 周期=通道时钟周期*(2*PWMPERx)2.10 PWMDTYx寄存器PWMDTYx 寄存器也有 8 个,每一个通道都有一个这样的占空比常数寄存 器。这个寄存器的值就决定了相关 PWM 通道输出波形的占空比。每一个通道的 占空比寄存器都是双缓冲的,因此如果当通道被激活后,改变他们的值,将不会 发生任何作用,除非当下列情况之一发生: *有效的周期结束。 *对计数器进行写操作(计数器复位成 0) 。 *通道没有被激活(PWMEx=0) 。 这样就会使 PWM 输出波形要么是新波形要么是旧波形, 并不会在两者之间 进行交替变换。如果通道没有被激活,那么对占空比常数寄存器进行写操作,将 会直接导致周期寄存器同缓冲器一起闭锁。 当计数值与占空比常数 PWMDTY 相等时,则比较输出器有效,这时就会将 触发器置位, 然后 PWMCNT 继续计数, 当计数值与周期常数 PWMPER 相等时, 比较器输出有效, 将触发器复位, 同时也使 PWMCNT 复位, 结束一个输出周期。 占空比的计算方法: 当 PPOL=0 时: 占空比=[(PWMPERx―PWMDTYx)/ PWMPERx]*100% 当 PPOL=1 时: 占空比=(PWMDTYx/ PWMPERx)*100%7 第一章PWM 模块第三节3.1 周期和占空比计算举例例1PWM应用实例设 CAEx=0;即为左线形输出。此时,设 E=10 MHz(100 ns) ,PPOLx=0,PWMPERx=4,PWMDTYx=1。 则 PWMx 输出频率=10 MHz/4=2.5 MHz PWMx 输出周期=1/(2.5 M)=400ns PWMx 占空比= 3/4=25% 公式总结: 当为左线性输出时: PWMx 输出频率=时钟频率/ PWMPERx 当 PPOLx=0 时 占空比=[(PWMPERx―PWMDTYx)/ PWMPERx]*100% 当 PPOLx=1 时 占空比=[PWMDTYx/ PWMPERx]*100% 例2 设 CAEx=1; 即为剧中线性输出。 此时, 设 E=10 MHz (100 ns) , PPOLx=0,PWMPERx=4,PWMDTYx=1。 则 PWMx 输出频率=10 MHz/(4*2)=1.25 MHz PWMx 输出周期=1/(1.25 M)=800ns PWMx 占空比= 3/4=25% 公式总结: 当为居中线性输出时: PWMx 输出频率=时钟频率/(2* PWMPERx) 当 PPOLx=0 时 占空比=[(PWMPERx―PWMDTYx)/ PWMPERx]*100% 当 PPOLx=1 时8 第一章PWM 模块占空比=[PWMDTYx/ PWMPERx]*100% 应当注意的是,在对 PWMDTYx 和 PWMPERx 进行设置时,PWMPERx 寄 存器的值应当大于 PWMDTYx 寄存器的值。3.2 PWM初始化步骤总结1、禁止 PWM PWME=0; 2、选择时钟 Select clock (prescaler and scale) for the PWM PWMPRCLK,PWMSCLA,PWMSCLB,PWMCLK 3、选择极性 PWMPOL 4、选择对齐模式 Select center or left aligned mode PWMCAE 5、对占空比和周期编程 Program duty cycle and period PWMDTYx, PWMPERx 6、使能 PWM 通道 PWME Enable used PWM channels Select polarity Disable PWM3.3 PWM应用实例例 1:输出占空比为 25%的波形 (1)实验设备:HCS12 编程器、开发板、示波器 (2)软件程序设计:本例子是输出占空比为 25%,周期为 500Hz 的波形。 JPb8 的 0 通道,开发板的地线和示波器相连。 (3)源程序如下:#include &hidef.h& /* common defines and macros */ #include &mc9s12dp256.h& /* derivative information */ #pragma LINK_INFO DERIVATIVE &mc9s12dp256b& void main(void) { PWME_PWME0=0; //关闭 0 通道9 第一章PWM 模块本页已使用福昕阅读器进行编辑。 福昕软件(C)2005-2009,版权所有, 仅供试用。PWMPRCLK=0X05; //对总线时钟进行预分频,总线时钟为 8M,分频后为 250K PWMCLK_PCLK0=0; //设 A 为其时钟源 PWMSCLA=0X7D; //A 时钟为 2000Hz SA时钟为1000HZ PWMPOL_PPOL0=1;//上升沿翻转 PWMCAE_CAE0=0;//左对齐输出 PWMDTY0=0X01; //占空比为 25%的波形 PWMPER0=0X04; //输出为 500Hz 的波 输出为62.5KHZ的波 PWMCNT0=0X00;//0 通道计数器清 0 PWME_PWME0=1;//0 通道使能,0 通道为输出通道 }例 2:步进电机的控制 (1)实验设备:HCS12 编程器、开发板、步进电机、5804 芯片、稳压电源 (2)功能实现:控制步进电机转动 90 度,按下中断后电机连续转动。 (3)源程序如下:#include &mc9s12dp256.h& /* derivative information */ #pragma LINK_INFO DERIVATIVE &mc9s12dp256b& int i=0; void main(void) { DDRJ=0x00; PIEJ=0X03; EnableI //中断设置 PWME=0; //关闭所有通道 PWMCTL_CON01=1;//对 PWM 控制寄存器进行设置,0,1 合为一个通道 PWMCNT1=0X00;//0,1 通道计数器清 0 PWMPOL_PPOL1=1;//上升沿翻转 PWMCLK_PCLK1=0; //设 A 为其时钟源 PWMPRCLK=0X00; //不对 A 时钟进行分频 PWMCAE_CAE1=1;//中心对齐输出 PWMPER1=0X20; PWMPER0=0x4e;//per 等于 40000,即 100 赫兹 PWMDTY1=0X10; PWMDTY0=0X27;//dty 等于 20000 PWME_PWME1=1;//0,1 通道使能 for(;i&=1854;) { if(PWMCNT0==0X4e) i++; } //步进电机转 90 度 PWME=0;//0,1 通道关闭 while(1){;}10 第一章PWM 模块} #pragma CODE_SEG __NEAR_SEG NON_BANKED interrupt void man(void) { if(PIFJ_PIFJ0==1) { PWMPER1=0X2a; PWMPER0=0x68;//per 等于 26666,即 150 赫兹 PWMDTY1=0X15; PWMDTY0=0X34;//dty 等于 13333 PWME_PWME1=0//0,1 通道使能 } }11 第二章ECT 模块第二章 ECT模块第一节1.1 简述HC12 增强型捕捉计时器模块在 HC12 标准定时器的基础上增加了一些特 点,用以扩展它的应用范围,特别是在汽车 ABS 方面。 基准计时器的核心仍然是一个 16 位的可编程计数器,其时钟源来自一个预 分频器。该计时器可以被应用于多个方面,包括在对输入波形进行测量的同时产 生一个输出波形。波形的脉宽可以在几微秒到数秒的范围内变化。 对计数寄存器或者输入捕捉/输出比较寄存器的访问可以发生在一个时钟周 期内。 对这些寄存器分别访问其高字节和低字节与将它们作为一个字进行访问所 获得的结果肯定不同。ECT模块介绍1.2 特征(1) 四个 IC 通道设置了 16 位保持寄存器,用于缓冲捕捉结果。 (2) 四个 8 位脉冲累加器、四个与缓冲 IC 通道关联的 8 位保持寄存器。四 个 8 位脉冲累加器通道可以级联,形成两个 16 位的脉冲累加器。 (3) 具有 4 位定标器的 16 位递减模数计数器。 (4) 四个可选的延迟计数器用于增强输入抗干扰能力。 (5) 仅支持 IP 总线上的 16 位访问。1.3 运行模式停止:由于时钟停止,计时器和计数器均关闭。 冻结:计时器和计数器均保持运行,直到 TSCR($06)的 TSFRZ 位被置 1。 等待:计数器保持运行,直到 TSCR($06)的 TSWAI 位被置 1。 正常: 计时器和计数器均保持运行, 直到 TSCR($06)的 TEN 位和 MCCTL($26) 的 MCEN 位被分别清 0。12 第二章ECT 模块ECT 增强模块的存储器图谱见表 55。每一个列出的寄存器地是其地址的偏 移量。总地址是 ECT 模块的基地址与偏移地址之和。1.4 ECT的组成与工作模式ECT 具有 8 个 IC/OC 通道、4 个 8 位或者 2 个 16 位的脉冲累加器(PAD 通道, 其 OC 部分与第 6 章的 TIM 模块相同, 但 IC 及 PAI 部分与 TIM 模块有一 定区别,其中 4 个 IC 通道与 TIM 模块相近,当相关引脚出现预定动作时,通过 各自的捕捉寄存器 TCn 记录定时器的值;另外四个 IC 通道,除了捕捉寄存器 TCn,还各有一个缓冲器 TCnH,称为保持寄存器,可以在不产生中断的前提下, 连续两次捕捉定时器的值。 4 个 8 位的 PAl 通道 0-3 与 4 个缓冲 IC 通道 IC0-3 相 关联,并共享输入引脚 PORTT0-3。每一个脉冲累加器通道都拥有一个缓冲器 PACnH, 也称为保持寄存器, 可以在外部引脚出现预定动作时, 保存它的累加值。 两对 8 位的脉冲累加器还可以通过级联形成 16 位的脉冲累加器 PACA、PACB。 16 位递减模数计数器(MDC)是 ECT 增设的, 它既是一个功能完善的定时器, 具有独立的可程控定标器、自动重装载和中断能力,又可为 IC、PAI 寄存器向保 持寄存器的传送提供定时控制信号。每当 MDC 回 0 时,将在给定的时间段内控 制 IC 和 PAI 寄存器的内容向各自的缓冲寄存器传输。 当然, MDC 也可作为具有 定时中断功能的独立时钟基准。1.4.1IC通道组IC 通道组由四个标准的缓冲通道 IC0-IC3 和四个非缓冲通道 IC4-IC7 组成, 两部分的基本功能都是捕捉外部事件发生的时刻, 但是缓冲通道除了 IC/OC 寄 存器 TCn 外,还设有保持寄存器 TCnH,此外还在入口设置了延迟计数器,用来 提高抗干扰能力。非缓冲通道没有保持寄存器,入口也没有延迟计数器,但每个 通道入口设置了一个 2 输入端的多路器, 事件触发信号可以是来自本通道的输入 引脚 PORTn,也可以是来自其关联 通道 PORT(n-4)的延迟计数器输出,使用更 加灵活。当延迟功能有效时,输入引脚检测到一个有效的边沿后,延迟计数器开 始对 P 时钟(模块时钟)进行计数,当到达设定的计数值后,延迟计数器在其输出 端有条件地产生一个脉冲,这个条件就是延迟前后的引脚电平相反。这样可以避 免对窄输入脉冲做出反应。延迟计数结束后,计数器自动清除。输入信号两个有 效边沿之间的持续时间必须大于设定的延迟时间。13 第二章ECT 模块在 ECT 中,所有 IC 通道均设置了覆盖保护功能,可以通过寄存器 ICOVW 设置是否允许某个通道用新的捕捉结果覆盖上一个结果。 对于缓冲的 IC 通道 PT0-PT3,还具有锁存与队列两种工作方式。在锁存方 式下,每个有效的引脚事件只将自由定时器的值放入捕捉寄存器 TCn,而 TCn 到保持寄存器 TCnH 的传送必须依赖递减模数计数器回 0 或者其他强制锁存命令 才能实现, 这时 IC 的工作情形与第 6 章的 TIM 模块相似。 在队列方式下(图 7-2), TCn 与 TCnH 形成了一个类似先进先出的队列,每个捕捉结果从 TCn 进入,然 后随着下一个捕捉结果的到来移入 TCnH,程序可以从 TCnH 取得结果,然而这 个队列是开放的,即程序也可以直接从 TCn 取得捕捉结果。队列方式为 CPU 提 供了充分的响应时间。 由于 PAC0-3 与 IC0-3 共享相同的引脚,而且共享入口的逻辑,因此在两种 方式下,PAI 与 IC 都可以同时工作,对同一引脚进行记录,前者记录脉冲或者 边沿的数量,后者记录具体的时刻。1.4.2脉冲累加器脉冲累加器由 4 个 8 位的通道 PAC0-PAC3 组成, 可以通过级联形成两个 16 位通道 PACA、PACB,它可以统计输入引脚上出现的有效边沿的数量,也可以 统计有效电平出现的累计时间。各个通道的 8 位保持寄存器是与 4 个缓冲 IC 通 道相关联的,它们共享边沿检测与延迟电路。当 IC 工作在两种不同的队列方式 时, PAC 保持寄存器也处于不同的工作状态,在锁存方式下,PCnH 的加载依 靠 MDC 计数器或者强制命令实现,而在队列方式下,则依靠 IC 通道的 TCnH 读命令。可见在 ECT 模块下, IC 与 PAI 的工作联系更加紧密。 此外,脉冲累加器还有饱和记忆功能,当 8 位的脉冲累加器计数超过$FF 后 记忆保持,而不回滚到 0,这时,计数值$FF 意味着计数已经达到或超过 255, 如不需要,该功能可以关闭。这可以用来监视某个通道的计数值是否已经达到预 定的目标值。 值得注意的是,PACl、PAC0 级联后,输入引脚为 PT0,而 PAC3、PAC2 级 联后,输入引脚并不是 PT2,而是 PT7,这样可以与那些无 ECT 的 MCU 保持一 致性。14 第二章ECT 模块1.4.3模数递减计数器16 位递减模数计数器(MDC)可以用作时钟基准,产生周期性的中断请求, 也可用于将 IC 寄存器和脉冲累加器的值锁存到各自的保持寄存器中。锁存动作 可以通过程序设定为周期性的或一次性的。MDC 的时钟频率可通过独立的定标 器设定,内部设有定时常数寄存器,可以实现自动重装载,但 MDC 的常数寄存 器与 MDC 计数器使用相同的地址,加载时通过特殊的时序实现。 每当 MDC 回 0 时, 将在给定的时间段内控制贮和 PAI 寄存器的内容向各自 的缓冲寄存器传输。反映了 MDC 在 IC、PAI 系统中的作用。1.5 ECT的工作过程与设置 1.5.1 自由定时器、模数递减计数器与时钟频率设置ECT 的自由定时器与 TIM 模块基本相同,惟一的区别是 TMSK2 中的 PR2-PR0 提供了 7 个预分频系数选项,包括 1、2、4、8、16、32、64、128,而 原来的 TIM 只提供了前 6 个选项,这样定时器时钟频率可以更低,周期更长。 ECT 特有的模数递减计数器(MDC)逻辑结构, 其核心为一个 16 位的递减计 数器 MDC($37、$36),其外围配备了常数寄存器 MCCNT 和预分频器,分别为 其提供定时常数和时钟信号。当寄存器 MCCTL 中的 MCEN=0 时,MDC 被复位 成$FFFF,以避免在计数器启动的初期置位中断标志。将 MCEN 置 1,MDC 启 动并从当前值开始对预分频器输出的时钟进行递减计数,分频系数为 1、4、8、 16 可选,具体由 MCCTL 中的 MCPR1 、 MCPRO 确定(参看后面关于 MCCTL 的说明)。 MDC 有两种工作方式,由 MODMC 决定,当 MODMC=0 时,MDC 为单此 计数方式,回到$0000 后停止,反之为循环工作方式。 无论在那种方式下,当 MDC 计数回 0 后,首先置位寄存器 MCFLG($27) 的 MCZF 标志,若 MCCTL 中的中断允许位 MCZI=1,则向 CPU 发出中断请求, 中断矢量为$FFCC、 $FFCD,向 MCFLG 的 MCZF 位写 1 将清除该标志。MDC 回 0 的另一个动作是向 IC、PAC 发出数据保持命令(参看 IC、PAC 部分),这是 MDC 的重要任务之一。此外在连续方式即 MODMC=1 时,MDC 回 0 后还将自 动从 MCCNT 加载定时常数, 但在单次方式即 MODMC=0 时, MDC 回 0 后停止。15 第二章ECT 模块MCCNT 与 MDC 占用相同的 I/O 地址($37、$36),由控制位 RDMCL 决定 每次读操作的具体访问对象。当 RDMCL=0/1 时,读操作分别返回 MDC 和 MCCNT 的当前值。对 MCCNT 的写操作要求在 MODMC=1 时进行,但 MDC 并不立即更新,必须等到计数器回 0 后重新加载,但向寄存器 MCCTL($26)中的 FLMC 位写 1 可以实现 MDC 的立即加载,同时还将复位预分频器。如果 MODMC:0,对地址$37、$36 进行写入操作也将复位预分频器,并用写入值立 即更新 MDC 计数器,然后开始一次递减计数,回到$0000 后停止。可见在单次 方式下可以直接指定定时常数,而在连续方式下则必须通过常数寄存器 MCCNT。 当寄存器 ICSYS($AB)中的 LATQ、BUFEN 均为 1 时,如果将$0000 写入 到 MCCNT 和模数计数器,输入捕捉和脉冲累加寄存器将被锁存。将$0000 写入 到 MCCNT 后, 模数计数器将保持为 0, 且不会将 MCFLG 中的 MCZF 标志置位。1.5.2IC通道组IC 通道分为缓冲与非缓冲两类,缓冲类又具有锁存与队列两种工作方式, 下面分别介绍其逻辑结构与寄存器的设置。 1.缓冲的 IC 通道 缓冲的 IC 通道共有四个,即 PT0-3,其最大特点是在捕捉寄存器 TCn 的基 础上,又增加了保持寄存器 TCnH,这样可以连续两次捕捉而不需要 CPU 干预。 单个缓冲 IC 通道主要由有效输入边沿检测、延迟滤波、捕捉与保持寄存器 子系统等组成。当 TIOS 的 IOS0=0,即 PT0 设置为 IC 输入后,每当 PT0 引脚的 逻辑电平发生变化时,内部边沿检测电路首先对其进行判别,判别的规则由寄存 器 TCLA 中的 EDGOB、EDGOA 决定,判别的结果送到延迟计数器进行滤波处 理。所谓滤波,即启动延迟计数器开始对 P 时钟(模块时钟)进行计数,当到达预 先设定的计数值后,延迟计数器在其输出端有条件地产生一个脉冲,这个条件就 是延迟前后的引脚电平相反。这样可以避免对窄输入脉冲做出反应。延迟时间由 寄存器 DLYCT 中的 DLY1、DLY0 控制,四个选项分别为 0(旁路)、256、512、 1024 个 P 时钟周期。延迟计数结束后,计数器自动清除,输入信号两个有效边 沿之间的持续时间必须大于选定的延迟时间。 延迟后的有效信号送到捕捉逻辑,然后根据 ICOVW、ICSYS 等相关位的16 第二章ECT 模块设置决定是否捕捉 TCNT 的当前值以及是否处理保持寄存器 TCOH, 此外还要决 定是否设置中断请求标志――寄存器 TFLGl 中的 COF。一旦 COF 置位,如果 COI=1 且 CCR 中的 I=1, CPU 将会收到中断请求并予以响应, 中断矢量为$FFEE、 $FFEF。通过寄存器 TFLG1 向 C0F 写 1 将清除该标志位。对于锁存方式和队列 方式,缓冲 IC 通道的捕捉条件和标志位的设置条件有所不同,下面将分别介绍。 (1)锁存方式。当设定为该方式时(LATQ=1),有效的引脚事件将主定时器值 复制到寄存器 TC0。在下述情况下,TC0 还将被锁存到各自的保持寄存器中,这 些情况包括模数计数器自然回 0 、向模数计数器直接写 $0000 、向控制寄存器 MCCTL 中的 ICLAT 位直接写 1 等。若寄存器 ICOVW 中的 NOVWx 位被清 0, 而这时出现新的捕捉事件,IC 寄存器的内容将被新值覆盖。如果发生锁存操作, 那么保持寄存器的内容也会被覆盖。若寄存器 ICOVW 中的 NOVWx 位被置 1, 那么捕捉寄存器和保持寄存器必须处于 清空状态才允许写入,否则不能写入。 这样可以避免读取或者转移到保持寄存器前,TC0 被覆盖。 (2)队列方式(参看图 7-2)。当设定为该方式时(LATQ=0),有效的引脚事件将 主定时器值复制到 IC 寄存器。寄存器 ICOVW 中的 NOVWx 位被清 0,而这时 出现新的捕捉事件,IC 寄存器的内容将被转移到保持寄存器。空出来的 IC 寄存 器存放新的捕获值。若寄存器 ICOVW 中的 NOVWx 位被置 1,那么捕捉寄存器 和保持寄存器必须处于清空状态才允许写入,否则不能写入。在该方式下读保持 寄存器 TC0H 会将相关的脉冲累加器值转移到对应的保持寄存器。 在上述两种方 式下,C3F-C0F 中断标志的建立条件如图 7-6 所示。 2.非缓冲 IC 通道 这类通道与 TIM 模块相似,但是增加了覆盖控制位、入口处的延迟计数器 及引入了双引脚控制(例如 PT0)。当 PT4 引脚出现有效事件时,主定时器的值可 能被记录到 IC 寄存器 TC4,但是受覆盖控制寄存器 ICOVW 的影响,具体如下: (1)如果输入覆盖控制寄存器 ICOVW 中的对应位 NOVWx 为 0, 当发生新的 捕捉事件时,IC 寄存器将用新的时间值覆盖上次捕捉结果。 (2)如果上述控制位为 1,那么 IC 寄存器将不被覆盖,除非此时它处于清空 状态。这可以阻止捕捉值在读取之前被覆盖掉。17 第二章ECT 模块1.5.3脉冲累加器ECT 的四个 8 位的脉冲累加器可以独立使用,也可级联使用,这样可以满 足不同的分辨率和通道数量要求。 具体取决于 PAEN、 PBEN 以及 PAEN3-PAEN0 的设置。当 PAEN=PBEN=0 时,PAC3-PAC0 独立工作,当 PAENn=1 时,对应的 PACn 通道使能。 当 PAEN=1 时, PAC3、 PAC2 级联成 16 位通道 A, 这时 PAEN3、 PAEN2 无效,当 PBEN=1 时,PAC1、PAC0 级联成 16 位通道 B,这时 PAEN1、 PAEN0 无效。 级联后形成的通道 A 与 TIM 模块兼容, 而通道 B 则功能相对简单。 下面分别介绍级联前的四个 8 位通道 PAC3-0、级联后的 16 位通道 A 和通道 B 各自的逻辑结构与设置。 1、8 位通道 PAC3-PAC0 PAC3-PAC0 与 IC 联系十分密切, 二者共享引脚、 边沿检测和延迟计数电路, 因此使用 PAC 通道时对应引脚必须通过寄存器 TIOS 设置为 IC 方式。 当 TIOS 中的 IOS0、 IOSl 等于 0 时, PT0/PTl 引脚信号进入边沿检测电路, 有效边沿将被送到延迟计数部分进行窄脉冲消除,然后分别送到 PACN0 / PACNl,如果寄存器 ICPACR 中的 PAENl、PAEN0 为 1,则 PACNl、PACN0 对 输入进行计数。各通道的有效边沿可以通过寄存器 TCL4 单独设置,可选项包括 切断、上升沿、下降沿和双向边沿,延迟时间则通过寄存器 DLYCT 设置,可选 项包括 0、256、512、 1024 个 P 时钟周期,但所有通道共用一个延迟时间,不 能分别设置。PACN3 具有溢出中断功能,但 PACN2 没有,当 PACN3 从$FF 回 滚到$oo 时,寄存器 PBFLG 中的 PBOVF 标志置 1,如果寄存器 PBCTL 中的 PBOVI=1,同时 CPU 全局中断屏蔽位 I=1,将向 CPU 申请中断,中断矢量为 $FFCA、$FFCB。通过程序向 PBOVF 写 1 将清除该标志。 PAC3-PAC0 通道设置了饱和记忆功能,当 ICSYS 中的 PACMX=1 时,该功 能启动,这时如果某个通道计数器 PACNx 计数达到$FF,那么 PACNx 将停止对 后续事件的计数,而保持在$FF,因此发现某个 PACNx=$FF 说明其计数结果大 于或者等与 255。 当 ICSYS 中的 BUFEN=1 时,保持寄存器 PAlH、PAOH 有效,用来保存 PACN1、PACN0 的累计结果,传送控制信号由 MCCTL 中的 ICLAT 或递减计数 器 MDC 发出,但是与 ICSYS 中的 LATQ 有关。当 BUFEN=0 时,保持寄存器无 效。18 第二章ECT 模块(1)脉冲累加器的锁存方式; 当 LATQ=1(锁存方式)时, 模数递减计数器回 0、 将$0000 写入模数计数器或者强制锁存控制位 ICLAT 被置 1 三者之一发生时, 脉 冲累加器的值将被转移到与它对应的保持寄存器,其自身同时清 0。 (2)脉冲累加器的队列方式。当 LATQ=0(队列方式)时,只在读取对应的 IC 通道的保持寄存器(TClH、TCOH)时,才会产生传送动作,其他的传送控制信号 无效。 此外,PAC 设置了覆盖限制功能,当保持寄存器为空时,将允许进行结果 传送,但当保持寄存器非空时则禁止覆盖。覆盖控制通过寄存器 ICSYS 实现。 对于 PAC2、PAC3,其逻辑结构与设置与 PAC0、PAC1 相似,只是涉及的 某些寄存器不同,有关的设置这里不再赘述。 2、16 位通道 A 当寄存器 PACTL 中的 PAEN=1 时,通道 PAC3、PAC2 不复存在,PACN3、 PACN2 级联成通道 A(PAl),但为了与 TIM 保持一致,PAl 仍然使用引脚 PT7, 而不使用引脚 PT2, 当然也不能使用 PT2 的边沿检测和延迟电路。 该部分的工作 过程与 TIM 的 PAI 完全相同。 3、16 位通道 B 当寄存器 PBCTL 中的 PBEN=1 时,通道 PACl、PAC0 不复存在,PACN1、 PACN0 级联成通道 B,它使用引脚 PT0,因此仍然可以使用 FT0 的边沿检测和 延迟电路,但没有门控时间累加方式,此外该通道只有溢出中断,这与通道 A 均不同。通道 B 只有事件计数方式,其他与通道 A 类似,读者可参看第 6 章的 有关部分,这里不再赘述。第二节2.1ECT寄存器简介IC/OC选择寄存器(TIOS)5 IOS5 0 4 IOS4 0 3 IOS3 0 2 IOS2 0 1 IOS1 0 Bit0 IOS0 0寄存器偏移量:$0000 Bit7 6 IOS7 IOS6 复位后:0 0可在任何时候读或写。 TIOS 寄存器用于指定各个通道的功能,即工作于 IC 还是 OC 方式。当某个19 第二章ECT 模块位 IOSn=0 时,对应的通道 n 为输入捕捉(1C)通道,否则当 IOSn=1 时,通道 n 为输出比较(OC)通道。 其中的各位可以在任何时候写入或读出。 上电后该寄存器 默认为$00,TSCR 中的 TEN 默认也为 0,这时所有通道处于通用 I/O 方式,将 TEN 置位后各个通道进入 IC 方式, 要将某些通道设置成 OC 方式, 必须对 TIOS 进行设置,即将有关位置 1。设置成 OC 的通道其引脚具有降功率驱动功能,设 置成 IC 的通道具有内部上拉功能,但上电后均处于关闭状态,可以根据需要启 用。2.2输出比较通道 7 屏蔽寄存器(OC7M)5 OC7M5 0 4 OC7M4 0 3 OC7M3 0 2 OC7M2 0 1 OC7M1 0 Bit0 OC7M0 0寄存器偏移量:$0002 Bit7 6 OC7M7 OC7M6 复位后:0 0可在任何时候读或写。 前面已经说明,OC7 具有特殊地位,它匹配时可以直接改变其他 7 个输出 引脚的状态,并覆盖各个引脚原来的匹配动作结果,寄存器 OC7M 决定哪些通 道将处于 OC7 的管理之下。 OC7M 中的各位与 PORTT 口寄存器的各位一一对 应。当通过 TIOS 将某个通道设定为输出比较时,将 OC7M 中的相应位置 1,对 应的引脚就是输出状态,与 DDR 中的对应位的状态无关。但 OC7Mn 并不改变 DDR 相应位的状态。 OC7M 具有更高的优先级,它优于通过 TCTL1 和 TCTL2 寄存器中的 OMn 和 OLn 设定的引脚动作,若 OC7M 中某个位置 1,就会阻止相应引脚上由 OM 和 OL 设定的动作。2.3输出比较通道 7 数据寄存器(OC7D)5 OC7D5 0 4 OC7D4 0 3 OC7D3 0 2 OC7D2 0 1 OC7D1 0 Bit0 OC7D0 0寄存器偏移量:$0003 Bit7 6 OC7D7 OC7D6 复位后:0 0可在任何时候读或写。 OC7M 对于其他 OC 输出引脚的管理限于将某个二进制值送到对应引脚, 这 个值保存在寄存器 OC7D 中的对应位中。 当 OC7 匹配成功后, 若某个 OC7Mn=1, 则内部逻辑将 OC7Dn 送到对应引脚。20 第二章ECT 模块OC7D 中的各位与 PORTT 口寄存器的各位一一对应。 当通道 7 比较成功时, 如果 OC7M 中的某个位为 1, OC7D 中的对应位将被输出到 PORTT 的对应引脚。 当 OC7M 中的某个位为 1 时,通道 7 匹配成功的动作如果与通道 6-0 的动 作发生在同一个周期,前者将覆盖后者。因此各个通道的动作将依赖于 OC7D 中各个位的设置。2.4定时器核心寄存器(TCNT)Bit12 Bit4 0 Bit11 Bit3 0 Bit10 Bit2 0 Bit9 Bit1 0 Bit8 Bit0 0寄存器偏移量:$ Bit15 Bit14 Bit13 Bit7 Bit6 Bit5 复位后:0 0 0TCNT 是递增计数器,它不停地对内部时钟信号计数、程序可随时读取,但 在普通模式下禁止写入。TCNT 应按字访问,分别访问高、低字节可能得到错误 的结果。 在特殊模式下,TCNT 可写,但因为写操作与预分频器时钟不同步,TCNT 寄存器写入后,其第一个周期可能是一个不同的值。2.5计时器系统控制寄存器 1(TSCR1)5 TSFRZ 0 4 TFFCA 0 3 0 2 0 0 1 Bit0 0寄存器偏移量:$0006 Bit7 6 TEN TSWAI 复位后:0 0可在任何时候读或写。 TSCR1 寄存器是定时器模块的总开关,它决定模块是否启动以及在中断等 待、BDM 方式下的行为,还包括标志的管理方式。其各位的意义如下: TEN:定时器使能位,此外它还控制定时器的时钟信号源。要使用定时器模 块的 IC/OC 功能,必须将 TEN 置位。如果因为某种原因定时器没有使能,脉 冲累加器也将得不到 ECLK/64 时钟,因为 ECLK/64 是由定时器的分频器产 生的,这种情况下,脉冲累加器将不能进行引脚电平持续时间的累加。 0:主计时器、包括计数器均被禁止,有利于降低功耗。 1:定时器使能,正常工作。 TSWAI:等待模式下计时器关闭控制位。21 第二章ECT 模块注意定时器中断不能用于使 MCU 退出等待模式。 0:在中断等待模式下允许 MCU 继续运行。 1:当 MCU 进入中断等待模式时,禁止计时器。 TSFRZ:在冻结模式下计时器和计数器停止位。 0:在冻结模式下允许计时器和计数器继续运行。 1:在冻结模式下禁止计时器和计数器,用于仿真调试。 注意:TSFRZ 不能停止脉冲累加。 TFFCA:定时器标志快速清除选择位。 0:定时器标志普通清除方式。 1:对于 TFLGl($0E)中的各位,读输入捕捉寄存器或者写输出比较寄存器会 自动清除相应的标志位 CnF。 对于 TFLG2($0F)中的各位,任何对 TCNT 寄存器($04、$05)的访问均会清 除 TOF 标志;任何对 PACN3 和 PACN2 寄存器($22,$23)的访问都会清楚清除 PAFLG 寄存器($21)中的 PAOVF 和 PAIF 位。任何对 PACN1 和 PACN0 寄存器 ($24,$25)的访问都会清除 PBFLG 寄存器($21)中的 PBOVF 位。这种方式的好 处是削减了另外清除标志位的软件开销。此外,必须特别注意避免对标志位的意 外清除。2.6计时器溢出绑定寄存器 1(TTOV)5 TOV5 0 4 TOV4 0 3 TOV3 0 2 TOV2 0 1 TOV1 0 Bit0 TOV0 0寄存器偏移量:$0007 Bit7 6 TOV7 TOV6 复位后:0 0可在任何时候读或写。 TOVx:溢出绑定管脚标志位。 TOVx 在输出比较时,如果发现溢出,则绑定该管脚。这一功能仅在输出比 较模式下有效,它的优先级高出强制输出比较,而低于通道 7 的输出比较。 0:输出比较的管脚发生溢出时绑定功能不发生作用。 1:输出比较的管脚发生溢出时绑定功能使能。22 第二章ECT 模块2.7TCTL1控制寄存器(TCTLl-TCTL4)3 OM5 0 3 OM1 0 3 EDG5B 0 3 EDG1B 0 2 OL5 0 2 OL1 0 2 EDG5A 0 2 EDG1A 0 1 OM4 0 1 OM0 0 1 EDG4B 0 1 EDG0B 0 Bit0 OL4 0 Bit0 OL0 0 Bit0 EDG4A 0 Bit0 EDG0A 0寄存器偏移量:$0008 Bit7 6 5 4 OM7 OL7 OM6 OL6 复位后:0 0 0 0 TCTL2 寄存器偏移量:$0009 Bit7 6 5 4 OM3 OL3 OM2 OL2 复位后:0 0 0 0 TCTL3 寄存器偏移量:$000A Bit7 6 5 4 EDG7B EDG7A EDG6B EDG6A 复位后:0 0 0 0 TCTL4 寄存器偏移量:$000B Bit7 6 5 4 EDG3B EDG3A EDG2B EDG2A 复位后:0 0 0 0 可在任何时候读或写。TCTLl-TCTL4 分为两组,分别对 IC 和 OC 电路进行设定,每组 16 个二进 制位,每两个二进制位管理一个通道。其中 TCTLl、TCTL2 设定各个 OC 通道 匹配时的动作,包括切断 OC 与输出引脚的联系,而 TCTL3、TCTL4 设定 IC 响 应引脚的何种动作,包括禁止 IC 的响应。各个控制位的作用如下: OMn、 OLn 分别设定输出方式和输出电平, 这 8 对控制位(OM7、 OL7-OMO、 OL0)编码后用于指定通道比较成功后的输出动作(参看表 7-3)。如果每对当中至 少有一个为 1, 对应引脚就固定为相应通道的输出, 而与 DDRT 中的对应位无关。 当二者同时为 0 时,OC 与输出引脚断开。 OMn 0 0 1 1 表 7-3 OLn 0 1 0 1 输出比较动作设置 动作 定时器与输出引脚断开 OCn 输出翻转 OCn 输出清 0 OCn 输出置 1EDGnB、EDGnA 输入捕捉边沿控制位,这 8 对控制位(EDG7B、EDG7A― EDGOB、EDGOA)对输入捕捉的边沿检测电路进行设置(参看表 7-4) 。当二者 同时为 0 时,IC 与输入引脚断开。23 第二章ECT 模块EDGnB 0 0 1 1表 7-4 输入捕捉边沿检测电路设置 EDGnA 边沿检测器电路设置 0 捕捉禁止 1 仅捕捉上升沿 0 仅捕捉下降沿 1 上升、下降沿均捕捉注意:为了使 OMn、OLn 指定的引脚动作有效,OC7M 中的对应位必 须清 0。 若要使用 16 位脉冲累加器 A 和 B, 并使它们分别独立于 IC/OC7 和 IC /OC0,必须设置对应的 IOSn:1、OMn=0、OLn=0,同时寄存器 OC7M 中的 C7M7、OC7M0 位必须清 0。2.8计时器中断使能寄存器(TIE)5 C6I 0 4 C4I 0 3 C3I 0 2 C2I 0 1 C1I 0 Bit0 C0I 0寄存器偏移量:$000C Bit7 6 C7I C6I 复位后:0 0可在任何时候读或写。 TIE 寄存器中的位与状态寄存器 TFLG1 中的标志位相对应。如果将 TIE 中 的某位清 0,相应的标志位就不能引起硬件中断。如果被置 1,相应的标志位就 可以引起中断。 C7I-C0I:输入捕捉/输出比较“x”中断使能。2.9计时器系统控制寄存器 2(TSCR2)5 0 0 4 0 0 3 TCRE 0 2 PR2 0 1 PR1 0 Bit0 PR0 0寄存器偏移量:$000D Bit7 6 TOI 0 复位后:0 0可在任何时候读或写。 TOI:计时器溢出中断使能。 0:中断被禁止。 1:当 TOF 标志被置位时发出硬件中断请求。 TCRE:时钟计数器复位使能。 该位在通道 7 成功输出比较之后允许时钟计数器复位。 该操作模式类似于递24 第二章ECT 模块增型计数器。 0:计数器复位禁止,计数器自由计数。 1:通道 7 成功输出比较后计数器将被复位。 如果 TC7=$0000 并且 TCRE=1,TCNT 将继续保持$0000。 如果 TC7=#FFFF 并且 TCRE=1,当 TCNT 从$FFFF 到$0000 之间被复位后 TOF 将永远不被置位。 PR2,PR1,PR0:计数器预分频选择。 这三位所决定的分频因子如下表所示。 表 7-5 PR2 0 0 0 0 1 1 1 1 PR1 0 0 1 1 0 0 1 1 分频因子选择 PR0 0 1 0 1 0 1 0 1 Prescale Factor 1 2 4 8 16 32 64 128新设定的分频因子不会立即起作用, 直到下一个触发沿到来那里所有预分频 计数器值均为零。2.10 主定时器中断标志寄存器(TFLG1、TFLG2)TFLG1 寄存器偏移量:$000E Bit7 6 5 C7F C6F C5F 复位后:0 0 0 TFLG2 寄存器偏移量:$000F Bit7 6 5 TOF 0 0 复位后:0 0 0 4 C4F 0 4 0 0 0 0 3 C3F 0 3 0 0 2 C2F 0 2 1 C1F 0 1 0 0 Bit0 C0F 0 Bit0 0 0所示的 TFLG1、TFLG2 为中断标志寄存器,其中 TFLG1 对应 8 个 IC/OC 通道,当某 CnF=1 时说明对应的 IC/OC 通道有动作。TFLG2 只有一个标志位 TOF,作为核心计数器的中断请求标志。当 TOF=1 时说明核心计数器溢出。要 清除某个标志位,只需向该位写 1,向某位写 0 不影响该位的状态。当 TSCR 中25 第二章ECT 模块的 TFFCA 位置位时,读 IC 通道或写 OC 通道 ($10-$1F)将自动清除该通道标志 CnF,对 TCNT 的任何访问将自动清除 TFLG2。 CnF:IC/OC 通道中断请求标志。 0:上次清除标志以来,IC/OC 通道没有有效动作。 1:IC/OC 通道已经出现动作。将寄存器 ICSYS($2B)中的 TFMOD 位和 ICOVW 寄存器($2A)联合使用, 可以使定时器在两次捕捉后才产生中断, 而不是 每次捕捉均产生动作。两次捕捉结果分别在捕捉和保持寄存器里面。 TOF:定时器溢出标志,当 16 位自由定时器从$FFFF 回滚到$0000 时,该位 置位。将$80 写入到 TFLG2 将自动清除该位。详见前面关于 TMSK2 中 TCRE 控制位的解释。2.11 IC/OC寄存器(TC0-TC7)每个 IC 或 OC 通道都设置有一个 16 位的寄存器,对于 IC(输入捕捉)通道, 当通道的边沿探测器检测到由 EDGnA、EDGnB 指定的条件时,将自由定时器的 值捕捉到寄存器 TCn,随后程序可以读取和处理;对于 OC(输出比较)通道,程 序将预定的时刻写入到 TCn, 当自由定时器的值与其相等时, 触发由 OMn、 OLn 所指定的输出动作。定时器模块共有 TC7-TC0 等 8 个 16 位 IC/OC 寄存器。 对于设定为 IC 的通道,相应通道写操作无意义。上述所有寄存器复位后为 $0000。 TC0 寄存器偏移量:$ Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4 复位后:0 0 0 0 TC1 寄存器偏移量:$ Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4 复位后:0 0 0 0 TC2 寄存器偏移量:$ Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4 复位后:0 0 0 0 TC3 寄存器偏移量:$ Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4 复位后:0 0 0 026Bit11 Bit3 0 Bit11 Bit3 0 Bit11 Bit3 0 Bit11 Bit3 0Bit10 Bit2 0 Bit10 Bit2 0 Bit10 Bit2 0 Bit10 Bit2 0Bit9 Bit1 0 Bit9 Bit1 0 Bit9 Bit1 0 Bit9 Bit1 0Bit8 Bit0 0 Bit8 Bit0 0 Bit8 Bit0 0 Bit8 Bit0 0 第二章ECT 模块TC4寄存器偏移量:$ Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4 复位后:0 0 0 0 TC5 寄存器偏移量:$001A-$001B Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4 复位后:0 0 0 0 TC6 寄存器偏移量:$001C-$001D Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4 复位后:0 0 0 0 TC7 寄存器偏移量:$001E-$001F Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4 复位后:0 0 0 0Bit11 Bit3 0 Bit11 Bit3 0 Bit11 Bit3 0 Bit11 Bit3 0Bit10 Bit2 0 Bit10 Bit2 0 Bit10 Bit2 0 Bit10 Bit2 0Bit9 Bit1 0 Bit9 Bit1 0 Bit9 Bit1 0 Bit9 Bit1 0Bit8 Bit0 0 Bit8 Bit0 0 Bit8 Bit0 0 Bit8 Bit0 02.12 脉冲累加器A控制寄存器(PACTL)寄存器偏移量:$0020 Bit7 6 0 PAEN 复位后:0 0 5 PAMOD 0 4 PEDGE 0 3 CLK1 0 2 CLK0 0 1 PAOVI 0 Bit0 PAI 0可在任何时候读或写。 寄存器 PACTL 决定了 PAI 的工作方式及其参数,还包括 PAI 的启动、确定 定时器系统的时钟信号源、中断管理等。其各位作用如下: PAEN:脉冲累加系统使能位,该位与 TEN 相互独立。PAEN=1 时,PAl 的输 入部分才进行引脚信号检测,同时 8 位脉冲累加器 PAC3、PAC2 被禁止。 0:PAI 系统禁止。 1:PAI 系统使能。 PAMOD:脉冲累加器模式控制位。当 TEN=0 时,没有 ECLK/64 时钟, 如果启动 PAI, 它只能工作在事件计数方式。 0:事件计数模式。 1:门控时间累加模式。这时 TEN 必须为 1。 PEDGE:脉冲累加器有效边沿设定位,该位的作用效果与 PAMOD 的状态27 第二章ECT 模块有关。 (1)PAMOD:0 (事件计数模式)时:0:对脉冲输入引脚(PT7/PAI)的下降沿计数。 1:对脉冲输入引脚(PT7/PAI)的上升沿计数。 (2)PAMOD:1 (门控时间累加模式)时:0:当脉冲输入引脚(PT7/PAI)为高电平时,允许 ECLK/64 时钟脉冲计入 脉冲累加器,并在随后的输入弓 I 脚下降沿置位 PAIF 标志。 1:当脉冲输入引脚(PT7/PAI)为低电平时,允许 ECLK/64 时钟脉冲计入 脉冲累加器,并在随后的输入引脚上升沿置位 PAIF 标志。 CLKI、CLK0:定时器模块时钟选择位,如果脉冲累加器被禁止(PAEN:0), 来自定时器的预分频器时钟总是作为定时计数器的时钟源。 时钟源的改变在这两 位写入后立即生效。其作用见表 7-6。 CLK1 0 0 1 1 表 7-6 CLK0 0 1 0 1 时钟选择 定时计数器时钟源 预分频时钟 PACLK PACLK/256 PACLK/65536PAOVI:脉冲累加器溢出中断允许位。 0:禁止溢出中断。 1:当 PAOVF 置位时申请中断。 PAI:脉冲累加器输入中断允许位。 0:禁止输入中断 1:当 PAIF 置位时申请中断。2.13 脉冲累加器A标志寄存器(PAFLG)寄存器偏移量:$0021 Bit7 6 0 0 复位后:0 0 5 0 0 4 0 0283 0 02 0 01 PAOVF 0Bit0 PAIF 0 第二章ECT 模块可在任何时候读或写。 PAI 子系统可能产生两种中断,累加器溢出和事件中断。当 PACNT 溢出时, 先置位 PAOVF,当 PAOVI=1 时将发出中断请求。而 PAIF 则在 PAI 检测到有效 事件时置位, 当 PAI=1 时还将发出中断请求。 当 TSCR 寄存器中的 TFFCA=1 时, 访问 PACNT 将清除 PAFLG 中的所有标志位。 PAOVF、 PAIF 位于寄存器 PAFLG 中,其意义如下: PAOVF:脉冲累加器溢出标志位。 0:上次清除以来,PACNT 没有回滚到$0000。 1:PACNT 从$FFFF 回滚到$0000。将$02 写入到 PAFLG 将自动清除该位。 PAIF:脉冲累加器输入边沿有效标志位。 0:上次清除以来,PAI 引脚尚未检测到预期的有效边沿。 1:在输入引脚检测到有效边沿。在事件计数模式下,选定的有效边沿在计 数的同时触发该位置 1;在门控时间累加模式下, 输入引脚门控信号的后沿触发该 位置 1,将$01 写入到 PAFLG 将自动清除该位.2.14 脉冲累加寄存器(PACN3、PACN2、PACN1、PACN0)PACN3 Bit7 复位后:0 PACN2 Bit7 复位后:0 PACN1 Bit7 复位后:0 PACN0 Bit7 复位后:0 寄存器偏移量:$ 0 0 寄存器偏移量:$ 0 0 寄存器偏移量:$ 0 0 寄存器偏移量:$ 0 0 4 0 4 0 4 0 4 0 3 0 3 0 3 0 3 0 2 0 2 0 2 0 2 0 1 0 1 0 1 0 1 0 Bit0 0 Bit0 0 Bit0 0 Bit0 0可在任何时候读或写。 PACN3、PACN2、PACN1、PACN0 是四个 8 位的寄存器,PAC3、PAC2 级 连后形成 PACA, PAC1、PAC0 级连后形成 PACB,它们反映外部事件或者时间 的累计结果,程序可以随时读取或通过写入设定初始值。当 PACA/PACB 允许 (PACTL:$20 寄存器中的 PAEN=1/ PBCTL:$30 寄存器中的 PBEN=1)时,寄29 第二章ECT 模块存器 PACN3、PACN2/PACNl、PACN0 分别是 PACA、 PACB 的高、低位字节, 当 PACNl 从$FF 回滚到$00,寄存器 PBFLG($31)中的 PBOVF 中断标志置 1。 正确的寄存器访问方式是在单个时钟周期内完成,即采用字读写指令。分开 访问高/低位字节可能得到错误的结果。但如果只需要寄存器的高 8 位或低 8 位,则读操作不受限制,但写操作仍需要注意。2.15 模数递减计数器控制寄存器(MCCTL)寄存器偏移量:$0026 Bit7 6 MCZI MODMC 复位后:0 0 5 RDMCL 0 4 ICLAT 0 3 FLMC 0 2 MCEN 0 1 MCPR1 0 Bit0 MCPR0 0可在任何时候读或写。 该寄存器主要控制 MDC 及相关操作。各位意义及作用如下: MCZI: 模数计数器下溢出中断允许位。当 MDC 回 0 标志 MCZF 置位时, 是否申请中断取决于 MCZI。 0:禁止中断。 1:允许中断。 MODMC:模数方式允许位。该位设定 MDC 的工作方式,即选择单次或模 数循环方式。 0: 1: 单次计数方式,计数器从设定值递减到 0 后停止。 模数计数方式,当计数器递减回 0 后,加载最新设定值,并开始新一轮计数过程。 注意:为保证正确运行,修改 MODMC 位之前,必须清除 MCEN 位使模数 计数器复位到$FFFF。 RDMCL:模数读取选择位。该位决定读模数寄存器返回的内容。 0: 返回模数计数器的当前值。 1: 返回重新加载所用的常数。 ICLAT : 捕 捉 寄 存 器 强 制 转 移 控 制 位 。 当 输 入 捕 捉 工 作 在 锁 存 方 式 时 (ICSYS($2B)寄存器中的 LATQ 和 BUFEN 位置位),向该位写 1 立即强制将捕捉 寄存器 TC0-TC3 以及对应的 8 位脉冲累加器的内容转移到保持寄存器,同时相30 第二章ECT 模块关的脉冲累加器自动清 0。向该位写 0 无效,读该位总是返回 0。 FLMC :模数计数器强制加载控制位。该位只在模数递减计数器允许时 (MCEN=1)有效,向该位写 1 将把模数常数寄存器的值加载到模数计数器,同时 复位模数计数器的定标器。向该位写 0 无效。 当 MODMC=0 时,计数器开始计数,并在到达$0000 后停止。读该位总是 返回 0。 MCEN:模数递减计数器允许位。当 MCEN=0 时,计数器被预置为$FFFF, 这可以避免在计数器启动的初期出现中断标志。 0: 模数计数器禁止运行。 1: 模数计数器使能。 MCPR1、MCPR0:模数计数器定标器分频常数设定位。设定的分频常数不 能立即起作用,必须等到模数计数器进行加载操作。当 MCPR1、MCPR0=00、 01、10、11 时,对应的分频常数分别为 1、4、8、16。2.16 输入脉冲累加器控制寄存器(ICPAR)寄存器偏移量:$0028 Bit7 6 0 0 复位后:0 0 5 0 0 4 0 0 3 PA3EN 0 2 PA2EN 0 1 PA1EN 0 Bit0 PA0EN 0可在任何时候读或写。 8 位脉冲累加器 PAC3、PAC2 只有在 PACTL($20)中的 PAEN=0 时,才能被 允许,若 PAEN=1,PA3EN 和 PA2EN 无效。同样,8 位脉冲累加器 PACl、PAC0 只有在 PBCTL($30)中的 PBEN=0 时, 才能被允许, 若 PBEN=1, PAlEN 和 PAOEN 无效。当 PAxEN=1 时,对应的 8 位脉冲累加器通道 x 使能,反之则禁止。2.17 输入覆盖控制寄存器(ICOVW)寄存器偏移量:$002A Bit7 6 NOVW7 NOVW76 复位后:0 0 5 NOVW5 0 4 NOVW4 0 3 NOVW3 0 2 NOVW2 0 1 NOVW1 0 Bit0 NOVW0 0可在任何时候读或写。 该寄存器共有 8 个覆盖禁止位,对应 8 个 IC 通道,用来选择上次捕捉结果31 第二章ECT 模块是否允许被覆盖。如果某位 NOVWx=0,新的捕捉事件或转移动作发生时,不论 捕捉或保持寄存器是否为空,均直接保存新的结果:反之若 NOVWx:1,对应 的寄存器不允许被覆盖,但若处于空白状态则仍然允许覆盖。这样可以避免捕捉 结果在被读取或者转移到保持寄存器前丢失。2.18 输入系统控制寄存器(ICSYS)寄存器偏移量:$002B Bit7 6 SH37 SH26 复位后:0 0 可在任何时候读。 可能一次可写(test mode=0 时)但是当 test mode=1 时,写总是被允许的。 该寄存器用于对 IC 和 PAC 部分的工作进行设置与控制。 其各位意义和作用 如下: SHxy: 0: x、y 通道输入共享控制位。 5 SH15 0 4 SH04 0 3 TFMOD 0 2 PACMX 0 1 BUFEN 0 Bit0 LATQ 0x、y 通道正常工作,各自使用对应的引脚。1: 通道 x 的边沿检测电路及延迟电路同时作用于 x、y 通道,即在 y 通道 上也引发与 x 通道相同的动作。 TFMOD: 标志设置方式控制位,寄存器 ICSYS($2B)中的 TFMOD 位与寄 存器 ICOVW($2A)一起使用可以使定时器的中断在捕捉到两个事件后才产生, 而 不是每次捕捉事件都产生中断,两次捕捉的结果分别存放在捕捉和保持寄存器 中。如果在队列方式下将 TFMOD 置 1,同时 NOVW 置位且某通道 n 的捕捉和 保持寄存器均为空白状态, 那么第一个捕捉事件将首先用主定时器值更新对应的 输入捕捉寄存器 TCn,下一个事件发生时,TCn 中的数值将首先被转移到保持 寄存器 TCnH,然 后 更新 TCn。这时,CnF 中断标志才被置位。在所有其他的输入捕捉情况下, PTn 引脚发生的有效外部事件将置位中断标 志。 0: 当对应的输入引脚满足预定的捕捉条件时,寄存器 TFLGl($0E)中的标志 C3F-COF 将被相应置位。 1: 如果在队列方式下 (BUFEN=1 且 LATQ=0),那么标志位 C3F-COF只有在对应的保持寄存器被填充后才置位。如果没有启用队列方式,那么标志位32 第二章ECT 模块C3F-COF 的置位条件与 TFMOD:0 时相同。 PACMX: 8 位脉冲累加器饱和控制位, 即选择计数到$FF 后是否保持不变。 饱和功能允许时$FF 就代表计数值已经达到 255 或更多。换言之,可记忆是否曾 经达到$FF。 0: 1: 正常工作,计数达到$FF 后,下一计数使其回到$oo。 计数达到$FF 时,停止加 1 操作,即进入饱和状态。BUFEN: IC 缓冲允许位。 0: 1: 禁止 IC 及 PAC 的保持寄存器。 IC 及 PAC 保持寄存器使能。锁存方式由控制位 LATQ 设定,当位LATQ=1 时,向寄存器 MCCTL($26)中的 ICLAT 位写 1,将导致捕捉寄存器和脉 冲累加器将其中数值转移到各自的保持寄存器。 LATQ: 输入锁存及队列方式允许位。当控制位 BUFEN=1 时,IC 和 PAC 的保持寄存器使能,反之不能通过 LATQ 进入锁存方式。当 LATQ、BUFFEN 同 时为 1 时,向 MCCTL($26)中的 ICLAT 位写 1,IC 和 PAC 寄存器内容将转移到 保持寄存器。 0: IC 工作在队列方式。当输入引脚满足预定的捕捉条件时,主定时器的值被记录到捕捉寄存器,当下一个捕捉事件出现时,捕捉寄存器将其内容转移 到保持寄存器,以便存放新的捕获值。 1: IC 工作在锁存方式。当模数计数器自然回 0,或者向计数器 MCCNT 直接写$0000 时,将进行锁存操作,结果,捕捉寄存器和脉冲累加器将其内容转 移到保持寄存器,同时 8 位的脉冲累加器清 0。2.19 脉冲累加器B控制寄存器(PBCTL)寄存器偏移量:$0030 Bit7 6 0 PBEN 复位后:0 0 5 0 0 4 0 0 3 0 0 2 0 0 1 PBOVI 0 Bit0 0 0可在任何时候读或写。 16 位的脉冲累加器 B(PACB)系两个 8 位的脉冲累加器 PACl 和 PAC0 级连后 形成的。当 PBEN 置 1 时,PACB 启动,它与 IC0 共享同一个输入引脚。33 第二章ECT 模块PBEN:脉冲累加器 B 使能位,它与 TEN 相互独立。只要 PBEN=1,脉冲累加器 B 即可工作,与定时器是否允许无关,这与脉冲累加器 A 不同。 0: 脉冲累加器 B 禁止。8 位的 PACl 和 PAC0 可通过各自的允许位(在寄存器 ICPACR 中,地址$28)使能。 1: 脉冲累加器 B 使能。实际上 PACB 为 PACl、PAC0 级连形成,PACl 为 高位、而 PAC0 为低位字节,这时寄存器 ICPACR 中的控制位 PAlEN、PAOEN 无效。 PBOVI: 脉冲累加器 B 溢出中断允许位。 0: 1: 禁止 PBOVF 申请中断。 当 PBOVF=1 时,申请中断。2.20 脉冲累加器B标志寄存器(PBFLG)寄存器偏移量:$0031 Bit7 6 0 0 复位后:0 0 5 0 0 4 0 0 3 0 0 2 0 0 1 PBOVF 0 Bit0 0 0可在任何时候读或写。 该寄存器只有一个标志位 PBOVF, 当 16 位的 PACB 从$FFFF 回滚到$0000, 或 8 位脉冲累加器 3(PACl)从$FF 回滚到$00 时,该位置 1。将$01 写入 PBFLG 清除该位。当寄存器 TSCR($06)中的 TFFCA 位置位时,访问 PACNl 和 PACN0 清除该标志。2.21 脉冲累加器保持寄存器(PA3H-PA0H)PAC3H 寄存器偏移量:$0032 Bit7 6 5 复位后:0 0 0 PA2H 寄存器偏移量:$0033 Bit7 6 5 复位后:0 0 0 PA1H 寄存器偏移量:$0034 Bit7 6 5 复位后:0 0 0 PA0H 寄存器偏移量:$0035 Bit7 6 5 4 0 4 0 4 0 4343 0 3 0 3 0 32 0 2 0 2 0 21 0 1 0 1 0 1Bit0 0 Bit0 0 Bit0 0 Bit0 第二章ECT 模块复位后:00000000可在任何时候读。写不起作用。 当 ICPACR($28)中 PAnEN=1 时,通道 PAn 使能,寄存器 PA3H-PAOH 用于 为 PAn 提供锁存功能。2.22 模数递减计数器工作寄存器(MCCNT)寄存器偏移量:$ Bit15 Bit14 Bit13 Bit7 Bit6 Bit5 复位后:1 1 1 Bit12 Bit4 1 Bit11 Bit3 1 Bit10 Bit2 1 Bit9 Bit1 1 Bit8 Bit0 1MDC 启动后,MCCNT 用来对定标器输出的时钟进行递减计数,也可作为 定时基准。对该寄存器的访问应在一个时钟周期内完成,即按字访问。对高低位 字节分别访问可能得到错误的结果。如果 MCCTL 中的 RDMCL=0,读 MCCNT 寄存器返回计数器的当前值;反之如果 RDMCL=1,返回每次重新加载所用的常 数。 当寄存器 ICSYS($2B)中的 LATQ、BUFEN 均为 1 时,如果将$0000 写入到 MCCNT 和模数计数器,输入捕捉和脉冲累加寄存器将被锁存。将$0000 写入到 MCCNT 后,模数计数器将保持为 0,且不会将 MCFLG 中的 MCZF 标志置位。 如果模数方式允许(MODMC=1),对该地址进行写操作将更新常数寄存器, 但计数器不会立即更新,必须等到计数器回 0 后重新加载;如果希望立即加载, 通过寄存器 MCCTL ($26)中的 FLMC 位可以将新值立即加载到计数器。如果模 数方式未允许(MODMC=0),写该地址将清 0 定标器,并用写入值立即更新计数 器,然后开始一次递减计数,到 0 后停止。2.23 IC保持寄存器(TC0H-TC3H)TCOH 寄存器偏移量:$ Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4 复位后:0 0 0 0 TC1H 寄存器偏移量:$003A-$003B Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4 复位后:0 0 0 0 TC2H 寄存器偏移量:$003C-$003D Bit15 Bit14 Bit13 Bit1235Bit11 Bit3 0 Bit11 Bit3 0 Bit11Bit10 Bit2 0 Bit10 Bit2 0 Bit10Bit9 Bit1 0 Bit9 Bit1 0 Bit9Bit8 Bit0 0 Bit8 Bit0 0 Bit8 第二章ECT 模块Bit7 Bit6 Bit5 Bit4 复位后:0 0 0 0 TC3H 寄存器偏移量:$003E-$003F Bit15 Bit14 Bit13 Bit12 Bit7 Bit6 Bit5 Bit4 复位后:0 0 0 0Bit3 0 Bit11 Bit3 0Bit2 0 Bit10 Bit2 0Bit1 0 Bit9 Bit1 0Bit0 0 Bit8 Bit0 0这些寄存器用于为相应的捕捉寄存器 TC0-TC3 提供锁存功能。 定时器与 I/O 共享引脚的说明 定时器与 PORTT 共享 8 个 I/O 引脚, 复位后各个引脚默认为通用输儿输出, 当定时器相关功能使能后,将取代通用 I/O 功能。引脚 PT0-3 由 IC/OC、PAC 及通用 I/O 共享,引脚 PT4-7 由 IC/OC 及通用 I/O 共享,此外引脚 PT0、PT7 还供 16 位脉冲累加器 A、B 作为输入使用。其他请参看第 6 章 TIM 模块有关说 明,不再赘述。 不同模式下的定时器及模数计数器的运行状况 (1)停止(STOP):因为 PCLK 和 ECLK 均已停止,定时器和模数计数器 关闭。 (2)调试方式(BDM):只要不满足 TSBCK=1,定时器保持运行。 (3)中断等待(WAIT):只要不满足 TSWAI=1,计数器保持运行。 (4)正常(Normal):只要不满足 TEN=0 和 MCEN(MCCTL 中)=0,定时器 保持运行。 (5)禁止(TEN=0):定时器和 MDC 停止,但寄存器可访问。ECLK/64 时钟被禁止。 (6)禁止(PAEN=0):所有的脉冲累加器动作停止,但寄存器可以访问。 (7)MCEN:0:模数计数器停止。 (8)PAEN:1:16 位脉冲累加器 A 激活。 (9)PAEN:0:8 位脉冲累加器 3 和 2 可以激活。 (10)PBEN:1:16 位脉冲累加器 B 激活。 (11)PBEN:0:8 位脉冲累加器 1 和 0 可以激活。36 第二章ECT 模块第三节3.1 定时器编程步骤1、初始化:ECT应用实例设定预分频系数,设定工作方式,定时器溢出中断使能,定时器使能 2、中断函数 用户自己的代码,清标志位void ECT_Init(void) { TSCR2_PR = 7; //预分频系数为 8 ………………….. TSCR2_TOI = 1; //定时器溢出中断使能 TSCR1_TEN = 1; //定时器使能 } #pragma CODE_SEG __NEAR_SEG NON_BANKED void TimerOverFlow(void) { //用户自己的代码 TFLG2_TOF = 1; //清楚定时器溢出中断标志位 }3.2 输入捕捉IC:本试验的辅助设备有:信号发生器、示波器。 试验目的:通过连续记录输入信号的两个上升沿,用该程序可以计算出输入 信号的频率;同时,利用脉冲累加器可以记录输入脉冲数。#include &hidef.h& /* common defines and macros */ #include &mc9s12dp256.h& /* derivative information */ #pragma LINK_INFO DERIVATIVE &mc9s12dp256b& int count=0; double f1=2000000,first=0,second=0,n,N; void main(void) { DisableI TSCR2=0X82; PACTL=0X20; TIOS=0XFE; //设定 pt0 输入捕捉口37 第二章ECT 模块TCTL4=0X01; ICSYS=0X0A; PBCTL_PBEN=0X00; ICPAR=0X01; TIE=0X01; TSCR1=0X80; EnableI for(;;) {; } } #pragma CODE_SEG __NEAR_SEG NON_BANKED interrupt void CH0IC(void) { first=TC0H; second=TC0; n=count*65535+second- f=f1/n; N=PA0H; TFLG1=0X01; count=0; } interrupt void TOI(void) { count++; TFLG2_TOF=1; }3.3 通道 6 输出比较本试验的辅助设备有:示波器。 试验目的:利用定时器溢出中断产生脉冲周期,利用通道 6 输出比较产生不 同脉宽的波形,但此方法产生的波形其周期不能改变。double count, void main(void) { DisableI TSCR2=0X82; TIOS=0XFE;//设定 pt6 输出捕捉口 TCTL1=0X30; TC6=0X3333; TTOV=0X40; TIE=0X00; TSCR1=0X80; EnableI38 第二章ECT 模块for(;;) {; } } #pragma CODE_SEG __NEAR_SEG NON_BANKED interrupt void CH6OC(void) { counter++; if(counter==100) TC6=0X8888; if(counter==200) TC6=0XCCCC; if(counter==300) TC6=0XDEEE; TFLG2_TOF=1; }3.4 通道 7 输出比较本试验的辅助设备有:示波器。 试验目的:利用通道 7 输出比较中断产生脉冲周期,利用通道 6、4 输出比 较产生不同脉宽的波形,此方法产生的波形既可以改变周期同时也能够改变脉 宽。#include &hidef.h& /* common defines and macros */ #include &mc9s12dp256.h& /* derivative information */ #pragma LINK_INFO DERIVATIVE &mc9s12dp256b& double count, void main(void) { DisableI TIOS=0XF0;//设定 pt6 输出捕捉口 TSCR2=0X0a; TFLG1=0X00; TFLG2=0X00; TCTL1=0X62; ICSYS=0X0a; OC7M=0X50; OC7D=0X50; TC7=0X00C0; TC6=0X0060; TC4=0X0099; TIE=0X00; TSCR1=0X80; EnableI39 第二章ECT 模块for(;;) {; } }3.5 模数递减计数器本试验的辅助设备有:连接导线若干。 试验目的:利用模数递减计数器回零中断,控制五个小灯依次点亮,同时点 亮的时间间隔由慢到快。#include &hidef.h& /* common defines and macros */ #include &mc9s12dp256.h& /* derivative information */ #pragma LINK_INFO DERIVATIVE &mc9s12dp256b& long counter=0; void main(void) { DisableI DDRB=0XFF; PORTB=0X00; MCCTL_MCEN=0; MCCTL_MCZI=1; MCCTL_MODMC=1; MCCTL_MCPR1=1; MCCTL_MCPR0=1; MCCNT=0XAAAA; TSCR1=0X80; TSCR2=0X00; MCCTL_MCEN=1; EnableI for(;;) {; } } #pragma CODE_SEG __NEAR_SEG NON_BANKED interrupt void MDC(void) { counter++; if(counter&=10) PORTB=0X01; if((count

我要回帖

更多关于 消防输入输出模块 的文章

 

随机推荐