网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> 代码示例 >> TI DSP代码示例 >> C2000 >> 文章正文
  基于DSP2407产生带死区的6个PWM脉冲的源代码         ★★★ 【字体:
基于DSP2407产生带死区的6个PWM脉冲的源代码
作者:61IC    文章来源:本站原创    点击数:    更新时间:2007-1-23    

 

/**********************************************************************
File   Name: Pulse.c
Discription: Pulse for thyristor. The zero-crossing signal of power
             is inputed from the capture of 2407, which generate the
             pulse and control its phase.
Copy  Right: Guoguo
**********************************************************************/

/*include register definition of 2407*/
#include "Reg_2407_C.h"
/*include varable and I/O address definition of 2407*/
#include "Pulse.h"

main()
{
 CPU_Init();
 EV_Init();
 IOport_Init();
 
 asm(" CLRC INTM ");
 
 /*i = 0;/*tt*/
 /**T1CON |= 0x0040;/*tt*/
 *T2CON |= 0x0040; /* Enable T2 */

 while(1)
 {
  /*------------------------------------------------------------------------*/
  /* Pulse generation. P1 is started from the zero-crossing of Uca.       */
  /* Pulse width is 90 degree. Order: P1-P2-P3-P4-P5-P6-P1                */
  /*          ___________     ___________     ___________     ___           */
  /*         |_____1_____|___|_____3_____|___|_____5_____|___|_1_           */
  /*          ___     ___________     ___________     ___________           */
  /*         |_6_|___|_____2_____|___|_____4_____|___|_____6_____|          */
  /*         |   |   |   |   |   |   |   |   |   |   |   |   |   |          */
  /*         0  30  60  90  120 150 180 210 240 270 300 330 360  30         */
  /*                                                                        */
  /* 0 is the zero-crossing of Uca. 30 degree: i=125                        */
  /*------------------------------------------------------------------------*/
  switch(i)
  {
   case 0:    {*PADATDIR=0x0C040; *PBDATDIR=0x0F08; break;}
   case 125:  {*PADATDIR=0x0C040; *PBDATDIR=0x0F00; break;}
   case 250:  {*PADATDIR=0x0C0C0; *PBDATDIR=0x0F00; break;}
   case 375:  {*PADATDIR=0x0C080; *PBDATDIR=0x0F00; break;}
   case 500:  {*PADATDIR=0x0C080; *PBDATDIR=0x0F01; break;}
   case 625:  {*PADATDIR=0x0C000; *PBDATDIR=0x0F01; break;}
   case 750:  {*PADATDIR=0x0C000; *PBDATDIR=0x0F03; break;}
            case 875:  {*PADATDIR=0x0C000; *PBDATDIR=0x0F02; break;}
            case 1000: {*PADATDIR=0x0C000; *PBDATDIR=0x0F06; break;}
            case 1125: {*PADATDIR=0x0C000; *PBDATDIR=0x0F04; break;}
            case 1250: {*PADATDIR=0x0C000; *PBDATDIR=0x0F0C; break;}
            case 1375: {*PADATDIR=0x0C000; *PBDATDIR=0x0F08; break;}
            default:   {break;}
     }
    }
}

interrupt void cap_isr(void)
{
 unsigned int EVAIFRC_temp;
 
 EVAIFRC_temp = *EVAIFRC;
 
 if(!(EVAIFRC_temp & 0x0004))  /* CAP3 interrupt-go down; else return */
 {
  asm(" CLRC INTM ");
     return;
    }
   
    i = 0;
  
 *EVAIFRC = *EVAIFRC|0x0004;
 
    asm(" CLRC INTM ");
   
    *T1CON |= 0x0040;
 *T1CNT = 0x0000;
 *T2CNT = 0x0000;
  
    return;
}

interrupt void T1P_isr(void)     /* T1 period interrupt: 40/3us */
{
 int flag;
 flag =  *EVAIFRA;
 if(!(flag & 0x0080))
 {
  asm(" CLRC INTM ");
  return;
 }
 
 *EVAIFRA = *EVAIFRA|0x0080;
 
 i++;
 /*if(i>=1500) i=0;/*tt*/  
     
 asm(" CLRC INTM ");
 
 return;
}

interrupt void Phantom(void)
{
 asm(" CLRC INTM ");
 return;
}

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    DSP2407平台下用C语言实现的…
    利用DSP2407控制马达代码
    DSP2407控制320*240大液晶显…
    基于DSP240x的串行EEPROM的接…
    基于DSP240x的串行EEPROM的接…
    TMS320LF2407与图形液晶显示…
    一个基于DSP2407串行通信接口…
    基于DSP240x PWM波形产生举例
    基于DSP2407 CAN控制器的程序…
    DSP2407头文件和命令文件示例…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号