通道寄存器主要负责完成TPM模块中与具体通道操作有关的控制与设置,包括通道状态和控制寄存器、通道值寄存器等。
1.通道状态和控制寄存器(TPMxCnSC)
定时器每个通道都包含一个通道状态和控制寄存器TPMxCnSC(Timer x Channel n Status and Control Register),用来配置通道、控制通道中断、标记通道状态和设置引脚功能等。TPMxCnSC中的x用来表示定时器数(MC9S08AC16单片机中有3个定时器模块,此处的x分别可取1、2或3),n表示通道数(每个定时器模块所具有通道个数与芯片引脚有关,具体可参考芯片手册),通道n状态和控制寄存器(TPMxCnSC)见表8-8。
表8-8 通道n状态和控制寄存器(TPMxCnSC)
●CHnF:通道n标志位。当通道n为输入捕捉通道时,通道n上的有效边沿会触发该位置位。当通道n为输出比较或边沿/中心对齐PWM通道时,当TPM计数器的值等于通道n通道值寄存器的值时CHnF被置位。当通道n为边沿对齐/中心对齐PWM通道且占空比被设为0%或100%时,即便当TPM计数器的值等于通道值寄存器的数值时,CHnF也不会被置位。当CHnF被置位且中断允许(ChnIE=1)时,模块会产生相应的中断请求。使用时可通过读TPMxCnSC,并向CHnF写0清空CHnF标记位。
在清除CHnF标记位时,如果另一个中断请求发生,则清除过程复位,CHnF在清除过程完成后仍保持置位状态。这样确保了中断请求在前一个CHnF完成清除期间不会丢失。
0:无输入捕捉或输出比较事件发生在通道n上。
1:输入捕捉或输出比较事件发生在通道n上。
●CHnIE:通道n中断使能位。该位使能通道n的中断,复位将清空CHnIE。
0:禁止通道n中断请求。
1:允许通道n中断请求。
●MSnB:TPM通道n的模式。当CPWMS=0,MSnB=1时,配置TPM通道n为边沿对齐PWM模式。当CPWMS=0,MSnB=0时,MSnA配置TPM通道n为输入捕捉模式或输出比较模式。具体参阅表8-9中的通道模式和设置控制。
表8-9 模式、边沿和电位选择表(www.xing528.com)
注:在转变为输入捕捉模式之前,如果相关端口引脚在至少两个总线时钟周期内不稳定,将会出现意外的边沿触发。
●ELSnB、ELSnA:边沿/电平选择位。根据CPWMS及MSnB:MSnA设置表8-9所列的定时器通道的运行模式,可选择触发输入捕捉事件的输入边的极性;选择满足输出比较匹配后的输出电平类型或选择PWM输出的极性。
通过设置ELSnB:ELSnA=00可配置相关定时器引脚作为通用I/O引脚。这种功能常用于暂时禁止输入捕捉或当相关定时器通道被设为不需使用引脚的软定时器时,使定时器模块引脚作通用I/O脚使用。
2.通道值寄存器(TPMxCnVH:TPMxCnVL)
TPM模块的每个通道都包含有两个8位的通道值寄存器TPMxCnVH和TPMxCnVL(Timer x Channel Value Registers)。这些可读/写寄存器用于存放输入捕捉功能捕捉的TPM计数器值、输出比较或PWM功能比较值。该通道寄存器可通过复位清除,通道值寄存器高位(TPMxCnVH)与通道值寄存器(TPMxCnVL)分别如表8-10和表8-11所示。
表8-10 通道值寄存器高位(TPMxCnVH)
表8-11 通道值寄存器低位(TPMxCnVL)
在输入捕捉模式下,读取TPMxCnVH和TPMxCnVL的任一字节,寄存器两个字节的内容将被锁存到缓冲器中,直至读取另外一个字节。在输出比较或PWM模式下,写TPMxCnVH和TPMxCnVL其中的任一字节,其值也将锁存到缓冲区直到两个都被写完后,再根据CLKSB:CLKSA位的值和所选的模式被转换成一个16位值放入到定时器通道值寄存器内。
如果CLKSB:CLKSA=00,则当第二个字节被写入时寄存器被更新。如果CLKSB:CLKSA≠00且在输出比较模式下,在第二个字节被写后并且在TPM计数器下个变化时寄存器被更新。如果CLKSB:CLKSA≠00且在边沿PWM或中心对齐PWM模式下,在两个字节被写后,TPM计数器从TPMxMODH:TPMxMODL-1变为TPMxMODH:TPMxMODL后寄存器被更新。如果TPM计数器是自运行计数器,则当TPM计数器从0XFFFE变为0XFFFF时发生更新操作。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。