MC9S12XS128中文资料

  • 格式:doc
  • 大小:490.00 KB
  • 文档页数:38

下载文档原格式

  / 38
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
向计数器写入任何值都将导致计数器复位至0、计数方向重置为向上。在有效周期末,计数器同样会被清零。只有当通道使能时计数器才进行计数。改变计数器的值应该在该通道禁止时进行。
若某个通道正在执行PWM功能,使用PWMEx=0禁止该通道,则该通道的计数器将“冻结”,下次使能该通道时,计数器将接着上次停止的地方继续计数,而不是重新从0开始。若要开始一个新的PWM脉冲波形,则应在使能前写一次计数器。
TCTL1控制4~7通道,TCTL2控制0~3通道。
To operate the 16-bit pulse accumulator independently of input capture or output compare 7 and 0 respectively the user must set the corresponding bits IOSx = 1, OMx = 0 and OLx = 0. OC7M7 in the OC7M register must also be cleared.
PWMPER0=255; //设定输出周期=通道时钟周期*256
PWMDTY0=150;//占空比初始为0 Duty is 50%,and PWM waveform's frequent is 16
PWME=0X01;//通道0使能enable pwm channel 0
}
void main(void)
大部分I/O引脚可由相应的寄存器位来配置选择数据方向、驱动能力,使能上拉或下拉式装置。
当用作通用IO口时,所有的端口都有数据寄存器和数据方向寄存器。
对于端口T, S, M, P, H,和J有基于每个针脚的上拉和下拉控制寄存器。
对于端口AD有基于每个针脚的上拉寄存器。
对于端口A、B、E和K,有一个基于端口的上拉控制寄存器。
TTOV:
定时器溢出时触发寄存器。
该寄存器功能仅在相应通道行使输出比较功能时有效。当相应位置位并且定时器计数器溢出时,将优先于CFORC寄存器(除通道7以外)触发相应引脚。
TCTL1/TCTL2:
定时器控制寄存器1/2。
这两个寄存器中,每两位确定一个输出比较通道在成功发生一次比较后采取何种输出动作,这两位分别是OMx、OLx。他们的组合有四种,对应四种动作方式。
PWM标度B寄存器。用于控制Clock SB的值,Clock SB = Clock A / (2 * PWMSCLB),当PWMSCLB=0x00时,相当于PWMSCLB=256。
PWMCNTx:
PWM通道计数寄存器。
每个通道都有一个独立的8位计数器,其计数速率由所选择的时钟源决定。计数器的值可以随时读取而不影响计数器运行,也不影响PWM波形输出。在左对齐模式时,计数器从0计数至周期寄存器的值减1;在中心对齐模式,计数器从0计数至周期寄存器的值,然后再倒计数至0。
{
PWMinitial();
EnableInterrupts;
for(;;)
{
_FEED_COP(); /* feeds the dog */
}
}
第三章定时器模块
基本的定时器模块由1个增强的可编程预分频器驱动的可编程计数器、8个输入捕捉/输出比较通道和1个脉冲累加器组成。定时器模块一共有8个引脚,其中脉冲累加器与第7号通道的引脚是共用的。
PWMPERx:
PWM通道周期寄存器。
每个通道都有一个独立的8位周期寄存器,它的值将间接决定该通道的PWM波形周期。该寄存器采用双缓冲器设计,即写入的新值不立即生效,直到本次有效周期结束或者计数器寄存器清零或者该通道被禁止。读该寄存器将返回最近一次写入的值(不一定是当前生效的值)。复位将重置值为0xFF。
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.
PWMPOL:
PWM极性寄存器。PPOLx=1,则该通道的周期初始输出为高电平,达到占空比后变为低电平;相反,若PPOLx=0,则初始输出为低电平,达到占空比后变为高电平。
PWMCLK:
PWM时钟源选择寄存器。0、1、4、5通道,PCLKx=0使用Clock A,PCLKx=1使用Clock SA;2、3、6、7通道,PCLKx=0使用Clock B,PCLKx=1使用Clock SB。
PWMSDN:
PWM紧急关断寄存器。
参考程序:
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
void PWMinitial()
Clock A、Clock B由下面的PWMPRCLK设置。
PWMPRCLK:
PWM预分频时钟源选择寄存器。
控制Clock A、Clock B的值。
PWMCAE:
PWM中心对齐使能寄存器。CAEx=1,该通道为中心对齐;CAEx=0,该通道为左对齐。
PWMCTL:
PWM控制寄存器。CONxx=1,则相应的两个通道级联使用,否则单独使用。级联后,整个级联通道由低位通道(通道数大的)的各个寄存器控制,高位通道(通道数小的)不起作用。
级联模式下,向高位通道或低位通道计数器寄存器写值,等同于向16位级联计数器寄存器写值,也即重置为0。
PWMSCLA:
PWM标度A寄存器。用于控制Clock SA的值,Clock SA = Clock A / (2 * PWMSCLA),当PWMSCLA=0x00时,相当于PWMSCLA=256。
PWMSCLB:
下面给出了如何由占空寄存器的值计算最终PWM输出波形的占空比:
Polarity = 0 (PPOLx = 0)
Duty Cycle = [(PWMPERx - PWMDTYx) / PWMPERx] * 100%
Polarity = 1 (PPOLx = 1)
Duty Cycle = [PWMDTYx / PWMPERx] * 100%
对于端口T, S, M, P, H, J,和AD,有基于每个针脚的降额输出驱动控制寄存器。
对于端口A, B, E,和K,有一个基于端口的降额输出驱动控制寄存器。
对于端口S、M,有漏极开路(线或)控制寄存器。
对于端口P、H和J,有基于每个针脚的中断标志寄存器。
纯通用IO端口共计有41个,分别是:
PA[7:0]
CFORC:
定时器比较强制寄存器。复位值为0x00。
FOCx=1将强制该位对应通道产生输出比较成功动作,但CxF中断标志位不置位。任何通道的强制比较成功动作若与普通比较成功动作同时发生,则强制比较成功动作优先发生,且CxF标志位不会置位。
被置位后瞬间将自动清除该位,所以任何时候对该寄存器的读动作都将返回0x00。
{
PWMPOL=0X01;//通道0输出波形开始极性为1 output waveform which high first then low when the duty counter is reached
PWMCAE=0x00; //左对齐输出模式output left align waveform
TIOS:
定时器输入捕捉/输出比较选择寄存器。复位值为0x00。
IOSx=0,相应通道行使输入捕捉,输入捕捉用来获取当外部事件发生时定时器计数器(TCNT)的值,当预期的触发事件输入到该通道上,定时器将把定时器计数器中的当前值传送到该通道的TCx寄存器中,然后置位TFLG1中的CxF标志位,若TIE中的CxI=1,则将触发该通道输入捕捉中断请求;而当IOSx=1,相应通道行使输出比较,输出比较用来在相应引脚上产生可定制周期、频率和极性的脉冲,当定时器计数器中的值步进至与该通道TCx中的预设值相等时,若OCPDx=0,定时器将置位、清零或者触发该通道的引脚,然后置位TFLG1中的CxF标志位,若TIE中的CxI=1,则将触发钙通道输出比较中断请求。
PWMx Period = Clock (A, B, SA, or SB) * (2 * PWMPERx)
PWMx Frequency = Clock (A, B, SA, or SB) / (2 * PWMPERx)
PWMDTYx:
PWM占空寄存器。每个通道都有一个独立的8位占空寄存器,它的值将间接决定该通道的PWM波形占空比。该寄存器采用双缓冲器设计,即写入的新值不立即生效,直到本次有效周期结束或者计数器寄存器清零或者该通道被禁止。读该寄存器将返回最近一次写入的值(不一定是当前生效的值)。复位将重置值为0xFF。
OC7D:
输出比较7数据寄存器。复位值为0x00。
A channel 7 output compare can cause bits in the output compare 7 data register to transfer to the timer port data register depending on the output compare 7 mask register.
PB[7:0]
PE[6:5]
PE[3:2]
PK[7,5:0]
PM[7:6]
PH[7:0] (带中断输入)
PJ[7:6] (带中断输入)
PJ[1:0] (带中断输入)
第二章脉冲宽度调制模块
XS128具有8位8通道的PWM,ห้องสมุดไป่ตู้邻的两个通道可以级联组成16位的通道。
PWME:
PWM通道使能寄存器。PWMEx=1将立即使能该通道PWM波形输出。若两个通道级联组成一个16位通道,则低位通道(通道数大的)的使能寄存器成为该级联通道的使能寄存器,高位通道(通道数小的)的使能寄存器和高位的波形输出是无效的。
TCNT:
定时器计数寄存器。复位值为0x0000。
这是一个16位的寄存器,注意要使用字访问,不要单独访问高位或低位。该计数器向上计数至0xFFFF时将溢出至0x0000并触发定时器计数器溢出中断。向该寄存器写入值是无意义或无效的。
TSCR1:
定时器系统控制寄存器1。复位值为0x00。
TEN为定时器使能位,置位将启动主定时器模块,清零将关闭。清零后不影响脉冲累加计数器模块在事件计数器模式单独工作。
第一章端口整合模块
端口A,B和K为通用I/O接口
端口E整合了IRQ,XIRQ中断输入
端口T整合了1个定时模块
端口S整合了2个SCI模块和1个SPI模块
端口M整合了1个MSCAN
端口P整合了PWM模块,同时可用作外部中断源输入
端口H和J为通用I/O接口,同时可用作外部中断源输入
端口AD整合了1个16位通道ATD模块
TFFCA为定时器所有标志位快速清零位,置位时将在访问某些寄存器时才清零TFLG1、TFLG2、PAFLG中的相应标志位;清零时将正常执行清零动作。该位默认是清零的。
PRNT确定定时器预分频器分频比从何选择。PRNT=0,则预分频比由TSCR2中的PR0、PR1、PR2决定;若PRNT=1,则由PTPSR寄存器决定。该寄存器在每次复位后只能写入一次。
PWMCLK=0X01; //PWM时钟源为SAClock SA is the clock source for PWM channel 0
PWMPRCLK=0X03; //时钟A8分频Clock A is 8MHz/8=1MHz
PWMSCLA=0X80; //时钟SA为1MHz/128/2 Clock SA is 1MHz/128/2=4KHz
下面给出了如何由周期寄存器的值计算最终PWM输出波形的周期与频率:
左对齐输出:(CAEx = 0)
PWMx Period = Clock (A, B, SA, or SB) * PWMPERx
PWMx Frequency = Clock (A, B, SA, or SB) / PWMPERx
中心对齐输出:(CAEx=1)

相关主题