比较模式4或5产生PWM控制电机
cc2530吧
全部回复
仅看楼主
level 1
想法:我买了个模拟信号的电机,查资料知要不断的输送PWM信号保持角度,因此不能再main()里面产生PWM,于是选择用定时器的比较模式
做法:在P1_0产生PWM波,默认位置2,通道2产生PWM:
P2SEL&=~0x10;
P2DIR|=0Xc0;
T1CTL|=0x04;//8分频,暂停计数 000 01 000
PERCFG|=0X40;//定时器1默认位置2
P1DIR|=0x01;//输出模式
P1SEL|=0x01;//外设模式
/*上面一段是没问题的,我尝试过用LED观察(疫情期间在家没有示波器用...)*/
比较模式4/5:
T1CCTL2=0x2c;//00 101 100 比较模式4,
/*这是几天前的帖学会用的,那次是方式2,成功生成了方波,理论上4或5都可以吧?*/
接下来是PWM各个时间:
CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振1011 1111
while(CLKCONSTA & 0x40); //等待晶振稳定
CLKCONCMD &= ~0x07; //设置系统主时钟频率为32MHZ
CLKCONCMD|=0x08; //00 001 000定时器最高频率16Mhz
T1CC2L=rate[0]%256;
T1CC2H=rate[0]/256;
T1CC0L = 40000%256;//一个周期
T1CC0H = 40000/256;
舵机需要一个20ms周期的矩形波. 计算方法:1/(16M/8)*40000=0.02
uint rate[7]={1000,1667,2334,3000,3667,4334,5000};//0 30 60 90 120 150 180角度
用外部中断决定角度.
2020年03月30日 15点03分 1
level 1
问题是舵机没反应...
分析:1.连线问题,多次查询是没问题的.用的TIANKONGRC TS90A红电源棕地橙信号...橙连了P1_0
分析2:产生的PWM波不正确...最有可能在这,但是我多次检查代码觉得没问题...
另外我注意到了一个小细节...我用的学习板.P1_0上连着一个LED和一个电阻.难道和这个又关系?求助!
2020年03月30日 15点03分 2
而这个LED微弱地亮着
2020年03月30日 15点03分
因该说是开发板?= =
2020年03月30日 15点03分
其实学这个PWM应该先调出一个PWM调光出来,但是我掌握不好周期啊...要嘛一直亮着,要嘛太暗分不出差别- -就跳过了
2020年03月30日 15点03分
实在不行,像51那样在定时器中断跳1/0生成吧- -...但是毕竟毕设,用上这个作出PWM可以多写一点.
2020年03月30日 15点03分
level 1
我试着换一个通道吧
2020年03月30日 15点03分 4
换了个通道...没有用...
2020年03月30日 15点03分
level 1
噢?奇了怪了,刚才突然动了一下....
2020年03月30日 15点03分 5
level 1
怎么只有楼主一人自言自语[汗]
2022年05月27日 09点05分 6
1