打印

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

[复制链接]
2257|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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只是辅助你的工具

使用特权

评论回复
5
xxrs| | 2021-5-7 23:38 | 只看该作者
上面的初始化设置可以帮你解决大部分的问题, 但是你本身如果对PWM不了解的话, 不知道哪些是需要设置的,即使用MCC生产代码,也会遇到问题

使用特权

评论回复
6
yszong| | 2021-5-7 23:40 | 只看该作者
所以,磨刀不误砍柴工, 还是看一下文档先把

使用特权

评论回复
7
jlyuan|  楼主 | 2021-5-7 23:42 | 只看该作者
我已經有看一下文檔,加上有瞭解了一下設定的東西,目前用MCC產生Code之後,暫停程式去看PWMCON1暫存器,FLTSTAT一直是HIGH的狀態,不知發生什麼事了,MCC設定時也有把FLTIEN設為Diable。

使用特权

评论回复
8
songqian17| | 2021-5-7 23:44 | 只看该作者

你都已经看到这里了,再加下油深入一步就可以了啦
你检查下FLTCONx,

使用特权

评论回复
9
jlyuan|  楼主 | 2021-5-7 23:46 | 只看该作者
我有看了一下文檔資料,一直找不到FLTCONx暫存器,只看到FCLCONx不知道是不是一樣的東西,麻煩大大指導了

使用特权

评论回复
10
jlyuan|  楼主 | 2021-5-7 23:48 | 只看该作者
我有把FLTMOD設為disable

使用特权

评论回复
11
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

使用特权

评论回复
12
jiajs| | 2021-5-7 23:52 | 只看该作者
无法理解这种代码了。没有库函数吗

使用特权

评论回复
13
jlyuan|  楼主 | 2021-5-7 23:53 | 只看该作者
目前使用PWM1,但是Enable PWM之後,PWM1H會變高準位,PWM1L低準位,還是沒有PWM輸出。

使用特权

评论回复
14
jlyuan|  楼主 | 2021-5-7 23:54 | 只看该作者
更新:目前PWM終於輸出了,謝謝大大。

使用特权

评论回复
15
stly| | 2021-5-7 23:55 | 只看该作者
是的,要先搞懂PWM原理,以及生成的那些函数怎么调用

使用特权

评论回复
16
llljh| | 2021-5-7 23:56 | 只看该作者

难道是集成Gate-drive的芯片?

使用特权

评论回复
17
jlyuan|  楼主 | 2021-5-7 23:57 | 只看该作者

明白了,多谢大家讨论这么多哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

880

主题

12030

帖子

4

粉丝