Thread 中讨论的其他器件:C2000WARE、controlSUITE、 SYSBIOS
工具与软件:
//编码环境
/CCS 10.0.0.00010
/C2000Ware 3.01.00.00
/BIOS_6_82_00_16
/controlSUITE 3.4.9
我已经在上述环境中创建了软件、但两个计时器之一会在运行过程中停止。
您能否告知原因?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
//编码环境
/CCS 10.0.0.00010
/C2000Ware 3.01.00.00
/BIOS_6_82_00_16
/controlSUITE 3.4.9
我已经在上述环境中创建了软件、但两个计时器之一会在运行过程中停止。
您能否告知原因?
感谢您的答复。
计时器设置如下所示。
----------------------------------------------------------------------------------------------------------------------------------
var ti_sysbios_family_c28_Timer0Params = new ti_sysbios_family_c28_Timer.params ();
ti_sysbios_family_c28_Timer0Params.instance.name ="ti_sysbios_family_c28_Timer0";
TI_SysBIOS_family_c28_Timer0Params.period = 20;
program.global.ti_sysbios_family_c28_Timer0 = ti_sysbios_family_c28_timer.create (null、"&Timer20us"、ti_sysbios_family_c28_Timer0Params);
var ti_sysbios_family_c28_Timer1Params = new ti_sysbios_family_c28_Timer.params ();
ti_sysbios_family_c28_Timer1Params.instance.name ="ti_sysbios_family_c28_Timer1";
TI_SysBIOS_family_c28_Timer1Params.period = 1000;
program.global.ti_sysbios_family_c28_Timer1 = ti_sysbios_family_c28_timer.create (1、"&Timer1ms"、ti_sysbios_family_c28_Timer1Params);
----------------------------------------------------------------------------------------------------------------------------------------
通过将停止计时器中断的过程输出到外部器件并在示波器上观察来观察计时器停止这一事实。
20us 计时器执行主过程、而1ms 计时器则执行微不足道的处理。
停止时始终是1ms 计时器、而20us 计时器继续运行。
没有关于发生频率的规则。 平均每13小时发生一次。
很抱歉,但我需要你的建议。
我曾尝试观察 IER、但当我更改代码时、Timer1停止的事件不再发生。
使用20us 计时器的任务的最大处理时间为11.2us。 所以我们认为需要留出一定的处理时间。
作为附加信息、将堆栈大小从2048字节更改为512字节会增加计时器停止的频率。
但是、在检查 CCS 栈使用情况时、2048字节和512字节的栈大小都绰绰有余。
目前、堆栈大小从2048更改为512字节、20us 计时器由 RTOS 唤醒、并且1ms 计时器更改为中断处理、以查看事件是否重新发生。
如果有任何其他细节需要确认、请告知我们。
我知道您说过、该问题在很长一段时间内发生的可能性是不可预测的、但您可以进行一些调试吗? 您是否可以在计时器停止后连接调试探针、并使用 CCS 查看寄存器状态、查看 ROV 以查看 RTOS 状态等??
如果您不知道如何在不执行复位和干扰器件状态的情况下连接到器件、您可以按照 本视频中的步骤操作 、或创建新的.ccxml 文件并编辑设置以删除.gel 文件并使用该文件进行连接。
惠特尼
连接到调试以查看复位时发生的情况。
您是否已采取措施避免重置? 正如我在上一帖子中提到的那样、实现此目标的一种快速方法是创建一个新的.ccxml 文件并删除.gel 文件。 看下面的屏幕截图——看看"初始化脚本"字段是如何清除的?

能够进行连接、那么您可以使用 ROV (经典)来检查 Hwi 的状态、检查堆栈错误等将会很有帮助。
惠特尼
您是否在可能阻止调试器连接的器件上启用了任何安全功能? 您是否也可以尝试切换实时模式设置(请参阅下面的链接帖子)以查看这是否有任何区别?
惠特尼
您之前是如何确认 IER 位已被清零的? 切换 IO? 您提到、更改栈大小似乎对代码行为有一些影响。 你能尝试调用 Hwi_getStackInfo 函数、并查看它是否报告了任何问题吗?
惠特尼