梁工 发表于 2024-4-7 11:51:49

leitang 发表于 2024-4-5 20:49
还有一点就是10位的重装值改写时必须要先关了pwm使能,然后写,再打开pwm使能,这样才能让其跟着采样值走 ...

我写个程序给你,等下。

leitang 发表于 2024-4-7 17:22:25

梁工 发表于 2024-4-7 11:51
我写个程序给你,等下。

好的,梁工

leitang 发表于 2024-4-7 17:32:38

本帖最后由 leitang 于 2024-4-7 17:35 编辑

电子DIY小家 发表于 2024-4-7 11:43
串口打印一下val的数值,看下到底adc的问题还是pwm的问题
冲哥,我这个adc用于7位pwm是没有问题的,应该还是pwm的问题,当然也可能是两个结合的问题
主要我这边没有串口打印,所以看不了val的值{:4_167:}

梁工 发表于 2024-4-7 17:43:36

leitang 发表于 2024-4-5 19:47
void PCA_Init()
{
      CCON=0x00;//关闭PCA计数器,清除相关标志位


你初始化ADC的程序再哪呢?没看到

leitang 发表于 2024-4-7 17:44:54

梁工 发表于 2024-4-7 17:43
你初始化ADC的程序再哪呢?没看到

/*------------------------AD采样-----------------------------*/
void Get_ADC(unsigned char channel)//channel =2~3
{
    P_SW2 |= 0x80;                              //使能访问XFR
    ADCTIM = 0x29;                              //设置ADC内部时序,达到该单片机的采样转换速率的极限500k
    P_SW2 &= 0x7f;
    ADCCFG = 0x20;                              //设置ADC时钟为内部时钟的1/2,转换右对齐

    ADC_CONTR = 0x80;                           //使能ADC模块

    ADC_RES = 0;
    ADC_RESL = 0;

    ADC_CONTR = (ADC_CONTR & 0xF0) | 0x40 | channel;    //启动AD转换和adc通道选择

    _nop_();
    _nop_();
    _nop_();
    _nop_();

    while((ADC_CONTR & 0x20) == 0);   //wait for ADC finish
    ADC_CONTR &= ~0x20;   //清除ADC结束标志

}

梁工 发表于 2024-4-7 17:47:48

leitang 发表于 2024-4-7 17:44
/*------------------------AD采样-----------------------------*/
void Get_ADC(unsigned char channel ...

应该分开初始化和ADC转换两个函数。每次由关闭到打开ADC电源,至少要延时1ms以上才做ADC。

leitang 发表于 2024-4-7 19:21:21

梁工 发表于 2024-4-7 17:47
应该分开初始化和ADC转换两个函数。每次由关闭到打开ADC电源,至少要延时1ms以上才做ADC。 ...

梁工,我按你的说法,加了一个延时,确实是可以了,但还是pwm还有很明显的抖动,这个如何处理




梁工 发表于 2024-4-7 23:02:02

leitang 发表于 2024-4-7 19:21
梁工,我按你的说法,加了一个延时,确实是可以了,但还是pwm还有很明显的抖动,这个如何处理



10位PWM例程写好了,测试无任何问题,
P1.2接电位器输入ADC2,10位ADC结果送PCA2-P3.7输出10位PWM,
下载选择11.0592MHz主频的话,PWM频率就是11059200/1024=10800Hz。


用户请先别修改程序, 直接下载"ADC.hex"测试.
下载时选择主频11.0592MHZ(其它频率也可以)。
本程序演示ADC2(P1.2)接电位器并将ADC值送给
10位PWM2输出(P3.7-PCA2).




请看视频:





leitang 发表于 2024-4-8 08:50:48

梁工 发表于 2024-4-7 23:02
10位PWM例程写好了,测试无任何问题,
P1.2接电位器输入ADC2,10位ADC结果送PCA2-P3.7输出10位PWM,
下载 ...

好的,感谢梁工{:4_213:}

梁工 发表于 2024-4-8 10:09:03

leitang 发表于 2024-4-8 08:50
好的,感谢梁工

你测试正常了?
页: 1 2 [3] 4
查看完整版本: 8G系列的PCA/CCP/PWM, 10位PWM