MC9S12XS128定时器模块及其应用实例
合肥工业大学
吴 晔,张 阳,滕 勤
第9章 MC9S12XS128定时器模块及其应用实例 本章内容
9.1 TIM模块概述 9.2 TIM模块结构和工作原理 9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置 9.4 TIM模块的输入捕捉功能及寄存器设置 9.5 TIM模块的输出比较功能及寄存器设置
9.1 TIM模块概述
9.2.3 TIM模块寄存器
MC9S12XS128的TIM模块共有48个寄存器,其中9个是系统保留寄存器。
TIM模块的内存映射表给出了这些寄存器的地址、名称和访问权限。 对于每个寄存器,所列的地址是地址偏移量,每个寄存器的绝对地址
是TIM模块的基本地址与每个寄存器地址偏移量之和。
沿计数,有效边沿可设定为上升沿或下降沿。输入引脚上每产生一个有效边沿跳变,脉冲
累加计数器的值加1。
当脉冲累加器溢出时,将置位中断标志。如果允许脉冲累加器溢出中断,则产生一次中断 申请。
《MC9S12XS单片机原理及嵌入式系统开发》
第9章 MC9S12XS128定时器模块及其应用实例
9.1 TIM模块概述
本节内容
9.2 TIM模块结构和工作原理
9.2.1 TIM模块结构
9.2.2 TIM模块工作原理
9.2.3 TIM模块寄存器 9.2.4 TIM模块中断系统
《MC9S12XS单片机原理及嵌入式系统开发》
第9章 MC9S12XS128定时器模块及其应用实例
9.2 TIM模块结构和工作原理
设置TOI=0将禁止自由运行计数器溢出中断,向TFLG2中写入$80将清除TOF标志。 自由运行主定时器的时钟TIMCLK由4选1多路转换器提供,时钟源的切换由16位脉
冲累加器控制寄存器 PACTL中的CLK1和CLK0确定,时钟可以是PCLK、PACLK、
PACLK/256、PACLK/65536。
本节内容
9.3 TIM模块的自由运行计数器和定时器
基本寄存器及设置
9.3.1 自由运行主定时器与时钟频率设置
9.3.2 TIM模块基本寄存器及设置
《MC9S12XS单片机原理及嵌入式系统开发》
第9章 MC9S12XS128定时器模块及其应用实例
9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置
《MC9S12XS单片机原理及嵌入式系统开发》
第9章 MC9S12XS128定时器模块及其应用实例
9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置
9.3.1 自由运行主定时器与时钟频率设置
定时器系统控制寄存器TSCR1中的TEN位是TIMCLK时钟的总开关。 当TEN=0时,自由运行主定时器的时钟被关断,定时器停止工作,但并不
9.2.2 TIM模块工作原理
【脉冲累加器】 【计数方式】
★ 门控时间累加方式——门控信号来自输入引脚,时钟信号来自内部时钟
PACLK,即总线时钟的64分频(ECLK/64),门控信号可设定为高电平有效或 低电平有效。在有效电平期间,脉冲累加器对PACLK时钟信号进行计数。此时,
脉冲累加器相当于可控计数器,可用来测量脉冲宽度。
的脉宽、周期或频率。
【统计脉冲或边沿个数】对端口引脚输入的、由外部事件产生的触发
信号进行计数。
【作为定时基准】产生内部定时,例如用于定时采样等。
MC9S12XS128定时器模块称为TIM(Timer Module)。
《MC9S12XS单片机原理及嵌入式系统开发》
第9章 MC9S12XS128定时器模块及其应用实例
【脉冲累加器】
脉冲累加器(Pulse accumulator,PA):通过检测相应引脚上的有效边沿统计脉冲个数。 TIM模块只有一个16位的脉冲累加器,与PT7引脚复用,其工作方式有事件计数方式和门控 时间累加方式两种。
【计数方式】
工作方式不同,脉冲累加器的计数脉冲的来源不同。
★ 事件计数方式——计数脉冲来自输入引脚,脉冲累加器相当于普通计数器,即对有效边
TIM模块的基本地址是0x0040。 TIM模块的寄存器分为3类:控制寄存器、数据寄存器和状态寄存器。
《MC9S12XS单片机原理及嵌入式系统开发》
第9章 MC9S12XS128定时器模块及其应用实例
9.1 TIM模块概述
9.2.3 TIM模块寄存器
【控制寄存器】
《MC9S12XS单片机原理及嵌入式系统开发》
9.3.1 自由运行主定时器与时钟频率设置
16位自由运行主定时器的工作频率决定输入捕捉/输出比较的分辨能力。 定时器计数寄存器TCNT对多路转换器输出的时钟信号进行计数,当计数值从
$FFFF溢出变为$0000时,主定时器中断标志寄存器TFLG2中的中断标志TOF置位, 如果此时定时器系统控制寄存器TSCR2中的中断允许位TOI=1,将向CPU申请中断。
《MC9S12XS单片机原理及嵌入式系统开发》
第9章 MC9S12XS128定时器模块及其应用实例
9.1 TIM模块概述 嵌入式系统中定时器/计数器模块的作用:
【产生波形输出】从MCU的I/O引脚向外输出一系列符合一定时序规范
的周期信号。
【测量输入波形】从MCU的I/O引脚上检测外部输入的一系列周期信号
由运行计数器值与输出比较寄存器值每隔 4个总线周期比较一次,当两者相等时, 会在相应通道引脚上输出预先设定的电平。
如果允许输出比较中断,则产生一次中断
申请。
《MC9S12XS单片机原理及嵌入式系统开发》
第9章 MC9S12XS128定时器模块及其应用实例
9.1 TIM模块概述
9.2.2 TIM模块工作原理
当外部事件发生或信号发生变化时,指定的输入捕捉
通道对应的引脚上产生一个规定的跳变沿(上升沿或
下降沿)。定时器输入通道根据相应引脚上的电平变 化,将当前自由运行计数器中的计数值捕捉到通道寄 存器中。
如果此时允许输入捕捉中断,则产生一次输入捕捉中
断申请,利用中断服务程序可读取通道计数器数值, 获得事件发生的时刻或信号变化的时刻。
影响脉冲累加器在事件计数方式下的正常工作。
输出比较通道7(OC7)对自由运行主定时器具有特殊的控制功能。
当定时器系统控制寄存器TSCR2中的控制位TCRE=1时,如果OC7比较成功,
则定时器计数寄存器TCNT自动复位到$0000。这样可利用OC7实现TCNT在 $0000~$xxxx(<$FFFF)之间的循环计数,从而在保持较高时钟频率 (高分辨力)前提下,缩短计数周期,以满足特殊需要。
9.2.1 TIM模块结构
【TIM组成】 1个16位自由运行计数器 8个16位输入捕捉/输出比较通道 1个16位脉冲累加器 【特点】 模块时钟输入具有7位预分频器 8个输入捕捉通道带有边沿检测器 8个输出比较通道的输出极性可选择 16位脉冲累加器带有边沿检测器
《MC9S12XS单片机原理及嵌入式系统开发》
门控时间累加方式下,输入引脚上的有效电平将触发脉冲累加器开始对
ECLK/64时钟进行计数,输入引脚上有效电平结束时的跳变沿将停止计数,同 时置位中断标志。如果允许脉冲累加器中断,则产生一次中断申请。
《MC9S12XS单片机原理及嵌入式系统开发》
第9章 MC9S12XS128定时器模块及其应用实例
《MC9S12XS单片机原理及嵌入式系统开发》
第9章 MC9S12XS128定时器模块及其应用实例
9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置
9.3.1 自由运行主定时器与时钟频率设置
其中,PCLK称为P时钟,由自由运行计数器预分频器将总线时钟进行2k
分频后得到(k=0~7) ,分频系数由定时器系统控制寄存器TSCR2中的PR2、 PR1和PR0三位确定(此时,要求定时器系统控制寄存器TSCR1中的PRNT=0, 即定时器为普通定时器)。
的位数。计数的最大值限制了定时的最大值。
(3)可以根据规定的定时或计数值,当定时时间到或到达计数终点时,
发出中断请求信号,以便实现定时或计数控制。
定时器——计数脉冲来自于系统工作时钟或经过分频后的系统时钟,即
驱动脉冲为内部时钟信号;
计数器——计数脉冲来自于芯片外部引脚,即驱动脉冲为外部时钟信号。
第9章 MC9S12XS128定时器模块及其应用实例
9.1 TIM模块概述
9.2.3 TIM模块寄存器
【数据寄存器】
【状态寄存器】
《MC9S12XS单片机原理及嵌入式系统开发》
第9章 MC9S12XS128定时器模块及其应用实例
9.1 TIM模块概述
9.2.4 TIM模块中断系统
【ECT模块中断源】
第9章 MC9S12XS128定时器模块及其应用实例
9.2 TIM模块结构和
工作原理
9.2.2 TIM模块工作原 理
【工作模式】
停止(STOP)模式 冻结(Freeze)模式 等待(Wait)模式 正常(Normal)模式 【定时器模块框图】
《MC9S12XS单片机原理及嵌入式系统开发》
第9章 MC9S12XS128定时器模块及其应用实例
9.1 TIM模块概述
9.1.3 ECT模块的中断系统
【ECT模块中断源】 默认中断优先级次序:从上到下优先级为从高到低。
写入HPRIO中的代码值实际上是中断矢量起始地址的低字节。
《MC9S12XS单片机原理及嵌入式系统开发》
第9章 MC9S12XS128定时器模块及其应用实例
【自由运行计数器】
TIM的核心——16位自由运行计数器,也称为自由运行主定时器。 系统复位时——自由运行计数器为$0000。 模块运行时——自由运行计数器从$0000~$FFFF循环递增计数。 溢出复零时——置位中断标志。 时钟源TIMCLK—— PCLK,PACLK,PACLK/256,PACLK/65536。 预分频器时钟PCLK——由总线时钟经过一个7位预分频器得到。 预分频系数—— 8种。
飞思卡尔MC9S12XS128单片机各模块使用方法及寄存器配置
飞思卡尔MC9S12XS128单片机各模块使用方法及寄存器配置手把手教你写S12XS128程序--PWM模块介绍该教程以MC9S12XS128单片机为核心进行讲解,全面阐释该16位单片机资源。
本文为第一讲,开始介绍该MCU的PWM模块。
PWM 调制波有8个输出通道,每一个输出通道都可以独立的进行输出。
每一个输出通道都有一个精确的计数器(计算脉冲的个数),一个周期控制寄存器和两个可供选择的时钟源。
每一个P WM 输出通道都能调制出占空比从0—100% 变化的波形。
PWM 的主要特点有:1、它有8个独立的输出通道,并且通过编程可控制其输出波形的周期。
2、每一个输出通道都有一个精确的计数器。
3、每一个通道的P WM 输出使能都可以由编程来控制。
4、PWM 输出波形的翻转控制可以通过编程来实现。
5、周期和脉宽可以被双缓冲。
当通道关闭或PWM 计数器为0时,改变周期和脉宽才起作用。
6、8 字节或16 字节的通道协议。
7、有4个时钟源可供选择(A、SA、B、SB),他们提供了一个宽范围的时钟频率。
8、通过编程可以实现希望的时钟周期。
9、具有遇到紧急情况关闭程序的功能。
10、每一个通道都可以通过编程实现左对齐输出还是居中对齐输出。
1、PWM启动寄存器PWMEPWME 寄存器每一位如图1所示:复位默认值:0000 0000B图1 PWME 寄存器每一个PWM 的输出通道都有一个使能位P WMEx 。
它相当于一个开关,用来启动和关闭相应通道的PWM 波形输出。
当任意的P WMEx 位置1,则相关的P WM 输出通道就立刻可用。
用法:PWME7=1 --- 通道7 可对外输出波形PWME7=0 --- 通道7 不能对外输出波形注意:在通道使能后所输出的第一个波形可能是不规则的。
当输出通道工作在串联模式时(PWMCTL 寄存器中的CONxx置1),那么)使能相应的16位PWM 输出通道是由PWMEx 的高位控制的,例如:设置PWMCTL_CON01 = 1,通道0、1级联,形成一个16位PWM 通道,由通道 1 的使能位控制PWM 的输出。
第8章MC9S12XS128模数转换模块及其应用实例59页PPT
8.2 ATD模块结构组成和特点
MC9S12XS128内置的ATD 模块如图8.1所示。
《MC9S12XS单片机原理及嵌入式系统开发》 单片机原理及嵌入式系统开发》
8.2 ATD模块结构组成和特点
ATD模块具有以下基本特征: 8位/10位/12位可选转换精度; 停止模式下转换使用内部时钟; 转换完成后为低功耗状态; 自动和可编程数值比较,可设定大于或者小于等于设定值时中断申请; 可编程采样时间; 左对齐/右对齐转换数值; 外部触发功能; 转换完成中断申请; 16路模拟输入通道多路开关; 可实现VRH、VRL和(VRH+VRL)/2特殊转换; 转换序列长度为1~16; 连续转换模式; 多通道扫描功能; 外部触发功能可配置为AD通道或4个外部附加触发输入端,外部触发源可选
《MC9S12XS单片机原理及嵌入式系统开发》 单片机原理及嵌入式系统开发》
8.3 ATD模块寄存器及设置
8.3.4 ATD控制寄存器3(ATDCTL3)
S8C、S4C、S2C、S1C:转换序列长度定义位。这4位控制每个序列转换的长度。A/D 转换序列长度定义详见表8-7。复位后,S4C默认为1,所以默认的A/D转换序列的长度为 4。
8.3 ATD模块寄存器及设置
8.3.3 ATD控制寄存器2(ATDCTL2)
ETRIGE:外部触发模式使能位。该位允许表8-3中描述的AD通道或者ETRIG3~0输入 端作为外部触发源。如果外部触发源是AD某通道,则使能该通道的数字输入缓冲功能。外部 触发允许与外部事件实现同步转换。停止模式下的AD转换,外部触发不工作。
《MC9S12XS单片机原理及嵌入式系统开发》 单片机原理及嵌入式系统开发》
8.3 ATD模块寄存器及设置
MC9S12XS128 PIT模块
言归正传,开始讲PIT,讲PIT,我准备先简单讲讲寄存器,之前不讲主要是基本上买的到的书都是DG128的,里面关于IO口的寄存器和PWM的寄存器都是完全可以照搬的,而这一章的东西照搬是要出问题的。
核心内容就在这张图上:相信大家都明白总线的概念,在图中可以看到6个定时器模块,Micro Timer 0、Micro Timer 1、Timer 0、Timer 1、Timer 2、Timer 3,其中前两个是8位的,后四个是16位的。
从图中可以看出PIT模块是以总线时钟(Bus Clock)为基准时钟的,总线时钟通过8位Micro Timer 0和Micro Timer 1倍频形成两个基时钟,即Micro Timer Base 0和Micro Timer Base 1,这两个基时钟通过16位Timer给PIT提供时钟(通过寄存器PITMUX设置)。
原理讲完了,其实相对于PIT模块是一个24位的定时器(51单片机最多也就16位),这个计数范围还是蛮大的。
下面是一些寄存器的解释,解释完还是看代码吧。
S12PIT24B4CV1是一个模数递减计数器。
首先给计数寄存器设定一个初值,每经过一个总线周期,计数器进行一次减一操作,当计数器自减溢出时,触发中断。
因为总线周期是已知的,即可以通过计数器自减实现定时。
在XS128PIT模块中,需要用到得是如下几个寄存器。
1)、PIT Contorl and force Lad Micro Timer Register(PITCFLMT)该寄存器用于PIT模块的使能设置和工作方式设置。
通常设置该寄存器中的PITE为即可,即PITCFLMT_PITE=1,使PIT使能。
2)、PIT Channel Enable Register(PITCE)该寄存器用于对PIT模块中的4个通道使能进行设置。
如果使用某个通道时,对对应位进行置一即可,即PITCE_PCEx=1,其中x代表通道序号,为0~3。
飞思卡尔MC9S12XS128单片机重点模块讲解
基于飞思卡尔 MC9S12XS128MCU 的模块讲解及测试
安徽工业大学 自动化系 刘昌元 delay(500); if(LED==0x80) LED=0x01; } } 综合以上的两段代码看在 52 单片机和 128 单片机上编程思路基本上没大的区别,唯一的区 别就是 128 单片机有数据方向寄存器来管理 I/O 口。 � 将部分端口做输入口使用,另外一部分端口做输出口使用时:例如我们将 PORTB 的端 口 B7 用来做输入口,B0-B5 口做输出指示,测试代码如下:
�
以端口 A 和端口 B 为例讲解,以上是我截取的技术手册上的,从上来看 A 口和 B 口各 有 8 个口,且 A0-A7;B0-B7 全部作为 GPIO (通用输入输出口 )使用。此处 A 口和 B 口 使用方法是一样的,我姑且就以端口 A 来讲解。 A 口和 B 口作为通用输入输出口使用时我们只需要掌握 4 个寄存器即可。 PORTA (A 口
�
这一点和 51 单片机的 I/O 口有区别,在典型的 51 单片中 P0 口内部没有上拉电阻,但作为 I/O 口使用时需要外接排阻。其他 P1-P3 口则可以直接作为双向口使用,51 单片在上电复位 后端口被默认的置 1.在 51 单片中端口的某一位置 0 时端口作为输出口使用,置 1 时作为输 入口使用。例如如果我们想把 P1 作为输出口使用时我们可以在程序开始时写 P1=0x00; 如果 我们想把 P1 口作为输入口使用时我们可以写 P1=0xff; 这一点正好和飞思卡尔的 128 单片机 相反,另外 128 单片有专门的数据方向寄存器 DDRA 或者 DDRB 等来管理各个端口的输入 输出选择,51 单片没有。如果我们想把端口 A 作为输入口使用,我们只需写 DDRA=0x00; 即所有位都置 0,如果我们想把端口 A 作为输出口使用,我们只需要写 DDRA=0xff; 即所有 位都置 1 ,而如 果我们想要 把端口 A 的高四 位做输入口 ,低 4 位做输 出口时我们 就 写 DDRA=0x0f; 当我们需要将该端口的某一位做输出或者输入口使用时只需要将该端口对应的 方向位置 1 或者置 0 即可。例如我们想把 A3 口作输入口, A4 口作输出口使用时我们只需 要写: DDRA_DDRA3=0; DDRA_DDRA4=1; 即可。 � � 对于数据方向寄存器的使用只要记住:置 1——输出 置 0——输入 PORTA 数据寄存器也是由 8 位组成,任何时候都可以对它进行读写操作。
MC9S12XS128中文资料
PWMCNTx:
PWM通道计数寄存器。
每个通道都有一个独立的8位计数器,其计数速率由所选择的时钟源决定。计数器的值可以随时读取而不影响计数器运行,也不影响PWM波形输出。在左对齐模式时,计数器从0计数至周期寄存器的值减1;在中心对齐模式,计数器从0计数至周期寄存器的值,然后再倒计数至0。
CFORC:
定时器比较强制寄存器。复位值为0x00。
FOCx=1将强制该位对应通道产生输出比较成功动作,但CxF中断标志位不置位。任何通道的强制比较成功动作若与普通比较成功动作同时发生,则强制比较成功动作优先发生,且CxF标志位不会置位。
被置位后瞬间将自动清除该位,所以任何时候对该寄存器的读动作都将返回0x00。
OC7M:
输出比较通道7屏蔽寄存器。复位值为0x00。
Setting the OC7Mx (x ranges from 0 to 6) will set the corresponding port to be an output port when the corresponding TIOSx (x ranges from 0 to 6) bit is set to be an output compare and the corresponding OCPDx (x ranges from 0 to 6) bit is set to zero to enable the timer port.A successful channel 7 output compare overrides any channel 6:0 compares. For each OC7M bit that is set, the output compare action reflects the corresponding OC7D bit.
第9章_MC9S12XS128定时器模块及其应用实例人文社科
第9章_MC9S12XS128定时器模块及其应用实例- 人文社科《MC9S12XS单片机原理及嵌入式系统开发》合肥工业高校吴晔,张阳,滕勤第9章MC9S12XS128定时器模块及其应用实例本章内容9.1 TIM模块概述9.2 TIM模块结构和工作原理9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置9.4 TIM模块的输入捕获功能及寄存器设置9.5 TIM模块的输出比较功能及寄存器设置9.6 TIM模块的脉冲累加器功能及寄存器设置9.7 TIM模块应用实例第9章MC9S12XS128定时器模块及其应用实例9.1 TIM模块概述定时器/计数器的特点:(1)可以有多种工作方式——定时方式或计数方式等。
(2)计数器的模值可变——计数的最大值有肯定的限制,取决于计数器的位数。
计数的最大值限制了定时的最大值。
(3)可以依据规定的定时或计数值,当定时时间到或到达计数终点时,发出中断恳求信号,以便实现定时或计数掌握。
定时器——计数脉冲来自于系统工作时钟或经过分频后的系统时钟,即驱动脉冲为内部时钟信号;计数器——计数脉冲来自于芯片外部引脚,即驱动脉冲为外部时钟信号。
第9章MC9S12XS128定时器模块及其应用实例9.1 TIM模块概述嵌入式系统中定时器/计数器模块的作用:【产生波形输出】从MCU 的I/O引脚向外输出一系列符合肯定时序规范的周期信号。
【测量输入波形】从MCU的I/O引脚上检测外部输入的一系列周期信号的脉宽、周期或频率。
【统计脉冲或边沿个数】对端口引脚输入的、由外部大事产生的触发信号进行计数。
【作为定时基准】产生内部定时,例如用于定时采样等。
MC9S12XS128定时器模块称为TIM(Timer Module)。
第9章MC9S12XS128定时器模块及其应用实例本节内容9.2 TIM模块结构和工作原理9.2.1 TIM模块结构9.2.2 TIM模块工作原理9.2.3 TIM模块寄存器9.2.4 TIM模块中断系统第9章MC9S12XS128定时器模块及其应用实例9.2 TIM模块结构和工作原理9.2.1 TIM模块结构【TIM组成】1个16位自由运行计数器8个16位输入捕获/输出比较通道1个16位脉冲累加器【特点】模块时钟输入具有7位预分频器8个输入捕获通道带有边沿检测器8个输出比较通道的输出极性可选择16位脉冲累加器带有边沿检测器第9章MC9S12XS128定时器模块及其应用实例9.2 TIM模块结构和工作原理9.2.2 TIM模块工作原理【工作模式】停止(STOP)模式冻结(Freeze)模式等待(Wait)模式正常(Normal)模式【定时器模块框图】第9章MC9S12XS128定时器模块及其应用实例9.2 TIM模块结构和工作原理9.2.2 TIM模块工作原理【具体功能框图】第9章MC9S12XS128定时器模块及其应用实例9.2 TIM模块结构和工作原理9.2.2 TIM 模块工作原理【自由运行计数器】TIM的核心——16位自由运行计数器,也称为自由运行主定时器。
S12XS128程序--ECT模块介绍
1、简述MC9S12XS128定时器模块与MC9S12DG128 ECT部分功能完全类似,以下均以ECT模块介绍xs128定时器模块。
HC12 增强型捕捉计时器模块在HCS12标准定时器的基础上增加了一些特点,用以扩展它的应用范围,特别是在汽车 ABS 方面。
基准计时器的核心仍然是一个16 位的可编程计数器,其时钟源来自一个预分频器。
该计时器可以被应用于多个方面,包括在对输入波形进行测量的同时产生一个输出波形。
波形的脉宽可以在几微秒到数秒的范围内变化。
增强型定时器模块(ECT)的结构框图如下,ECT功能相当于高速的I/O口,由一个4位预分频器、一个16位自由运行计数器,8个16位IC/OC通道,2个16位脉冲累加器以及一个16位模数递减计数器组成。
ECT实际上是一个16位的可编程计数器,它的基本时钟频率可以通过预分频器设置,用于产生波形输出,测量输入波形,统计脉冲个数,可以作为定时中断功能和独立时钟基准。
2、运行模式停止:由于时钟停止,计时器和计数器均关闭。
冻结:计时器和计数器均保持运行,直到TSCR($06)的TSFRZ 位被置1。
等待:计数器保持运行,直到TSCR($06)的TSWAI 位被置1。
正常:计时器和计数器均保持运行,直到TSCR($06)的TEN 位和MCCTL($26)的MCEN 位被分别清0。
IC 通道组IC 通道组由四个标准的缓冲通道IC0-IC3 和四个非缓冲通道IC4-IC7 组成,两部分的基本功能都是捕捉外部事件发生的时刻,但是缓冲通道除了IC/OC 寄存器TCn外,还设有保持寄存器TCnH,此外还在入口设置了延迟计数器,用来提高抗干扰能力。
非缓冲通道没有保持寄存器,入口也没有延迟计数器,但每个通道入口设置了一个2 输入端的多路器,事件触发信号可以是来自本通道的输入引脚PORTn,也可以是来自其关联通道PORT(n-4)的延迟计数器输出,使用更加灵活。
当延迟功能有效时,输入引脚检测到一个有效的边沿后,延迟计数器开始对P 时钟(模块时钟)进行计数,当到达设定的计数值后,延迟计数器在其输出端有条件地产生一个脉冲,这个条件就是延迟前后的引脚电平相反。
飞思卡尔MC9S12XS128功能模块驱动
用了一年多飞思卡尔MC9S12XS128这款处理器,现在总结下各个功能模块的驱动.//锁相环时钟的初始化总线频率为40MHz(总线时钟为锁相环时钟的一半)//晶振为11.0592MHzvoid PLL_init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) { //锁相环时钟= 2*11.0592*(39+1)/(10+1)=80MHz 总线时钟为40MHzREFDV=0x0A;SYNR=0x67; //0110_0111 低6位的值为19,高两位的值为推荐值while(CRGFLG_LOCK != 1);CLKSEL_PLLSEL = 1; //选定锁相环时钟//FCLKDIV=0x0F; //Flash Clock Divide Factor 16M/16=1M}//周期中断定时器的初始化-// //周期中断通道1用于脉冲累加器的定时采样,定时周期为: 10ms= (199+1)*(1999+1)/(40M) (没有使用)//周期中断通道0用于控制激光管的轮流发射,定时周期为: 2000us= (399+1)*(199+1)/(40M)//2011/4/4 15:24 定时时间改为1msvoid PIT_init(void){PITCFLMT_PITE = 0; // 禁止使用PIT模块 PITCFLMT :PIT 控制强制加载微计数器寄存器。
PITCE_PCE0 = 1; // 使能定时器通道0//PITCE_PCE1 = 1; //使能定时器通道1PITMUX = 0; //通道0,和通道1均选择8位微计数器0//修改时间只需要改下面四行PITMTLD0 = 199; //向8位微计数器中加载的值PITLD0 = 199; //向16位计数器中加载的值//PITMTLD1 = 39; //向8位微计数器中加载的值 8位,最大值不要超过255//PITLD1 = 1999; //向16位计数器中加载的值PITINTE |= 0x01; //使能定时器通道0的中断PITCFLMT_PITE = 1;//使能PIT模块}//脉冲累加器的初始化, PT7口外接光电编码器//最新修改: 2011/3/25 16:53void PT7_PulAcc_Init(void){DDRT &= 0x77;//设置PT7,PT3口为输入(硬件上PT7,PT3通过跳线联到了一块)PERT |= 0x80; //使能通道7的上拉电阻PPST &= 0x7f; //电阻设为上拉电阻TCTL4 &= 0x3f; //禁止PT3的输入捕捉功能PACTL = 0x50; //启动脉冲累加计数器,上升沿触发,禁止触发中断和溢出中断,主定时器禁止}//通道1用于控制舵机1 PWM 高电平有效,//通道3用于控制电机1 PWM 低电平有效,这与前两代车高电平有效有区别!!!!!//通道7用于给上排激光管提供PWM信号 PWM高电平有效!!!!!//通道6用于给下排激光管提供PWM信号 PWM高电平有效!!!!!// 2011-03-17 7:56 增加了A端口的使用新增通道6//2011-6-9 23:03 //增加了通道4,5的联合使用,用于控制下排方向舵机 void PWM_init(void){PWME = 0x00;//PWM禁止PWMPRCLK = 0x03; // ClockA=40M/8=5M, Clock B = 40M/1=40M PWMSCLB = 10; // Clock SB= 40/2*10= 2MHz(供电机)PWMSCLA = 5; // SA = Clock A/2*5 = 5M/10 = 500K = SA 用于控制舵机PWMPOL = 0xe2; //1110_0010通道7,通道6与通道1、通道5先输出高电平然后输出低电平,POLx=1先输出高电平后输出低电平; PPOLx=0先输出低电平)PWMCAE = 0x00; // 左对齐输出(CAEx=0为左对齐,反之为中心对齐)//PWMCLK = 0010_1010 (0 1 4 5位控制SA_1;或A_0; 2 3 6 7位控制SB_1 或B_0)//为PWM通道1选择时钟 SA(500KHz),//为PWM通道5选择时钟 SA(500KHz),//为通道3选择时钟 SB(10MHz)//为通道7选择时钟B(40MHz)//为通道6选择时钟B(40MHz)PWMCLK = 0x2A; //0010_1010PWMCTL = 0x70; //0111_0000 CON45=1,把通道4,5联合使用。
飞思卡尔MC9S12XS128各模块初始化程序--超详细注释
飞思卡尔MC9S12XS128各模块初始化程序--超详细注释//**************************************************************************// 武狂狼2014.5.1 整理// 新手入门的助手////***************************************************************************注释不详细/*********************************************************/函数名称:void ATD0_init(void)函数功能:ATD初始化入口参数:出口参数:/***********************************************************/void ATD0_init(void){ATD0DIEN=0x00; //使用模拟输入功能|=1;数字输入功能// ATD0CTL0=0x07; //Bit[3:0]WRAP[3:0] 反转通道选择位ATD0CTL1=0x40; // 12位精度,采样前不放电 Bit[7]ETRIGSEL(外部触发源选择位。
=0选择A/D通道AN[15:0] |=1选择 ERTIG3~0)和Bit[3:0]ETRIGCH[3:0]选择外部触发通道// Bit[6:5]SRES[1:0]A/D分辨率选择位。
Bit[4]SMP_DIS =0采样前不放电|=1采样前内部电容放电,这会增加2个A/D时钟周期的采样时间,有助于采样前进行开路检测ATD0CTL2=0x40; // 快速清零,禁止中断,禁止外部触发ATD0CTL3=0x90; // 右对齐,转换序列长度为2,非FIFOATD0CTL4=0x03; // 采样时间4个周期,PRS=31,F(ATDCLK)=F(BUS)/(2(PRS+1))// ATD0CTL5=0x30; //启动AD转换序列//:对每项数据采集时,用到哪个通道采样可在相应子函数内设置某一通道(见Sample_AD.c)while(!ATD0STAT2L_CCF0);/*********************************************************/函数名称:void PIT_init(void)函数功能:初始化PIT 设置精确定时时间(1s)入口参数:无出口参数:无说明:无/***********************************************************/void PIT_init(void){PITCFLMT=0x00; //禁止PIT模块Bit[7] PITE:PIT模块使能位,0禁用|1使能// Bit[6] PITSWAI:等待模式下PIT停止位,0等待模式下,PIT模块正常运行| 1等待模式下,PIT模块停止产生时钟信号,冻结PIT模块// Bit[5] PITFRZ: 冻结模式下PIT计数器冻结位。
飞思卡尔MC9S12XS128(定时器)ECT寄存器详解
1、定时器IC/OC功能选择寄存器TIOSIOS[7..0]IC/OC功能选择通道0 相应通道选择为输入捕捉(IC)1 相应通道选择为输出比较(OC)2、定时器比较强制寄存器 CFORCFOC[7..0]设置该寄存器某个FOCn位为1将导致在相应通道上立即产生一个输出比较动作,在初始化输出通道时候非常有用。
【说明】这个状态和正常状态下输出比较发生后,标志位未被置位后的情况相同。
3、输出比较7屏蔽寄存器 OC7MOC7M[7..0]OC7(即通道7的输出比较)具有特殊地位,它匹配时可以直接改变PT7个输出引脚的状态,并覆盖各个引脚原来的匹配动作结果,寄存器OC7M决定哪些通道将处于OC7的管理之下。
OC7M中的各位与PORTT口寄存器的各位一一对应。
当通过TIOS将某个通道设定为输出比较时,将OC7M中的相应位置1,对应的引脚就是输出状态,与DDR中的对应位的状态无关,但OC7Mn并不改变DDR相应位的状态。
【说明】OC7M具有更高的优先级,它优于通过TCTL1和TCTL2寄存器中的OMn和OLn设定的引脚动作,若OC7M中某个位置1,就会阻止相应引脚上由OM和OL设定的动作。
4、输出比较7数据寄存器 OC7DOC7D[7..0]OC7M对于其他OC输出引脚的管理限于将某个二进制值送到对应引脚,这个值保存在寄存器OC7D中的对应位中。
当OC7匹配成功后,若某个OC7Mn=1,则内部逻辑将OC7Dn送到对应引脚。
OC7D中的各位与PORTT口寄存器的各位一一对应。
当通道7比较成功时,如果OC7M中的某个位为1,OC7D中的对应位将被输出到PORTT的对应引脚。
【总结】通道7的输出比较(OC7)具有特殊的位置,在OC7Mn和OC7Dn两个寄存器设置以后,OC7成功输出后将会引起一系列的动作。
比如:OC7M0=1,则通道0处在OC7的管理下,在OC7成功后,系统会将OC7D0的逻辑数据(仅限0或者1)反应在PT0端口上。
