3422|8

35

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

TI 28027 程序进不了中断 [复制链接]

不知道怎么回事,自己的28027Luanchpad    加载TI  epwm例程中断都进不去了(以前调试的时候都可以),自己在网上找了个简单的程序,感觉没有错误,下载进去后,程序一直进不了中断;跪求大神指导



#include "DSP28x_Project.h"     // Device Headerfile and Examples Include File

/*******************************************************************************

全局变量

*******************************************************************************/

volatile Uint32 Num;



int SinceTable[200] = { 0, 23, 47, 70, 94, 117, 141, 164, 187, 211, 234, 257,

                281, 304, 327, 350, 373, 395, 418, 441, 463, 485, 508, 530, 552, 574,

                595, 617, 638, 659, 680, 701, 722, 743, 763, 783, 803, 823, 843, 862,

                881, 900, 919, 937, 956, 974, 991, 1009, 1026, 1043, 1060, 1077, 1093,

                1109, 1125, 1140, 1155, 1170, 1185, 1199, 1213, 1227, 1240, 1253, 1266,

                1278, 1291, 1302, 1314, 1325, 1336, 1347, 1357, 1367, 1376, 1385, 1394,

                1403, 1411, 1419, 1426, 1433, 1440, 1446, 1452, 1458, 1463, 1468, 1473,

                1477, 1481, 1485, 1488, 1490, 1493, 1495, 1497, 1498, 1499, 1499, 1499,

                1499, 1499, 1498, 1497, 1495, 1493, 1490, 1488, 1485, 1481, 1477, 1473,

                1468, 1463, 1458, 1452, 1446, 1440, 1433, 1426, 1419, 1411, 1403, 1394,

                1385, 1376, 1367, 1357, 1347, 1336, 1325, 1314, 1302, 1291, 1278, 1266,

                1253, 1240, 1227, 1213, 1199, 1185, 1170, 1155, 1140, 1125, 1109, 1093,

                1077, 1060, 1043, 1026, 1009, 991, 974, 956, 937, 919, 900, 881, 862,

                843, 823, 803, 783, 763, 743, 722, 701, 680, 659, 638, 617, 595, 574,

                552, 530, 508, 485, 463, 441, 418, 395, 373, 350, 327, 304, 281, 257,

                234, 211, 188, 164, 141, 117, 94, 70, 47, 23, };





/*******************************************************************************

函数声明

*******************************************************************************/

void EPWM_init();

interrupt void epwm1_timer_isr(void);

/*

* main.c

*/

int main(void)

{

        // Step 1. Initialize System Control:

        // PLL, WatchDog, enable Peripheral Clocks

        // This example function is found in the DSP2802x_SysCtrl.c file.

        InitSysCtrl();

        DINT;



        InitPieCtrl();



        // Disable CPU interrupts and clear all CPU interrupt flags:

        IER = 0x0000;

        IFR = 0x0000;



        InitPieVectTable();



        EALLOW;

        PieVectTable.EPWM1_INT = &epwm1_timer_isr;

        EDIS;



        EALLOW;



        GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1;

        GpioCtrlRegs.GPAPUD.bit.GPIO1 = 1;



        GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;

        GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1;//设置GPIO0/GPIO1为EPWM1A/EPWM1B



        EDIS;



        EALLOW;

        SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;

        EDIS;

        EPWM_init();

        EALLOW;

        SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;

        EDIS;



        IER|=M_INT3;

        PieCtrlRegs.PIEIER3.bit.INTx1 = 1;

        EINT;

        ERTM;

    Num = 0;

        while(1);

}

/************************************************************************************************



***

**Function:    ** void EPWM_init(void)

**Description: ** 初始化EPWM模块

**Input:       ** Null

**Output:      ** Null

**Others:      ** Null

*************************************************************************************************



**/

void EPWM_init()

