单片机中断和外部大循环都可能去修 - feiy

feiy
null 04月26日 字数 270
Embedded 嵌入式系统
8 个回复
fyzjsmth
封印之剑 04月26日

使能中断屏障应该不会丢中断

发自「今日水木 on SPN-AL00」

【 在 feiy 的大作中提到: 】

: 单片机中断和外部单线程大循环都可能去修改一个全局双向链表。

: 按照目前的设计架构和实时性需要,中断里的修改链表的操作,必须放置在中断里执行

: 。

: 该单片机不支持中断挂起,不支持软件模拟触发中断,只支持使能或禁止。但如果禁止

: 了中断,则禁止期间中断请求会被丢失。

: 请问,怎么处理比较好?

: --

conepoint
欲*静观其变*三昧真火 04月26日

前提是中断信号持续存在

【 在 fyzjsmth 的大作中提到: 】

: 使能中断屏障应该不会丢中断

: 发自「今日水木 on SPN-AL00」

fyzjsmth
封印之剑 04月26日

中断分电平和脉冲,脉冲会锁存

发自「今日水木 on SPN-AL00」

【 在 feiy 的大作中提到: 】

: 单片机中断和外部单线程大循环都可能去修改一个全局双向链表。

: 按照目前的设计架构和实时性需要,中断里的修改链表的操作,必须放置在中断里执行

: 。

: 该单片机不支持中断挂起,不支持软件模拟触发中断,只支持使能或禁止。但如果禁止

: 了中断,则禁止期间中断请求会被丢失。

: 请问,怎么处理比较好?

: --

tom6bj
tom 04月26日

...你希望怎么办,禁止期间中断请求给你进个队列?

单片机中断和外部单线程大循环都可能去修改一个全局双向链表。

按照目前的设计架构和实时性需要,中断里的修改链表的操作,必须放置在中断里执行

该单片机不支持中断挂起,不支持软件模拟触发中断,只支持使能或禁止。但如果禁止

了中断,则禁止期间中断请求会被丢失。

请问,怎么处理比较好?

【 在 feiy (null) 的大作中提到: 】

pauljoe
袋鼠妈妈有个袋袋 04月26日

实时性,除非你在中断里完成要做的工作,而这个工作必须修改全局链表

如果不带操作系统

中断里只做标记,不修改全局链表

修改工作在非中断环境中完成

【 在 feiy 的大作中提到: 】

: 单片机中断和外部单线程大循环都可能去修改一个全局双向链表。

: 按照目前的设计架构和实时性需要,中断里的修改链表的操作,必须放置在中断里执行

: 。

: ...................

freynew123
frey 04月26日

单片机中断 外部单线程只提供链表修改请求,请求放入队列

专门的线程处理这个队列,这样就不需要加锁解锁

dormouseBHU
dormouseBHU 04月26日

换单片机。明显你选的这个单片机太弱了,不适合这个场景

【 在 feiy 的大作中提到: 】

: 单片机中断和外部单线程大循环都可能去修改一个全局双向链表。

: 按照目前的设计架构和实时性需要,中断里的修改链表的操作,必须放置在中断里执行

: 。

: ...................

thehelen
asd 04月27日

加个定时中断,外部大循环操作这个表的部分放定时中断里面进行。

【 在 feiy 的大作中提到: 】

: 单片机中断和外部单线程大循环都可能去修改一个全局双向链表。

: 按照目前的设计架构和实时性需要,中断里的修改链表的操作,必须放置在中断里执行

: 。

: ...................

Qlala
Qlala 04月27日

杜绝在中断中大量干活的错误设计

最多设置个标志或者计数,由外部代码去干活

【 在 feiy 的大作中提到: 】

: 单片机中断和外部单线程大循环都可能去修改一个全局双向链表。

: 按照目前的设计架构和实时性需要,中断里的修改链表的操作,必须放置在中断里执行

: 。

: ...................