dsPIC33F电机控制Motor

来源:互联网 发布:小红帽linux系统下载 编辑:程序博客网 时间:2024/04/28 08:17
/******************************************************************电机控制专用PWM模块,占空比|死区时间|故障|周期|互补等都可以调******************************************************************/#include<p33fj256mc710.h>//////////设置配置位/////////////_FPOR (PWMPIN_ON & HPOL_ON & LPOL_ON);//注意这种格式,置1或置0用ON或OFFint 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)    {      ;   //可以写其他程序     }}//注意,该程序在运行时有跑飞现象,关闭的时基有时自动开启时基

原创粉丝点击