- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的系统有几个中断,包括TC捕获、外部中断和ADC转换中断。特别是有一个 vector ,在执行时,即使在 reti()
指令之后,也会阻止任何 vector 执行。
TCB2 捕获中断 vector ( vector 25)是系统中唯一停止所有导致 WDT 复位的 vector 。
全局中断标志为 1,当中断发生时,激活中断的 INTFLAGS 被正确设置。但是没有 vector 被执行。这适用于所有中断。
我已经尝试稍微更改 vector ,确保存在 reti()
指令并确保 vector 表没有改变。我也已经确保代码在 reti()
之后继续正常执行。唯一似乎不起作用的是 vector 。
volatile uint8_t new_input_regs = 0x00;
/*[Other code, including other vectors without this issue]*/
void __vector_25() {
new_input_regs = PORTD_IN; //Get PORTD input values
TCB2_CTRLA &= ~(0x01); //Clear TC enable and flags
TCB2_INTFLAGS = 0xFF;
asm("WDR"); //Reset the WD timer
event_type = EVENT_INPUT_INTERRUPT; //Set the event
reti();
}
在此执行后,所有中断都将停止工作,直到复位(由于没有执行中断,这最终也会导致看门狗复位)。
这里有关于寄存器和 vector 表的更多信息:https://imgur.com/a/SpLKrgT
最佳答案
多亏了评论,我注意到 ISR 过于优化,甚至跳过 retis 并在一个单独的 assemble block 中合并 vector 而没有返回。默认 vector 函数(如上面使用的 __vector_25()
)无法按预期工作,导致未终止的 ISR 和丢失 reti()
,即使是手动编写也是如此。这会导致完全意外的行为。
我已将 vector 定义更改为 ISR(_VECTOR(25))
并删除了函数末尾的 reti()
。中断已恢复正常工作。
感谢您的帮助。
关于c - 在 vector、SEI 和 intflags 仍然设置后中断停止执行。 (AtMega4809),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57866564/
我有一堆 IntFlag 类型,我希望经常将字符串列表从配置文件转换为这些类型的成员。我目前的计划是扩展 IntFlag: class BetterIntFlag(IntFlag): @cla
如何从组合的 IntFlag 中获取单独的标志Python 中的值? import enum class Example(enum.IntFlag): A = 0b0001 B = 0
我正在运行 $ virtualenv -p `which python3.6` env_pcl #Running virtualenv with interpreter /usr/bin/python
核心模块怎么可能从另一个核心模块导入不存在的名称? 具体来说,re 模块导入 enum.IntFlag 繁殖方式 它可以通过启动解释器并尝试导入、运行依赖于 enum.IntFlag 的程序(例如 p
这个问题已经有答案了: Why Python 3.6.1 throws AttributeError: module 'enum' has no attribute 'IntFlag'? (22 个回
这个问题已经有答案了: Why Python 3.6.1 throws AttributeError: module 'enum' has no attribute 'IntFlag'? (22 个回
当我尝试安装 fastai (pip install fastai) 时,出现以下错误: AttributeError: module 'enum' has no attribute 'IntFlag
我的系统有几个中断,包括TC捕获、外部中断和ADC转换中断。特别是有一个 vector ,在执行时,即使在 reti() 指令之后,也会阻止任何 vector 执行。 TCB2 捕获中断 vector
我有一个错误,仅在 PyCharm 中运行单元测试时出现。 OSX 上的 Python 3.6.5。 /Users/me/project/env/bin/python /Applications/Py
pip 安装枚举 不工作是显示错误 AttributeError:module 'enum' 没有属性 'IntFlag' 最佳答案 enum34是标准库 Enum向后移植,但它仅支持最高 3.5 的
我刚刚安装了适用于 MacOS X 的 Python 3.6.1 当我尝试运行控制台(或使用 Python3 运行任何内容)时,会抛出此错误: AttributeError: module 'en
我是一名优秀的程序员,十分优秀!