6768|6

7

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

DSP2812无法进入周期中断 [复制链接]

一、主程序:

#include "DSP28_Device.h"
float        ADResult;
unsigned int k=0;
float        adclo;
interrupt void ADC_ISR(void);

void main(void)
{
        InitSysCtrl();                        //初始化系统

        DINT;                                        //关中断
        IER = 0x0000;
        IFR = 0x0000;

        InitPieCtrl();                        //初始化PIE控制寄存器
        InitPieVectTable();                //初始化PIE参数表
        InitEv();
        InitAdc();                                //初始化ADC
        adclo=0;
        PieCtrl.PIEIER1.bit.INTx6=1;

        EALLOW;        
        PieVectTable.ADCINT=&ADC_ISR;
        EDIS;

        IER |= M_INT1;                        // Enable INT14 which is connected to CPU-Timer 2:

        EINT;                                        // Enable INTM
        ERTM;                                        // Enable DBGM
        EvaRegs.T1CON.bit.TENABLE=1;
        for(;;)
        {

        }
}         

interrupt void ADC_ISR(void)
{
        ADResult=((AdcRegs.RESULT0>>4)*3)/4095.0+adclo;
        PieCtrl.PIEACK.all=0x0001;
        AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
        AdcRegs.ADCTRL2.bit.RST_SEQ1=1;                        //在这里设置断点
        EINT;
}

二、ad初始化程序:
void InitAdc(void)
{
        unsigned int i;
        
        AdcRegs.ADCTRL1.bit.RESET=1;
        NOP;
        AdcRegs.ADCTRL1.bit.RESET=0;
        AdcRegs.ADCTRL1.bit.SUSMOD=3;
        AdcRegs.ADCTRL1.bit.ACQ_PS=0;
        AdcRegs.ADCTRL1.bit.CPS=0;
        AdcRegs.ADCTRL1.bit.CONT_RUN=0;
        AdcRegs.ADCTRL1.bit.SEQ_CASC=1;
        
        AdcRegs.ADCTRL3.bit.ADCBGRFDN=3;
        for(i=0;i<10000;i++)        NOP;
        AdcRegs.ADCTRL3.bit.ADCPWDN=1;
        for(i=0;i<5000;i++)        NOP;
        AdcRegs.ADCTRL3.bit.ADCCLKPS=15;
        AdcRegs.ADCTRL3.bit.SMODE_SEL=1;
        AdcRegs.MAX_CONV.bit.MAX_CONV=7;//15;
        AdcRegs.CHSELSEQ1.bit.CONV00=0;        
        AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
        AdcRegs.ADC_ST_FLAG.bit.INT_SEQ2_CLR=1;        
        
        AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ=0;
        AdcRegs.ADCTRL2.bit.RST_SEQ1=0;
        AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;
        AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1=0;
        AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=0;
        AdcRegs.ADCTRL2.bit.EXT_SOC_SEQ1=0;
        AdcRegs.ADCTRL2.bit.RST_SEQ2=0;
        AdcRegs.ADCTRL2.bit.SOC_SEQ2=0;
        AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2=0;
        AdcRegs.ADCTRL2.bit.INT_MOD_SEQ2=0;
        AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ2=0;
        AdcRegs.ADCTRL2.bit.SOC_SEQ1=0;
}        


三、EV初始化程序:
void InitEv(void)
{
  EvaRegs.T1CON.bit.TMODE=2;
  EvaRegs.T1CON.bit.TPS=1;
  EvaRegs.T1CON.bit.TENABLE=0;
  EvaRegs.T1CON.bit.TCLKS10=0;
  EvaRegs.GPTCONA.bit.T1TOADC=2;
  EvaRegs.EVAIMRA.bit.T1PINT=1;
  EvaRegs.EVAIFRA.bit.T1PINT=1;
  EvaRegs.T1PR=0x927B;//定时37499,周期1ms
  EvaRegs.T1CNT=0;
}

最新回复

interrupt void ADC_ISR(void) { ADResult=((AdcRegs.RESULT0>>4)*3)/4095.0+adclo; PieCtrl.PIEACK.all=0x0001; AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1; AdcRegs.ADCTRL2.bit.RST_SEQ1=1; //在这里设置断点 EINT; } 需要添加清标志位的语句。看看ADC 例程  详情 回复 发表于 2012-5-18 09:36
 
点赞 关注

回复
举报

2

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

回复 楼主 为爱一拼 的帖子

我是新手的,看了一下你的程序,可能我的回答也是错的,请原谅。。。
EvaRegs.T1CON.bit.TENABLE=0; // 你没有启动定时器吧,应该使能定时器操作
EvaRegs.T1CON.bit.TCLKS10=0;  // 那个TCLKS不是这样写的吧
 
 

回复

54

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

TI关于2812的例程,你参考下里边adc_soc这个程序

v110.rar

1.65 MB, 下载次数: 63

 
 
 

回复

2606

帖子

0

TA的资源

五彩晶圆(初级)

4
 
interrupt void ADC_ISR(void)
{
ADResult=((AdcRegs.RESULT0>>4)*3)/4095.0+adclo;
PieCtrl.PIEACK.all=0x0001;
AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
AdcRegs.ADCTRL2.bit.RST_SEQ1=1; //在这里设置断点
EINT;
}

需要添加清标志位的语句。看看ADC 例程
 
个人签名工程 = 数学+物理+经济
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 4楼 安_然 的帖子

谢谢版主  AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1; 我的标志位已经清除了  我的问题在于AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=0;这里本应该置1的,来允许EVA启动触发SEQ1,而我没有使能,改后就可以了 谢谢了
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 板凳 hljshzhang 的帖子

谢谢历程 经过对比我发现是我AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=0;这里本应该置1的,来允许EVA启动触发SEQ1,而我却置0
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 沙发 johnsonfck 的帖子

EvaRegs.T1CON.bit.TENABLE=0;  你好,这里就是为了暂时停止T1计数,发生中断时才计数
EvaRegs.T1CON.bit.TCLKS10=0;  我的开发板历程中有定义是这样的,这里也没错
我的错误在于AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=0;这里本应该置1的,来允许EVA启动触发SEQ1,而我却置0,谢谢你了,大家一起进步
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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