E8a 仿真器具有在用户程序开始运行之前和停止之后立即执行用户程序指定例程的功能。此功能称为启动/停止功能。在电机控制或类似的其他应用中,如果用户程序在调试过程中突然停止,电机将突然停止。这将导致出现问题。因此,使用启动/停止功能允许停止电机或定时器控制的进程或重新启动它的进程在用户程序停止后或启动后立即执行。这样,就可以安全地调试程序。
本文档解释了启动/停止功能的概述,并描述了如何使用启动/停止功能测量用户程序的执行时间,作为其应用程序的示例。本文档中的说明假设使用 Renesas Starter Kit for R8C/2D 及其附带的教程程序。然而,如果程序的定时器处理部分被改变,这里的解释也适用于其他瑞萨微机。
启动/停止功能概述
使用启动/停止功能,可以在用户程序开始运行之前和停止之后立即执行用户程序的指定例程,如下所示。用户程序开始运行前和停止后立即执行的例程可以单独设置。这些例程按以下流程图所示的时序执行。
实际上,在上述流程图中,在Start例程执行完成后,在用户程序实际开始运行之前,以及在程序停止后执行Stop例程之前,存在一些固件处理。虽然因微机或所使用的软件版本而异,但在 Start 例程执行完成后,用户程序实际开始运行之前需要大约 50 到 100 个周期的有限时间,并且在此之前需要大约 100 到 150 个周期的有限时间。停止程序在程序停止后执行。
在电机控制程序等中,将停止电机的过程指定为停止程序,将重新启动电机的过程指定为启动程序,即使用户程序在此期间停止,也可以安全地停止和重新启动电机。一个调试。
编写开始/停止例程时的注意事项
虽然开始/停止例程可以用 C 语言和汇编程序编写,但每个例程都必须以 RTS 指令结束。
此外,由于启动/停止功能与仿真器调试器的控制密切相关,除非遵守下述预防措施,否则仿真器将变得无法控制。(这里,开始和停止例程统称为“指定”例程。)
不要更改 E8a 仿真器固件使用的 SFR。有关 E8a 仿真器固件使用的 SFR 的详细信息,请参阅为每种 MCU 类型提供的单独的 E8a 仿真器用户手册。
使用看门狗定时器时,一定要在指定的例程中刷新看门狗定时器,而不仅仅是在用户程序中。
不要在指定的例程中设置断点。
要在指定例程中使用堆栈,请务必使用用户堆栈 (USP)。不能使用中断堆栈 (ISP)。
指定例程开始执行时的寄存器值是不确定的。尽管可以在指定的例程中更改寄存器值,但下面列出的寄存器和标志受到限制。
编辑:hfy
-
仿真器
+关注
关注
14文章
1017浏览量
83718 -
C语言
+关注
关注
180文章
7604浏览量
136673 -
定时器
+关注
关注
23文章
3246浏览量
114713 -
调试器
+关注
关注
1文章
303浏览量
23716
发布评论请先 登录
相关推荐
评论