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/TMS320F28335:在计时器 ISR 中使用 DELAY_US 例程时、ISR 非法

Guru**** 2040210 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/693202/ccs-tms320f28335-illegal-isr-when-using-delay_us-routine-in-timer-isr

器件型号:TMS320F28335

工具/软件:Code Composer Studio

大家好、

我一直在使用 timer0、并尝试提供1微秒的延迟、它会一直在非法 ISR 中结束。 我不知道为什么会发生这种情况。 如果我不使用延迟例程、那么它就可以正常工作。

有什么想法、为什么它的行为是这样的?

此致、

Akhil Pillai

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好

    usDelay 函数在使用前被放置在 RAM 中? 您是否满足 DSP2833x_usDelay.asm 中详细介绍的使用说明?

    此致
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嘿 Chris、我在使用之前不了解该函数被放置在 RAM 中。 当我们将程序加载到 RAM 中时、函数必须已经存在、我们不必放置它、我只是尝试提供1微秒延迟、我认为这是按照使用说明进行的。


    谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好

    好的、它会将整个应用程序加载到 RAM 中、这应该是可以的。 如果尝试从闪存运行此函数而不是在手头复制到 RAM、这将导致非法 ISR。

    传递常量值吗? 您不想传入变量。
    如果您使延迟变大、是否会发生这种情况?

    此致
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Chris:

    我一直在传递常量值而不是变量。 我也尝试了几秒钟的延迟、但它不起作用。 我在闪存中运行代码、但我已包含所有库、因此不会遗漏任何函数定义。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好

    要进行确认、delay 函数与 ramfuncs 段绑定、并且您正在代码中运行 memcpy、以确保函数从 RAM 运行?
    如果您在 ISR 外部调用 delay 函数、会出现什么问题?

    此致
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    是的、如果我在 ISR 外部调用 delay 函数、则没有问题。 它工作正常。

    此致、
    Akhil
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Akhil

    可以发布 ISR 的反汇编屏幕截图、其中包括对 delay 函数的调用吗?

    编辑:还包括.map 文件

    此致
    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Akhil

    您是否解决了此问题? 如果我在周三之前没有收到回复、我将关闭帖子。

    此致
    Chris