输出PWM信号问题咨询

2019-07-15 09:22发布

手边单片机只有一个向上计数的8位重装定时器,工作频率8MHz,我想输出一个40Khz的占空比可调的PWM信号,占空比可以从1-100%连续可调,调节步长1%。请大家指点一下如何编写,下面是我的定时器中断程序,Phase_data是控制占空比的变量,如果要想做到40K,则PWM周期要25us,做到100阶调整则定时器要0.25us中断一次了,中断程序无法实现,所以咨询一下要如何更改
void     ISR_PWM(void)                 //  定时器中断程序
{
                           
            if(Switch_Flag==1)
            {
         
                    
                    if (Phase_Counter<=Phase_data)
                    {
                             LED=1 ;
                    }
                    else
                    {
                             LED=0;        
                    }
                   if (Phase_Counter>=100)
                    {
                       Phase_Counter=0;
                    }         
                       Phase_Counter++;                 
                    
            }
         
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
abchhcba
2019-07-16 14:11
1406093611 发表于 2017-11-20 13:54
楼主这样想,单片机是8MHz的工作频率,也就是工作周期是0.125us,如果想实现40KHz的PWM波,就要确定单片机的单指令周期型还是多指令周期型。如果是单指令周期型,那么定时器计数一次就是0.125us,计满值最大时间就是32us,所以要实现0.25us的中断就没问题;但是如果是多指令周期型单片机,情况就不一样了,假如这个单片机是 ...

回复晚了,我是4周期指令的单片机,这个感觉中断速度太快了,占用资源太多,已经放弃使用中断来做了,寻了一个自带PWM模块的单片机,问题已经解决了,依然谢谢啦

一周热门 更多>