本帖最后由 破力达 于 2016-3-11 13:06 编辑
我使用
pca来产生3路pwm,但是pca模块2就是输不出pwm。我已经把p37引脚初始化成强推挽,但是还不行。我换个了个stc15f的单片机使用一样的程序,一样的电路(其实我这个也没有任何外部电路),这个就可以正常输出3路pwm,所以我可以确定单片机外围电路是没问题的。一开始我以为是那个stc15wpca模块2坏掉了,后来我换了2个单片机还是这样。
但是有一个奇怪的现象
:我把pca模块2产生的pwm的p37管脚切换到p27时他就有反应,但是他输出的pwm只有几百毫伏,而且电压不稳定波动大,而且不受控制,它输出的占空比会随着其他两路PCA模块产生的pwm的变化而变化。
我也试过用
isp下载软件中的范例程序直接下载进去看过也是同样的问题
这是我的程序#include <STC15W.H>#define uchar unsigned char#define uint unsigned int
void delay_long(uint y) //
延时(ms){uint i,j;y=7*y;for(i=y;i>0;i--)for(j=160;j>0;j--);}
void PWM_init(){P2M0=0XFF;P2M1=0X00;
P3M0=0XFF;P3M1=0X00;
P_SW1 =0x00; //CCP_S0=0 CCP_S1=0 //(P1.2/ECI, P1.1/CCP0, P1.0/CCP1, P3.7/CCP2) 00--0000
// P_SW1 =0x10; //CCP_S0=1 CCP_S1=0 (P3.4/ECI_2, P3.5/CCP0_2, P3.6/CCP1_2, P3.7/CCP2_2)
// P_SW1 =0x20; //CCP_S0=0 CCP_S1=1 (P2.4/ECI_3, P2.5/CCP0_3, P2.6/CCP1_3, P2.7/CCP2_3)
CCON = 0; //
初始化PCA控制寄存器 //PCA
定时器停止 //
清除CF标志 //
清除模块中断标志
CL = 0; //
复位PCA寄存器 CH = 0; CMOD = 0x08; //
设置PCA时钟源 //
禁止PCA定时器溢出中断
PCA_PWM0 = 0x00; //PCA
模块0工作于8位PWM CCAPM0 = 0x42; //PCA
模块0为PWM模式 PCA_PWM1 = 0x00; //PCA
模块1工作于8位PWM CCAPM1 = 0x42; //PCA
模块1为PWM模式
PCA_PWM2 = 0x40; //PCA
模块2工作于8位PWM CCAPM2 = 0x42; //PCA
模块2为PWM模式
CR = 1; //PCA
定时器开始工作}
void main(){uchar pwm;
PWM_init();
while (1){CCAP0H = CCAP0L = 255-pwm; //PWM0
的占空比 ((100H-20H)/100H)CCAP1H = CCAP1L = pwm; //PWM1
的占空比((100H-20H)/100H)CCAP2H = CCAP2L = 255-pwm; //PWM1
的占空比((100H-20H)/100H)
pwm++;delay_long(100);}}
在这我想插个题外话。我很喜欢这个
论坛和这个论坛的app,他对我有很大的帮助。但是我也不知道为什么我在
手机上的app发表了一次(无论是发帖还是回复)那么我这一天就不能再发表任何言论了,只要你一发表他就会出现发表失败,无论是在手机上发表言论还是网页上论坛发表言论都是一样。这也是我为什么借助这次发帖提问题说着这个与主题毫无关系的话原因。谁能跟我解释一下这到底是为什么吗?谢谢
一周热门 更多>