您的位置 首页 胎压OE替换件

Freescale MC9S08单片机芯定时器6

Freescale MC9S08单片机芯定时器6

1、MC9S08AW60有几个TPM模块?每个模块有几个通道?每个通道都有什么功能?每个TPM模块有几个中断资源?

(1)2

(2)TPM1:6            TPM2:2

(3)输入捕捉,输出比较,PWM

(4)TPM1有7个中断源(一个溢出事件6个通道事件),TPM2有3个中断源(一个溢出事件,2个通道事件)

2、TPM模块的核心部分有几个控制寄存器?都有什么功能?如果设计一个定时间隔时要进行什么设置?(如设计接在B口上的八个LED每隔500ms一亮一灭)完成这个功能的程序设计?

(1)1个

(2)D7:TOF 定时器溢出标志位

D6:TOIE 定时器溢出中断允许位

D5:CPWMS 中心对齐PWM选择位

D3~D4:CLKS 时钟源选择位

D2~D0:定时器分频因子选择位

(3)【注:程序仅为大体思路,变量的定义等细节自己注意】

TPM初始化

void TPM1Init(void){

TPM1SC=( 0b00010111);

//TPM1时钟源选择系统时钟(20MHZ), 分频因子128

TPM1MODH= 0x3D ;

TPM1MODL= 0x09 ; //根据时钟源及分频因子,将TPM1的定时时间设定为100ms

TPM1CNTH=0x00;

TPM1CNTL=0x00;

}

注意:定时器设置TPMxMODH:L的值必须先要列出计算该值的计算过程

计算方式为:

(1/系统时钟)*分频因子=a 设定时间ms/a*10^-3(最后的值不能超过65535)

中断实现灯灭灯亮

interrupt 11 void TPM1_100msover(void)

{

uint8 temp;

Count_100ms++;

while(Count_100ms== 5 ){

PTBD= ~PTBD ;

Count_100ms= 0 ;

}

temp = TPM1SC ;

TPM1SC&=~TPM1SC_TOF_MASK;

}

3、每个TPM模块的每个通道有什么控制寄存器?各控制寄存器的功能?
TPM通道数值寄存器:当指定的沿跳变发生(即定时系统捕捉到沿跳变)时,锁存计数寄存器的值
TPM通道状态和控制寄存器:

4、TPM模块的某个通道设置为输入捕捉,并计数捕捉到的脉冲数(例如TPM1 的通道0上接入光电编码器,设计完成相关程序使通道0对光电编码的输出 脉冲计数)
TPM1的初始化
void TPM1Init(void){
TPM1SC= 0b00001110 ;
//TPM1不允许溢出中断, 时钟源选择系统时钟(20MHZ), 分频因子64
TPM1MODH= 0x18 ;
TPM1MODL= 0x6A ; //如果只是输入捕捉并不需要一个特定的定时周期,只要定时 器工作就可以
TPM1CNTH=0x00;
TPM1CNTL=0x00;
}
void TPM1ChInit(void){
//设置通道0允许中断,输入捕捉,捕捉上升沿
TPM1C0SC= 0b00000100; }
中断完成脉冲计数
interrupt 13 void TPM1Ch0_isr(void){
uint8 temp;
uint16 P2_count;
P2_count++;
if (P2_count==65535) {
P2_count=0;
P2Sum++;
}
temp= TPM1C0SC ;
TPM1C0SC&= ~(TPM1C0SC-CH1F-MASK); //清除中断标志位
}

5、TPM模块的某个通道设置为输出比较,输出方波(例如TPM1的通道1输 出10KHZ的方波,设计完成相关程序)
TPM1的初始化
void TPM1Init(void){
TPM1SC= 0b00001001 ;
//TPM1不允许溢出中断, 时钟源选择系统时钟(20MHZ), 分频因子2
TPM1MODH= 0x01 ;
TPM1MODL= 0xF4 ; //根据时钟源及分频因子,将TPM1的定时周期设定为0.1ms
【注:周期两倍的关系,即真正计算时间为50us;周期设定计算方法为:1/10kHZ】
TPM1CNTH=0x00;
TPM1CNTL=0x00;
}
void TPM1ChInit(void){
//设置通道1为禁止中断,输出比较输出方式为翻转
TPM1C1SC= 0b01010100;
//以下两行可设可不设
TPM1C1VH=0x01;
TPM1C1VL=0x01;
}

6、TPM模块的某个通道输出某个占空比的PWM脉冲(例如TPM1的通道2输 出20KHZ、占空比为60%的PWM,设计相关程序)
TPM初始化
void TPM1Init(void)
{
//设置TPM1禁止溢出中断,时钟源为总线时钟,2分频
TPM1SC= 0b00001001;
TPM1CNTH=0x00;
TPM1CNTL=0x00;
TPM1MODH=0x01 ;
TPM1MODL=0xF4;
}

void TPM1Ch_Init(void) {
TPM1C2SC= 0b00101000 ;
//设置TPM1通道2不允许中断,low-truePWM方式
TPM1C2VL=((模数寄存器值/100 )*60 )/256;
TPM1C2VH=((模数寄存器值/100 )*60 )%256;
}

Freescale MC9S08单片机芯定时器6 胎压OE替换件 第1张

注:整理自网络

 

版权所有,如未注明,均为原创,转载请注明
齐东汽车电子博客 qidongyy.com
本文标题:Freescale MC9S08单片机芯定时器6
如有疑问:请转到这里联系我
网站建设:推荐老薛主机-优质海外主机服务商

热门文章