我是靠谱客的博主 坚定大地,最近开发中收集的这篇文章主要介绍dsPIC33F电机控制Motor,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

/****************************************************************
**电机控制专用PWM模块,占空比|死区时间|故障|周期|互补等都可以调**
****************************************************************/

#include<p33fj256mc710.h>
//设置配置位/
_FPOR (PWMPIN_ON & HPOL_ON & LPOL_ON);//注意这种格式,置1或置0用ON或OFF
int k=0;
void __attribute__((__interrupt__)) _PWMInterrupt()
{
    k=k+1;
    IFS3bits.PWMIF = 0;
    ///十秒后关闭PWM,这个可以换成占空比赋值等其他程序
   if(k == 10000)  //小心这是等号不是赋值,后者会被当成真值执行
   {
       // PTEN:PWM 时基定时器使能位
       // 1 = 使能 PWM 时基
       // 0 = 禁止 PWM 时基
       PTCONbits.PTEN=0;
   }
}

main()
{
    ///设置周期和占空比步骤//
    //  PWMCON2:PWM 控制寄存器 2
    // UDIS:PWM 更新禁止位
    // 1 = 禁止从占空比缓冲寄存器和周期缓冲寄存器进行更新
    // 0 = 允许从占空比缓冲寄存器和周期缓冲寄存器进行更新
    PWMCON2bits.UDIS = 1;//这个不是多余的,
    // PTPER:PWM 时基周期寄存器
    PTPER = 0x1000;    //因为它可用来控制什么时候更新占空比等寄存器
    注意,实际占空比=PDCx/(2*PTPER)/
   // PDC1:PWM 占空比寄存器 1
   PDC1 = 0x0800;
   PDC2 = 0x1000;
   PDC3 = 0x1500;
   PDC4 =0x1800;
   PWMCON2bits.UDIS = 0;
   /设置控制寄存器/
   // PTCON:PWM 时基控制寄存器
   PTCON = 0;           //以下包括时基的工作模式、PWM工作模式、故障、改写等
   PWMCON1 = 0x00FF;    //直接把PWMCON1bits.PMOD置F即可运行于独立模式
   FLTACON=0;           //置0则直接运行于没有死区时间的互补模式
   FLTBCON=0;
   OVDCON=0XFF00;       //改写寄存器中POVDxH/L位须置1,
                        //否则PWM发生器没有I/O脚的控制权
    /设置死区时间///
   DTCON1=0X3F1F;          // 死区时间值*死区时间单元=实际死区时间
   DTCON2=0X000F;          //实际死区时间不能超过占空比
   设置中断相关寄存器//
   IFS3bits.PWMIF=0;
   IEC3bits.PWMIE=1;
   IPC14bits.PWMIP=4;
   开启PWM时基//
   PTCONbits.PTEN=1;
   /以下这个无限循环不要省,离开它等于跟成功说bye-bye//
   while(1)
    {
      ;   //可以写其他程序
     }

}//注意,该程序在运行时有跑飞现象,关闭的时基有时自动开启时基

最后

以上就是坚定大地为你收集整理的dsPIC33F电机控制Motor的全部内容,希望文章能够帮你解决dsPIC33F电机控制Motor所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部