• “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 钱江潮评 让高质量发展插上人才的翅膀 2019-04-10
  • 习近平两会期间谈社会主义核心价值观 2019-04-02
  • 文脉颂中华——黄河新闻网 2019-04-02
  • 陈小林的专栏作者中国国家地理网 2019-03-29
  • 中英航母大战谁能赢歼151枚炸弹就能炸瘫女王 2019-03-22
  • 独特“光捕捉器”可控制分子生化性质 2019-03-22
  • 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07
  • 打印

    广东11选5前三走势图: [范例教程] 【笙泉MA82G5D】高速PWM范例

    [复制链接]
    751|1
    跳转到指定楼层
    楼主
     楼主 | 2018-12-12 09:02 | 只看该作者 |退出气泡模式 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 noctor 于 2018-12-17 13:06 编辑
    使用过笙泉5D的应该都知道,5D的PWM内部时钟源频率可以跑到96M,性能强劲,这里放一下使用96M时钟源的PWM例程。
    1. /*
    2. PWM输出范例程序
    3. 此范例的基本配置,16位PWM,PCA时钟源为内部晶振倍频96MHz,PWM0,1和PWM2,3为互补输出,PWM的频率可由PcaInitValue进行调整
    4. */
    5. #include "REG_MA82G5Dxx.H"
    6. #include <intrins.h>
    7. #define PcaInitValue 65536-40000
    8. #define nop() _nop_()
    9. #define ISP_READ                1           
    10. #define ISP_WRITE             2           
    11. #define ISP_WRITE_P     4     
    12. #define ISP_READ_P             5     

    13. typedef unsigned char                                        BYTE;

    14. void WriteP(BYTE PsfrAddr,BYTE PsfrData)
    15. {
    16.                 bit bEA=EA;
    17.                 EA = 0;                                         
    18.                 IFADRH = 0;                                 
    19.                 IFADRL= PsfrAddr;                        
    20.                 IFD= PsfrData;                                
    21.                 IFMT = ISP_WRITE_P;
    22.                 ISPCR = 0x80;                                
    23.                 SCMD = 0x46;
    24.                 SCMD = 0xB9;
    25.                 nop();
    26.                 ISPCR = 0;                                       
    27.                 EA = bEA;                                       
    28. }

    29. void InitClock(void)
    30. {
    31.         CKCON0 = 0x58;                        // 12MHz, ENCKM, CpuCLK=SYSCLK/2
    32.         WriteP(CKCON2_P,0x5c);        //  MCK=CKMI*8  =6*8=48MHz
    33. }

    34. void main()
    35. {
    36.         InitClock();
    37.         
    38.         //PWM I/O推挽输出设置
    39.   P2M0=0x14;                        //PWM推挽输出:P2.2 P2.4
    40.         SFRPI=0x1;
    41.   P2M1=0x0;
    42.   P2=0x0;

    43.         P3M0=0x0;           //PWM推挽输出:P3.3 P3.4
    44.         P3M1=0x18;
    45.   P3=0x0;
    46. //PCA相关配置
    47.         CMOD=CPS2|BME2|BME0|ECF;        //PcaClk = MCKI X 16,BME0为PWM0,1互补输出使能

    48.         CCON = 0x00;                                        //清空flag,禁用PCA
    49.   CH=CHRL=PcaInitValue>>8; CL=CLRL=PcaInitValue;      //设置 CH:CL & 重载值
    50. //PWM设置
    51.   CCAPM0=CCAPM2=ECOM0|PWM0;                                 // 使能PWM
    52.   CCAPM1=CCAPM3=ECOM0|PWM0;
    53.         PCAPWM0=PCAPWM2=P0RS0|P0RS1;            // 16位分辨率         
    54.         PCAPWM1=PCAPWM3=P0RS0|P0RS1;   
    55. //占空比设置
    56.         CCAP0H=CCAP1H=(PcaInitValue+10000)>>8;
    57.         CCAP0L=CCAP1L=(PcaInitValue+10000);
    58.         CCAP2H=CCAP3H=(PcaInitValue+20000)>>8;
    59.         CCAP2L=CCAP3L=(PcaInitValue+20000);            

    60.         PCAPWM0=P0RS0|P0RS1;
    61.         PCAPWM2=P2RS0|P2RS1;
    62.         PCAPWM1=P1RS0|P1RS1;
    63.         PCAPWM3=P3RS0|P3RS1;

    64.         CR=1;        //PCA使能计数

    65.         while(1);
    66. }
    复制代码


    沙发
     楼主 | 2018-12-12 09:56 | 只看该作者
    本帖最后由 noctor 于 2018-12-13 15:31 编辑

    MA82G5Dxx的PWM相关设置步骤如下:

    一:如果需要使用96MHz的PWM时钟设置系统时钟,12MHz系统时钟通过倍频器输出CKMI *8 =48MHz的系统时钟(通过寄存器CKCON)。
    二:设置PWM输出的相应端口为推挽输出(通过寄存器PxMxsfr)。
    三:设置PCA定时器的时钟源(CKMIX16最高96MHz)、桥臂控制、计数器模式、重载值,设置重载值前务必关闭PCA计数器,重载值如:CHRL、CLRL=0x0000(通过寄存器CMOD、CHRL、CLRL。
    四:设置PCAPWM分辨率(通过寄存器PCAPWM)。如:PCAPWM0=0x00;
    五:设置PWM的占空比(通过寄存器CCAPnH、CCAPnL)。如:CCAPnH、CCAPnL=0x8000占空比为50%。
    六:设置PCAPWM模式(通过CCAPM)。例如:CCAPMn=0x42;
    七:启动PCA计数(通过CCON)。
    八:若设置中断,PWM与PCA的中断入口地址一样不同的标志位确定哪一路PWM中断。如:CCFn=1,为第n路PWM中断。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    扫描二维码,随时随地手机跟帖
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    我要发帖 投诉建议 创建版块 申请版主

    快速回复

    您需要登录后才可以回帖
    登录 | 注册
    高级模式

    论坛热帖

    快速回复 广东快乐十分走势图 返回列表
  • “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 钱江潮评 让高质量发展插上人才的翅膀 2019-04-10
  • 习近平两会期间谈社会主义核心价值观 2019-04-02
  • 文脉颂中华——黄河新闻网 2019-04-02
  • 陈小林的专栏作者中国国家地理网 2019-03-29
  • 中英航母大战谁能赢歼151枚炸弹就能炸瘫女王 2019-03-22
  • 独特“光捕捉器”可控制分子生化性质 2019-03-22
  • 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07
  • 澳洲幸运8技巧 北京赛车属于福彩吗 篮彩胜分差是什么意思 幸运飞艇滚雪球爆料 山东双色球彩票软件 麻将连连看 北京pk10赛车开奖结果 广东彩票兑奖时间 好运快3诀窍 11选5开奖结果 双色球玩法 麻将游戏下载 新疆时时彩5星走势图星 世界杯竞猜混合过关 pc蛋蛋刷蛋怎么用视频教程 老时时彩360投注