目前,用MC9S08系列进行呼吸灯设计,前期电路设计过程中,LED口没有连接到PTF等PWM口上,所以现在只能采用GPIO模式进行设计,主要思路是:
1)目前测试方案:利用中断定时器进行设计,通过更改中断定时时间来做到改变LED亮度的调整,类似于PWM占空比变化。
2)另外一个方案:利用PWM接口的占空比变化做到亮度调整,但是由于我的LED口没有设计在专用口上,没有这个方案有点局限。
进行第一种方案是出现的问题:
1)意图通过进入定时器溢出中断时,重新复制TPM1MODH:TPM1MODL,从而达到改变定时器时间的效果,但是实际测试过程中发现,目前的定时时间一直为第一次写入TPM1MOD的设置值。
2)如果采用PWM占空比变化,是否可以不直接硬性采用Chx通道输出,而是可以进入中断处理从而改变LED连接的通用口赋值。
如下附上,中断处理函数。
uint_8 dummy=0;
uint_16 time_tmp=0xFFF0;
void interrupt VectorNumber_Vtpm1ovf TPM_ISR(void)
{
TPM1SC &=0x0F ;
PTCD_PTCD4^=1;
if(time_tmp>0x0020)
time_tmp-=0x20;
TPM1MODH=(uint_8)(time_tmp>>8);
TPM1MODL=(uint_8)(time_tmp>>0);
dummy=TPM1SC;
TPM1SC =0x4F;
} |