TPM模块在伺服电机中的应用
MC9S08DZ60 拥有8路独立的PWM通道,可以独立配置PWM的频率和占空比,最高频率为总线时钟频率20MHz,可以满足对舵机和电机的控制。同时此模块还有两路计数器模块,可以采集码盘返回的电机速度值,以便用于速度闭环控制。其中电机控制中的PWM初始化如下:
void Motor_init(void)
{
TPM2SC = 0x00; /* Stop and
reset counter */
TPM2MOD = VV_MAX;//15khz /* Period value setting */
(void)(TPM2C0SC == 0); /* Channel 0 int. flag clearing (first part) */
/* TPM2C0SC: CH0F=0,CH0IE=0,MS0B=1,MS0A=0,ELS0B=0,ELS0A=4 */
TPM2C0SC = 0x24;
/* Int. flag clearing (2nd part) and channel 0 contr. register setting */
TPM2C0V = VV_MAX/2; //50%占空比 /* Compare 0 value setting */
(void)(TPM2SC == 0); /* OveRFlow int. flag clearing (first part) */
/* TPM2SC: TOF="0",TOIE=0,CPWMS=0,CLKSB=0,CLKSA=1,PS2=0,PS1=0,PS0=0 */
TPM2SC = 0x08; /* Int. flag clearing (2nd part) and timer control register setting */
}
普通I/O接口的应用
MC9S08DZ60单片机的普通I/O口操作可以用于逻辑控制、显示控制、信息采集等,其中对各个引脚的配置也比较简单,需要配置方向寄存器PTXDD、上拉使能寄存器PTXPE,压摆率寄存器PTXSE及数据寄存器PTXD,以A口为例:
Int_A()
{
PTADD=0X00;//作为输入
PTAPE=0XFF;//上拉使能
PTASE=0XFF;//压摆率使能
}
程序需要读取A口数据时直接读出PTAD寄存器的值即可。
结语
该系统实现了智能车车中各模块间的通信,对芯片的资源进行了充分的利用,实现了智能车多状态的实时监测,保证了车模的速度控制和路径优化,为以后的技术发展提供了很好的平台。