找回密码
 立即注册
楼主: lei***

STC8G系列的PCA/CCP/PWM, 10位PWM

[复制链接]

该用户从未签到

46

主题

2934

回帖

6617

积分

超级版主

积分
6617
发表于 2024-4-7 11:51:49 | 显示全部楼层
leitang 发表于 2024-4-5 20:49
还有一点就是10位的重装值改写时必须要先关了pwm使能,然后写,再打开pwm使能,这样才能让其跟着采样值走 ...

我写个程序给你,等下。
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    擦汗
    6 小时前
  • 签到天数: 23 天

    [LV.4]偶尔看看III

    1

    主题

    17

    回帖

    143

    积分

    注册会员

    积分
    143
     楼主| 发表于 2024-4-7 17:22:25 | 显示全部楼层
    梁工 发表于 2024-4-7 11:51
    我写个程序给你,等下。

    好的,梁工
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    擦汗
    6 小时前
  • 签到天数: 23 天

    [LV.4]偶尔看看III

    1

    主题

    17

    回帖

    143

    积分

    注册会员

    积分
    143
     楼主| 发表于 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的值
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2934

    回帖

    6617

    积分

    超级版主

    积分
    6617
    发表于 2024-4-7 17:43:36 | 显示全部楼层
    leitang 发表于 2024-4-5 19:47
    void PCA_Init()
    {
            CCON=0x00;  //关闭PCA计数器,清除相关标志位

    你初始化ADC的程序再哪呢?没看到
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    擦汗
    6 小时前
  • 签到天数: 23 天

    [LV.4]偶尔看看III

    1

    主题

    17

    回帖

    143

    积分

    注册会员

    积分
    143
     楼主| 发表于 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结束标志

    }

    点评

    应该分开初始化和ADC转换两个函数。每次由关闭到打开ADC电源,至少要延时1ms以上才做ADC。  详情 回复 发表于 2024-4-7 17:47
    回复 支持 1 反对 0 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2934

    回帖

    6617

    积分

    超级版主

    积分
    6617
    发表于 2024-4-7 17:47:48 | 显示全部楼层
    leitang 发表于 2024-4-7 17:44
    /*------------------------AD采样-----------------------------*/
    void Get_ADC(unsigned char channel ...

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

    使用道具 举报

  • TA的每日心情
    擦汗
    6 小时前
  • 签到天数: 23 天

    [LV.4]偶尔看看III

    1

    主题

    17

    回帖

    143

    积分

    注册会员

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

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




    f345e3879f8ebe1b830620cb8821307c.mp4

    763.31 KB, 下载次数: 0

    点评

    例程写好了,测试无任何问题,P1.2接电位器输入ADC2,10位ADC结果送PCA2-P3.7输出10位PWM,下载选择11.0592MHz主频的话,PWM频率就是11059200/1024=10800Hz。 用户请先别修改程序, 直接下载"ADC.hex"测试. 下载时  详情 回复 发表于 2024-4-7 23:02
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2934

    回帖

    6617

    积分

    超级版主

    积分
    6617
    发表于 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).

    10-1路ADC读电位器-控制PCA-PWM.rar (61.25 KB, 下载次数: 20)


    请看视频:





    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    擦汗
    6 小时前
  • 签到天数: 23 天

    [LV.4]偶尔看看III

    1

    主题

    17

    回帖

    143

    积分

    注册会员

    积分
    143
     楼主| 发表于 2024-4-8 08:50:48 | 显示全部楼层
    梁工 发表于 2024-4-7 23:02
    10位PWM例程写好了,测试无任何问题,
    P1.2接电位器输入ADC2,10位ADC结果送PCA2-P3.7输出10位PWM,
    下载 ...

    好的,感谢梁工

    点评

    你测试正常了?  详情 回复 发表于 2024-4-8 10:09
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2934

    回帖

    6617

    积分

    超级版主

    积分
    6617
    发表于 2024-4-8 10:09:03 | 显示全部楼层
    leitang 发表于 2024-4-8 08:50
    好的,感谢梁工

    你测试正常了?
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-4 16:34 , Processed in 0.070791 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表