打印

DSP2812上电不复位

[复制链接]
楼主: Mr5Tao
手机看帖
扫描二维码
随时随地手机跟帖
21
Mr5Tao|  楼主 | 2016-5-16 23:44 | 只看该作者 回帖奖励 |倒序浏览
zhangmangui 发表于 2016-5-14 22:12
建议你参考一些TI的EVM板  或其他板    我也有分享  原理图
参考一下电容和电阻的值 ...

我怀疑是我程序上电初始化顺序的问题
主函数如下:
void main (void)
{
    InitSysCtrl();  //初始化系统函数

        DINT;
        IER = 0x0000;   //禁止CPU中断
        IFR = 0x0000;   //清除CPU中断标志
       
        InitPieCtrl();  //初始化PIE控制寄存器
        InitPieVectTable(); //初始化PIE中断向量表
        InitCpuTimers();                
        InitGpio();         //初始化Gpio口
        InitSpi();          //初始化Spi
        InitSci();          //初始化Sci
        Init_EEPROM();
        Init_Data();        //需要手动复位

        EALLOW;       
        PieVectTable.TINT0 = &ISRTimer0;
        XIntruptRegs.XNMICR.bit.SELECT=0; //Timer1连接到XINT13
        XIntruptRegs.XNMICR.bit.ENABLE=0; //禁止非屏蔽中断NMI
        PieVectTable.XINT13 = &ISRTimer1;//用Timer1中断函数入口更新PIE向量表  
        PieVectTable.TINT2 = &ISRTimer2;

        XIntruptRegs.XINT1CR.bit.POLARITY=0;//下降沿产生中断
        XIntruptRegs.XINT1CR.bit.ENABLE=1; //使能XINT1中断
        PieVectTable.XINT1= &XINT1; //中断服务程序入口地址放入中断向量表

        EDIS;   
       
        ConfigCpuTimer(&CpuTimer0, 150, 1);        //设置PWM周期
        StartCpuTimer0();
        IER |= M_INT1;
        PieCtrl.PIEIER1.bit.INTx7=1;

        ConfigCpuTimer(&CpuTimer1, 150, 500000);        //设置CPU定时器定时
        StartCpuTimer1();
        IER |= M_INT13;

        ConfigCpuTimer(&CpuTimer2, 150, 500000);        //设置CPU定时器定时(闪烁间隔0.5s)
        StartCpuTimer2();
        IER |= M_INT14;  //开中断
        PieCtrl.PIEIER1.bit.INTx4=1;//XINT1使能位于PIE第1组第4个

        EINT;                                                // 允许INTM
        ERTM;                                                // 允许DBGM
       
    KEY_SET=1;  //按键输入端口电平置高            
        KEY_ADD=1;
        KEY_SUB=1;

//        Init_Data(); //数据跳动

        while (1)   
          {
                KeyScan();
                Display();
        }                 
}
如果初始化数据的函数放在前面(红色部分),那么程序就需要手动复位后才能正常工作;如果初始化数据的函数放在后面(绿色部分),那么上电可以运行,不需要手动复位,但是执行结果有时候会不正确。

使用特权

评论回复
22
zhangmangui| | 2016-5-17 22:44 | 只看该作者
初始化里面不知道都干了啥   我觉得个人的相关初始化放到系统 中断等的初始化之后   比较合理
这种情况应该是逻辑的问题   代码肯定执行了  只是你想要的效果没有达到

使用特权

评论回复
23
Mr5Tao|  楼主 | 2016-5-18 12:38 | 只看该作者
zhangmangui 发表于 2016-5-17 22:44
初始化里面不知道都干了啥   我觉得个人的相关初始化放到系统 中断等的初始化之后   比较合理
这种情况应该 ...

对的,昨天下午仔细分析了一下,就是初始化顺序的问题,把顺序换了,问题已经完美解决了

使用特权

评论回复
24
Sode| | 2016-5-18 13:31 | 只看该作者
应该是程序的问题

使用特权

评论回复
25
comeon201208| | 2016-5-18 22:30 | 只看该作者
上电不复位的,这个是不是首先要检查下你的复位电路的,一般最好使用复位芯片的复位电路的。

使用特权

评论回复
26
comeon201208| | 2016-5-18 22:46 | 只看该作者
上电不复位?是怎么回事的?检查下设计的复位电路的呗

使用特权

评论回复
27
FCCdsp| | 2016-5-18 22:49 | 只看该作者
应该是程序的问题,我之前也遇到过相同的问题

使用特权

评论回复
28
Mr5Tao|  楼主 | 2016-10-12 22:03 | 只看该作者
找到原因了,是因为我的初始化当中,读取EEPROM中的数据时和其他子程序冲突了,影响了子程序的执行,在前面加了一个长延时就解决问题了

使用特权

评论回复
29
309030106| | 2016-10-18 22:05 | 只看该作者
一般掉电之后寄存器不都复位了吗,怎么还上电不能复位呢

使用特权

评论回复
30
smilingangel| | 2016-10-19 20:54 | 只看该作者
弱弱的问一句,你这手动复位时怎么复位的/?

使用特权

评论回复
31
uytyu| | 2016-10-19 23:10 | 只看该作者
你的设计电路图呢?

使用特权

评论回复
32
uytyu| | 2016-10-19 23:12 | 只看该作者
不能自动复位一般都是IO的问题了。

使用特权

评论回复
33
zhangbo1985| | 2016-10-20 21:45 | 只看该作者
上电不复位?是什么问题的?没遇到过的

使用特权

评论回复
34
tongbu2015| | 2016-10-21 22:25 | 只看该作者
这个首先要确定下是否上电后程序在运行的。。

使用特权

评论回复
35
tongbu2015| | 2016-10-21 22:26 | 只看该作者
有可能已经复位运行了,但是一直在某一个地方循环运行不出来的。。

使用特权

评论回复
36
baimiaocun2015| | 2016-10-23 11:51 | 只看该作者
这个还是先理论的计算下的,然后在理论值附件调整的

使用特权

评论回复
37
Mr5Tao|  楼主 | 2016-10-24 21:54 | 只看该作者
uytyu 发表于 2016-10-19 23:12
不能自动复位一般都是IO的问题了。

问题解决了,其实不是不能复位的问题,是EEPROM初始化和一个子程序冲突了

使用特权

评论回复
38
Mr5Tao|  楼主 | 2016-10-24 21:55 | 只看该作者
zhangbo1985 发表于 2016-10-20 21:45
上电不复位?是什么问题的?没遇到过的

其实不是没有复位的问题,是另外的子程序冲突了

使用特权

评论回复
39
Mr5Tao|  楼主 | 2016-10-24 21:55 | 只看该作者
tongbu2015 发表于 2016-10-21 22:26
有可能已经复位运行了,但是一直在某一个地方循环运行不出来的。。

对的,是其他地方的问题

使用特权

评论回复
40
Mr5Tao|  楼主 | 2016-10-24 21:56 | 只看该作者
baimiaocun2015 发表于 2016-10-23 11:51
这个还是先理论的计算下的,然后在理论值附件调整的

是子程序冲突了,造成了没有复位的假象

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则