本帖最后由 xyzml 于 2020-7-12 23:43 编辑
FTM模块是16 位定时器,功能强大,可以用于中断、产生 PWM、输入
捕捉等,适合应用于电机调速、电力电子变换器控制等许多方面。
S08P中FTM共3组,有关FTM的引脚对应如下:
FTM0_CH0 A0
FTM0_CH1 A1
FTM1_CH0 C4
FTM1_CH1 C5
FTM2_CH0 C0
FTM2_CH1 C1
FTM2_CH2 C2 D0
FTM2_CH3 C3 D1
FTM2_CH4 B4
FTM2_CH5 B5
FTM2_FAULT1 A6
FTM2_FAULT2 A7
其中FTM2功能最多,有6个通道,还有2个错误联防引脚能检测错误信号,保证电路的可靠性,因此可以做直流无刷电机等要求较高的控制。今天主要测试PWM基本发波。
由于FTM寄存器较多,因此只列出此次用到的寄存器。
FTMx (x=0,1,2)
FTMx_SC 8Bit 状态控制
FTMx_CNT 16Bit 计数
FTMx_MOD 16Bit 模
FTMx_CySC 8Bit (y=0,1,2,3,4,5) 通道状态控制
FTMx_CyV 16Bit (y=0,1,2,3,4,5) 比较值,设置这个就相当于设置占空比
FTMx_SC 8Bit 状态控制
TOF TOIE CPWMS CLKS PS
0 0 0 0 0 000
[7] TOF FTM中断标志位 只读
[6] TOIE 计时器溢出中断使能
[5] CPWMS 为0:向上计数模式 为1:上下计数模式
[4:3] CLKS 时钟管理
00:没有选择时钟(即禁用FTM计数器)
01:为FTM0和FTM1选择系统时钟
10:固定频率的时钟
11:外部时钟
[2:0] PS 分频系数(分别为1,2,4,8,16,32,64,128)
FTMx_CNT 16Bit 计数寄存器
FTMx_MOD 16Bit 模寄存器
FTM计数器达到模值后,在下一个时钟设置中断溢出标志TOF
FTMx_CySC 8Bit (y=0,1,2,3,4,5) 通道状态控制
通道状态与控制,用于配置通道及其中断状态标志、控制位中断启用和引脚功能。
CHF CHIE MSB MSA ELSB ELSA X X
0 0 1 0 1 0 00
[7] CHF 通道事件产生标志位(只读)1产生0没有
[6] CHIE=0 0禁用通道中断使用软件中断 1启用通道中断
[5:4] MSn=10 通道模式选择01比较 1X 边沿对齐PWM.. (具体其他功能详见手册)
[3:2] ELSn=10 设置边沿输出匹配 10:高脉冲 X1: 低脉冲 (具体其他功能详见手册)
[1:0]保留
以下是根据官方例程,FTM1配置一个占空比随时间发生变化的PWM输出
(1)FTM-PWM初始化
- void FTM1_Init( void )
- {
- //FTM frequency = CLKS/PS/MOD=16M/1/100Hz
- FTM1_MOD = 99; //模:100
- FTM1_C1SC = 0x28; //边沿PWM-高脉冲
- FTM1_C1V = 1; //占空比2%
- FTM1_SC = 0x00; //不使能
- }
复制代码 FTM-PWM打开
- void FTM1_Start( void )
- {
- FTM1_SC = 0x10; // clock source = 10, 固定频率时钟 向上计数 不分频
-
- }
复制代码 (3)定时器0初始化(同上期)
(4)在定时器0中设置占空比随时间递增(每0.02s PWMcnt++;)
- uint16_t mtim0_count = 0;
- interrupt VectorNumber_Vmtim0 void Mtim0_ISR(void)
- {
- if(MTIM0_SC_TOF) // 清除标志位
- {
- MTIM0_SC_TOF = 0;
- }
- mtim0_count++;
- if (mtim0_count > 20)
- {
- PWMcnt++;
- mtim0_count = 0;
- }
- if (PWMcnt==100) PWMcnt=0;
-
- }
复制代码 (5)main函数循环中刷新占空比。为了现象直观,在主函数中将FTM-CH1值给到LED不断刷新
- FTM1_C1V=PWMcnt;
- PORT_PTCIE_PTCIE5=1;
- LED1=PORT_PTCD_PTCD5;
- LED2=PORT_PTCD_PTCD5;
- LED3=PORT_PTCD_PTCD5;//PTC5/FTM1CH1
- PORT_PTCIE_PTCIE5=0;
复制代码
实际运行效果如下:LED共阳,占空比越来越大所以此时可看到LED随时间逐渐变暗
参考资料:
[1]MC9S08PT60芯片手册
[2]MC9S08PT60数据手册
[3]MC9S08PT60官方教程
[4]官方例程S08P_LITE_SAMPLES
[5]S08P_LITE说明书
本人知识水平与能力有限,难免有误,欢迎各位大佬们对存在的不足进行批评指正
|