用MPLAB X IDE V5.3 XC16 MCC成功讓dsPIC33EV版PWM輸出

[复制链接]
 楼主| jlyuan 发表于 2021-5-7 23:26 | 显示全部楼层 |阅读模式
用MPLAB X IDE V5.3 XC16 MCC成功讓dsPIC33EV版PWM輸出
zhanghqi 发表于 2021-5-7 23:28 | 显示全部楼层

楼主详细说说怎么回事啊,这么说太笼统了
 楼主| jlyuan 发表于 2021-5-7 23:30 | 显示全部楼层
我算是新手,又剛好下載到最新版的MPLAB X IDE,所以對於設定上非常陌生,
所以有哪個大大很有經驗的可以分享一下如何設定或是已經有現有的Code可以分享,
目前使用MCC產生一直無法輸出PWM,
chuxh 发表于 2021-5-7 23:32 | 显示全部楼层
建议你先看一下EV的pwm模块的reference mannual, MCC只是辅助你的工具
xxrs 发表于 2021-5-7 23:38 | 显示全部楼层
上面的初始化设置可以帮你解决大部分的问题, 但是你本身如果对PWM不了解的话, 不知道哪些是需要设置的,即使用MCC生产代码,也会遇到问题
yszong 发表于 2021-5-7 23:40 | 显示全部楼层
所以,磨刀不误砍柴工, 还是看一下文档先把
 楼主| jlyuan 发表于 2021-5-7 23:42 | 显示全部楼层
我已經有看一下文檔,加上有瞭解了一下設定的東西,目前用MCC產生Code之後,暫停程式去看PWMCON1暫存器,FLTSTAT一直是HIGH的狀態,不知發生什麼事了,MCC設定時也有把FLTIEN設為Diable。
songqian17 发表于 2021-5-7 23:44 | 显示全部楼层

你都已经看到这里了,再加下油深入一步就可以了啦
你检查下FLTCONx,
 楼主| jlyuan 发表于 2021-5-7 23:46 | 显示全部楼层
我有看了一下文檔資料,一直找不到FLTCONx暫存器,只看到FCLCONx不知道是不是一樣的東西,麻煩大大指導了
 楼主| jlyuan 发表于 2021-5-7 23:48 | 显示全部楼层
我有把FLTMOD設為disable
heweibig 发表于 2021-5-7 23:50 | 显示全部楼层

贴一段代码给你, 你对着研究寄存器吧。。

   // ============= Motor PWM ======================

    // Center aligned PWM.
    // Note: The PWM period is set to dLoopInTcy/2 but since it counts up and
    // and then down => the interrupt flag is set to 1 at zero => actual
    // interrupt period is dLoopInTcy

        PHASE1 = LOOPINTCY;
        PHASE2 = LOOPINTCY;
        PHASE3 = LOOPINTCY;
        PTPER = 2*LOOPINTCY+1;                //one trigger per PWM period

        PWMCON1 = 0x0204;        // Enable PWM output pins and configure them as
        PWMCON2 = 0x0204;        // complementary mode
        PWMCON3 = 0x0204;

        //I/O pins controlled by PWM
        IOCON1 = 0xC000;
        IOCON2 = 0xC000;
        IOCON3 = 0xC000;

        DTR1 = 0x0000;
        DTR2 = 0x0000;
        DTR3 = 0x0000;

        ALTDTR1 = DDEADTIME;        // 700ns of dead time
        ALTDTR2 = DDEADTIME;        // 700ns of dead time
        ALTDTR3 = DDEADTIME;        // 700ns of dead time

        //fault disabled        
        FCLCON1 = 0x0003;
        FCLCON2 = 0x0003;
        FCLCON3 = 0x0003;
   
//        FCLCON1 = 0x00FD;
//        FCLCON2 = 0x00FD;
//        FCLCON3 = 0x00FD;   
        
        PTCON2 = 0x0000;        // Divide by 1 to generate PWM

    /* low side turn on errate workaraund */
    PDC1 = MIN_DUTY;   // PDC cannot be init with 0, please check errata
    PDC2 = MIN_DUTY;
    PDC3 = MIN_DUTY;
   
    IPC23bits.PWM1IP = 4;        // PWM Interrupt Priority 4
        IPC23bits.PWM2IP = 4;        // PWM Interrupt Priority 4
        IPC24bits.PWM3IP = 4;        // PWM Interrupt Priority 4

        IFS5bits.PWM1IF = 0;        //clear PWM interrupt flag
        IEC5bits.PWM1IE = 0;        // Disable PWM interrupts

    PTCON = 0x8000;         // Enable PWM for center aligned operation
jiajs 发表于 2021-5-7 23:52 | 显示全部楼层
无法理解这种代码了。没有库函数吗
 楼主| jlyuan 发表于 2021-5-7 23:53 | 显示全部楼层
目前使用PWM1,但是Enable PWM之後,PWM1H會變高準位,PWM1L低準位,還是沒有PWM輸出。
 楼主| jlyuan 发表于 2021-5-7 23:54 | 显示全部楼层
更新:目前PWM終於輸出了,謝謝大大。
stly 发表于 2021-5-7 23:55 | 显示全部楼层
是的,要先搞懂PWM原理,以及生成的那些函数怎么调用
llljh 发表于 2021-5-7 23:56 | 显示全部楼层

难道是集成Gate-drive的芯片?
 楼主| jlyuan 发表于 2021-5-7 23:57 | 显示全部楼层

明白了,多谢大家讨论这么多哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

880

主题

12030

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部

880

主题

12030

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部