{

        EPwm1Regs.TBPRD = 1500;                         // Set timer period

        EPwm1Regs.TBPHS.half.TBPHS = 0x0000;            // Phase is 0

        EPwm1Regs.TBCTR = 0x0000;                       // Clear counter



// Setup TBCLK

        EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up/down

        EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;        // Disable phase loading

        EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;       // Clock ratio to SYSCLKOUT

        EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;         //TBCLK = SYSCLKOUT / (HSPCLKDIV × CLKDIV)

                                                      //TBCLK = SYSCLKOUT

// Load registers

        EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;    // Load registers every ZERO

        EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;



// Setup compare

        EPwm1Regs.CMPA.half.CMPA = 1000;



// Set actions

        EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;

        EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;

        EPwm1Regs.AQCTLA.bit.CAD = AQ_SET;



//set interrupt

    EPwm1Regs.ETSEL.bit.INTSEL =ET_CTR_ZERO;      // 计数值等于0时产生中断

    EPwm1Regs.ETSEL.bit.INTEN = 1;                  // 使能中断

    EPwm1Regs.ETPS.bit.INTPRD = ET_1ST;             // 第一次时产生中断



}

interrupt void epwm1_timer_isr(void)

{

        int count = 0;

        count++;

  if (Num > 200)

  {

                Num = 0;

  }

        EPwm1Regs.CMPA.half.CMPA = SinceTable[Num];

        Num++;



        EPwm1Regs.ETCLR.bit.INT = 1;

        PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;

}




最新回复

那不设置输出吗?你改改试试看看行不行  详情 回复 发表于 2015-7-14 08:29
 
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
是不是没有设置方向为输出,我看你写的GPAPUD,是不是GPADIR

点评

那不设置输出吗?你改改试试看看行不行  详情 回复 发表于 2015-7-14 08:29
我是把GPIO0和1设置成了pwm模式,在运行controlsuite里面的例程时也是进不了中断,以前调试的时候可以进入呢  详情 回复 发表于 2015-7-13 18:13
 
 

回复

35

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
xushun716 发表于 2015-7-13 17:44
是不是没有设置方向为输出,我看你写的GPAPUD,是不是GPADIR

我是把GPIO0和1设置成了pwm模式,在运行controlsuite里面的例程时也是进不了中断,以前调试的时候可以进入呢
 
 
 

回复

2700

帖子

0

TA的资源

五彩晶圆(初级)

4
 
你是怎么判断没进中断的?debug看一下epwm的寄存器跟你设置对不对,然后看一下计数器有没有在运行。

点评

我在中断程序中设的断点,一直没进去过,并且观察count变量也没发生变化  详情 回复 发表于 2015-7-13 19:48
 
个人签名作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
 
 

回复

35

帖子

0

TA的资源

一粒金砂(中级)

5
 
elvike 发表于 2015-7-13 19:34
你是怎么判断没进中断的?debug看一下epwm的寄存器跟你设置对不对,然后看一下计数器有没有在运行。

我在中断程序中设的断点,一直没进去过,并且观察count变量也没发生变化
 
 
 

回复

2700

帖子

0

TA的资源

五彩晶圆(初级)

6
 
那还是你程序的问题。你仿真下,初始化程序都执行了没?

点评

应该是头文件 C文件没加载好,感谢您的帮助啊  详情 回复 发表于 2015-7-16 16:41
 
个人签名作为一个水军,就是尽量的多回帖,因为懂的技术少,所以回帖水分大,见谅!
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
 
 

回复

69

帖子

0

TA的资源

一粒金砂(中级)

7
 
xushun716 发表于 2015-7-13 17:44
是不是没有设置方向为输出,我看你写的GPAPUD,是不是GPADIR

那不设置输出吗?你改改试试看看行不行

点评

问题解决了,我重新建了个工程,把头文件 c文件加载了一遍,试了一下能进中断了,非常感谢您的帮助  详情 回复 发表于 2015-7-16 16:40
 
 
 

回复

35

帖子

0

TA的资源

一粒金砂(中级)

8
 
xushun716 发表于 2015-7-14 08:29
那不设置输出吗?你改改试试看看行不行

问题解决了,我重新建了个工程,把头文件  c文件加载了一遍,试了一下能进中断了,非常感谢您的帮助
 
 
 

回复

35

帖子

0

TA的资源

一粒金砂(中级)

9
 
elvike 发表于 2015-7-13 22:39
那还是你程序的问题。你仿真下,初始化程序都执行了没?

应该是头文件   C文件没加载好,感谢您的帮助啊
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表