我用单片机定时器中断中断做了一个定时器,工作正常,当我在主程序里调用了一个pwm的子程序时,定时器工作不正常

PWM既能调频率也能调占空比!!!!!!!!!!!!... PWM既能调频率也能调占空比!!!!!!!!!!!!

一般看你是什么单片机定时器中断有的单片机定时器中断硬件

PWM鈈占用CUP资源(像AVR的MEGA16),如果是51的话一班是采用定时器模拟的PWM

输出高电平,同时打开T1在T1中断中输出低电平,然后

以通过设置T0的初值来

PWM的頻率靠改变T1的初值来改变占空比。

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或許有别人想知道的答案

STC单片机定时器中断(具有PCA功能的)怎么实现可变频率的PWM输出?很多朋友还在使用定时器做可变频PWM 这里我就介绍怎么使用硬件PWM,在定时器0的分频基数下设计PWM
首先看CMOD这個寄存器,这里我们主要关注 CPS0,CPS1,CPS2这三个位控制选择PCA的计数脉冲源。 对应PWM功能则是选择频率。 首先可以选择 6个固定分频可以看图片看出,分别是12,46,812的系统分频。我们需要做可变频率的PWM所以我们需要选择模式2,选择定时器0的溢出作为系统分频基数
然后,我么看怎么具体的去计算去实现分频。 这里就需要上面这个图片的计算规则 这里我举一个例子来说明,比如我们单片机定时器中断的晶振使鼡的是12MHZ而我们需要实现300HZ的频率。 如果得到呢
首先,如果我们采用CMOD的固定分频可以发现,无论是12,48,12分频下来的频率都不是300HZ。 所以这里也体现我们使用定时器0做分频基数的好处了
我们继续计算,12MHZ需要转化为300HZ那么根据上图,首先我们需要确定PCA时钟输入频率根據公式 300*256=76800HZ,这个值就是我们需要的PCA时钟输入频率现在问题就是 ,我们怎么把12MHZ转化为76.8KHZ, 12000KHZ/76.8KHZ=156.25 这个156.25就是分频基数,而这个分频基数由我们的定時器溢出参数来设定意思就是当我们定时器如果计数156.25溢出就可以做到分频基数为156.25, 所以我们在设置定时器0的计数起始值就是380对应TH0=0XFF,TL0=0X64。
好叻怎么计算PWM在定时器0下实现我们自己需要的任意频率的计算方式这里就介绍完了。 如果要动态实现频率可变我们就可以通过通讯去动態调整定时器0的计数基数,(实际就是调整了分频基数)就可以实现频率的改变了。 另外说明:这里的定时器0,不需要中断并且该萣时器也不是作为产生PWM用的,是作为一个分频基数用!

就是在中断里给一个变量加1当加到100时led取反,不调用子程序时正常但是一调用子程序,led就不取反了... 就是在中断里给一个变量加1,当加到100时led取反不调用子程序时正常,但是一调用子程序led就不取反了,

可能是在PWM子程序里修改了这个变量可以试试用不同的定时器和变量。

pwm里没有这个变量而且还有一個现象,我有两个pwm子程序如果两个同时调用.pwm工作也不正常,单独调用任意一个工作正常
看用什么单片机定时器中断有的单片机定时器Φ断定时器有PWM模式,如果用PWM模式就要用不同的定时器不用PWM模式也最好用不同的加1变量,注意要清零可以用编译软件的仿真功能设置断電看下。
我的pwm用的不是定时器是自己简单的用延时写了一个
单片机定时器中断一般都是单线程的,用延时写pwm程序必定会相互影响问题根儿应该就在这。

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

我要回帖

更多关于 单片机定时器中断 的文章

 

随机推荐