UPD78F9222 发表于 2009-1-10 01:00:54

请教 SM+ 在使用Halt命令后如何从中断中恢复出来!【恢复】

新手,在使用SM+做仿真时,想使用halt命令省电,但是发现使用SM仿真时,一旦使用了halt命令,就没有办法处理中断了。

本来想法是:

1.设置80定时器定时值

2.使能定时器,定时器开始计数

3.执行halt命令。

4.希望定时器结束执行80定时器中断程序。



故障现象:单步执行仿真时,执行到halt命令就停止了。使用F8没法继续往下执行。

原因猜测:分析原因觉得是SM在halt模式时。Fcpu停止了,数据手册上虽然说外围时钟Fxp这时还是工作的(80定时器使用Fxp做为时钟)。SM仿真程序由于Fcpu停止了,就无法对外围时钟Fxp操作了。不知道那位大虾能够指点一下啊,使用什么方法能够在Fcpu停止的时候让Fxp运行?



谢谢!

UPD78F9222 发表于 2009-1-13 00:13:24

好像发现答案了!

When a program is stopped by halt ,the PC value is changed to an other address, then the program is resumed, SM+ does not operate normally.  ZUD-CD-05-0003-1-E这份文档P9页有说到!

UPD78F9222 发表于 2009-1-12 21:30:03

Sorry,是SET1 TCE80; 但是根本进不了定时中断。连端口中断都进不去。郁闷死了。有时能进端口中断,有时连端口中断都进不去,更不要说定时器中断了!

本贴被 UPD78F9222 编辑过,最后修改时间:2009-01-12,22:22:18.

RENESAS-etouch 发表于 2009-1-12 15:06:55

你的程序全部都在这里吗?

如果你的程序都在这里,那么你的定时器80应当不能产生中断,你80定时器的中断使能并没有打开。

sophie0403 发表于 2009-1-12 14:36:30

SM+可以仿真Halt模式的,不加halt时能进定时器中断吗?

本贴被 sophie0403 编辑过,最后修改时间:2009-01-12,14:37:12.

UPD78F9222 发表于 2009-1-11 13:11:05

没人指点一下吗?我把代码贴出来。

        MOV        INTM0,        #00000000B        ; Set the valid edge of INTP1 to falling edge

        CLR1        PIF1                        ; Clear invalid interrupt requests in advance

        CLR1        PMK1                        ; Release the INTP1 interrupt mask

        EI                                ; Enable vector interrupt

        

Main_loop:

;        NOP;

;        BR $Main_loop;

        SET1 P4.5

        HALT;

;*******************************************************************************

;

;        External interrupt INTP1

;

;*******************************************************************************

INTERRUPT_S3:

        CLR1    TMIF80          ; Clear invalid interrupt 

        CLR1    TMMK80          ; Release the timer80 interrput mask         

        MOV TMC80, #00000000B;

        MOV CR80, #20;

        CLR1 TCE80;

        CLR1    PIF1;

    RETI;

;---------------------------------------------------------------------------------

INTERRUPT_INTTM80:

    CLR1 P4.5;

    CLR1 TMIF80;

END_INTTM80:

    RETI;

 

end
页: [1]
查看完整版本: 请教 SM+ 在使用Halt命令后如何从中断中恢复出来!【恢复】