首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

程序跑飞

在右下角的地址窗口查看寄存器对应的地址,或者在DATA窗口查看寄存器的数值
学后而问

您是说在程序run(运行)后的的window吗?

您是说在程序run(运行)后的的window吗?
-

Register

运行后的window显示register窗口:
D 0  A  0 B 0
IX 0 IY 0
IP C00 PC C00 PPAGE0
SP 0 CCR SXHIN2VC

左下角的DATA1窗口没有显示COPCLK information
-
要到右下角的数据窗口中去看。
海纳百川  有容乃大
在Date1窗口找到COPCTL了,当程序‘飞‘了之后COPCTL显示<1>volatile COPCTLSTR,不知道是什么意思?
-

Trigger module

最下面的小窗口可以选择Trigger module,现在选择状态是:Automatic(triggers,breakpoints,watchpoints,and trace possible).是不是应该手动设定这里?
-
下边是Freescale Support的回复。
Basically a Watchdog or COP (Computer Operating Properly) is a way to ensure that the code is running in a portion of known code; your code must be
restarting the Time Out by the specified method in each device, in the case of
HCS12 you have to write 0x55 followed by writing 0xAA to the ARMCOP
register. In case this sequence is not written to the ARMCOP register, the
microcontroller will reset.

我加上了也不管用啊,高手请教。
-
建议你先编一个最小的程序跑跑看,是否还会跑飞。
海纳百川  有容乃大

没有看门狗? 硬件的问题?中断设置的问题?

Strongchen:
我按您的建议试运行了一个简单的for(;;)循环的一个开关控制的LED程序。输入控制口的动作现象如下:
(1)当我把开关打开(ON - 即把输入控制口的电位拉到"零"),LED变亮。只要不从ON打回到OFF。这一步从来都没问题。无论等多长时间程序也不飞掉。

(2)当我把开关恢复到关(OFF - 即把输入控制口的电位恢复到"高"-我是用一个电阻把+5V电源接到此控制口,没有加其他外接器件到地),程序要么中止,要么飞到循环外面,总是有问题。

根据(1), 好像我的程序里根本就没有看门狗? 再就是问题总是出现在输入控制口的电平有零到高的时候,难道说应为硬件的问题?或者中断设置的问题?

请指教。谢谢。

-
你用哪个口作输入,哪个口作输出?程序怎样动作?
海纳百川  有容乃大
由于系统是由数个开关和按键组成混合逻辑,我用PT0-3和PU1-4端口作为输入状态判断口。PA0-5;PB0-5K0-5Q0-5为输出
用了一个‘合成’的字节寄存器来判断输入口的状态:
Tinputs = TInputs_GetVal(); //读PT3-PT0的状态
Uinputs = UInputs_GetVal(); //读PT3-PT0的状态
Iinputs = (Tinputs&0x0F)|((Uinputs&0x0F)<<4);//组成一个判断寄存器(由高到底字节位的顺序组成-PU4,PU3,PU2,PU1,PT3,PT2,PT1,PTO)。

举例如下:
for(;;)
{
if(((Iinputs&0xF4)==0xF4)&&ikey==0); 判断开关#1是否ON
// (PU4-PU1)=0000/(PT3-PT0)= 0100
{
OnGreen_SetBit(0); // PA0输出‘低‘,绿LED亮
delay(500000); // 5秒延迟
OnGreen_ClrBit(0); // PA0输出‘高‘,绿LED灭
ikey=1;
}
---------------以上从来没出现问题----下面总是出错------------------
else if((TUinputs==0xCE)&&(TUinputs!=0xF4)&&ikey==1) //判断开关是否扳回初始状态(TUinputs==0xCE)。
{
OnGreen_SetBit(1); // PA1输出‘低‘,绿LED亮
delay(500000); // 5秒延迟
OnGreen_ClrBit(1); // PA1输出‘高‘,绿LED灭
}
}
-
把程序再简化。只判断不动作,或只动作不判断,看看结果怎样。
海纳百川  有容乃大
只动作不判断没问题。
只动作不判断就出现问题。
-
???
海纳百川  有容乃大
只动作不判断没问题。
只判断不动作就出现问题。
-
返回列表