ATmega128 使用PWM对四路电机进行调速
最近在做一个智能小车的题目,我用的是四个直流电机,想用PWM进行调速,不知道128里面怎么输出四路PWM,望高手指教 看看手册上的相关引脚和相关寄存器的介绍,有几个可以输出PWM的! 我现在的情况是我用T/C1 产生两路PWM,但PE5的占空比不知道怎么控制它,我是这样写的:()#include<iom128v.h>
#include<macros.h>
void PWM(unsigned int f0,unsigned int t0)
{
DDRE |=0xff;//设置为输出PD5 PD6
//PD6频率为设置频率(PD5)的一半,占空比仍为50%
TCCR3A=0xab;//设置波形模式 15
TCCR3B=0X1B;//以及时钟选择,64分频
OCR3A=8000000/f0/64-1;//200HZ7372800/200/64-1=TOP575
OCR3B=OCR3A*t0/100;//1/5占空比TOP/5
}
/********主函数*********/
void main(void)
{
PWM(1000,60);
while(1);
} DDRE |=0xff;//设置为输出PD5 PD6
//PD6频率为设置频率(PD5)的一半,占空比仍为50%
不好意思,这地方没改过来,之前是16写的 问题解决了,我选错了波形产生模式,WGM3=0111 十位的快速PWM,然后分别设置OCRnA/OCRnB/OCRnC就行了!之前的程序频率只受OCRnA控制,占空比只受OCRnB控制。
现在的频率通过分频来控制,占空比由OCRnA/OCRnB/OCRnC控制,不过出来的波形不是0~5V,出现了负值,我不知道有没有其他方法,现在想用外部加法电路来补偿,有其他方法的希望多多指教 耦合方式选错了 记录,不错哈哈 尝试一下
尝试一下
页:
[1]