打印

意外的中断问题

[复制链接]
1382|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
logokfu|  楼主 | 2013-6-25 07:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
logokfu|  楼主 | 2013-6-25 11:31 | 只看该作者
有没有好的解决方案

使用特权

评论回复
板凳
受不了了| | 2013-6-25 12:00 | 只看该作者
?读写什么器件

使用特权

评论回复
地板
logokfu|  楼主 | 2013-6-25 12:38 | 只看该作者
受不了了 发表于 2013-6-25 12:00  ?读写什么器件

用51单片机模拟iic总线读写eeprom。

使用特权

评论回复
5
受不了了| | 2013-6-25 12:55 | 只看该作者
没发现过这样的问题呢,我有一款产品,每分钟存储一百多次,都是在主循环里处理,被打断那是肯定经常发生的

使用特权

评论回复
6
受不了了| | 2013-6-25 12:56 | 只看该作者
是存储用的某个变量被中断修改了吧

使用特权

评论回复
7
logokfu|  楼主 | 2013-6-25 13:09 | 只看该作者
受不了了 发表于 2013-6-25 12:55  没发现过这样的问题呢,我有一款产品,每分钟存储一百多次,都是在主循环里处理,被打断那是肯定经常发生的 ...

我这个程序要求定时器100us中断一次,这个中断纯粹是为了模拟出一路pwm做呼吸灯效果。pwm呼吸灯频率100Hz从最暗到最亮要做100级的梯度。所以选的100us的定时器中断。还要模模拟iic读写,定时器的中断会影响通信。偶尔会读出错误的数据。当然程序中还要扫按键,数码管。不过这个不是很主要。

使用特权

评论回复
8
logokfu|  楼主 | 2013-6-25 13:24 | 只看该作者
当然我可以把呼吸灯的pwm频率降低些。做到50Hz,低于50Hz会有闪的感觉。那样100阶的pwm,也需要定时器200us中断一次。有时任务多,还是会出现任务做不完。

使用特权

评论回复
9
logokfu|  楼主 | 2013-6-25 13:32 | 只看该作者
受不了了 发表于 2013-6-25 12:56  是存储用的某个变量被中断修改了吧

数据读写函数用的相关变量定义的是局部变量。这个存在堆栈中容易出现被修改的问题。如果改成局部静态变量,虽然不会被修改,但是会有通信挂起的风险阿。

使用特权

评论回复
10
logokfu|  楼主 | 2013-6-25 20:29 | 只看该作者
大家来讨论下

使用特权

评论回复
11
xyz549040622| | 2013-6-26 00:12 | 只看该作者
在通讯中加入数据的简单校验可以不

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

2646

帖子

7

粉丝