作者GooLoo (平凡)
看板ASM
标题[问题] 中断问题
时间Fri Aug 31 19:29:14 2012
最近遇到一个问题,一直想不到方法解决, 可否请大大指点一下.
问题是这样的
我有一段程式...
if a==1
{........}
碍於行数, 这边就先不说出来,ok!
这里面就是写了一段PWM 的一些动作
当UART发生中断时, 我发现我的PWM波型开始跟原本不一样....
我想是因为中断跳过去, IO 保持的 关系
我想解决这问题, 就是当UART发生, a=0, 做完之後 再a=1, 让PWM重新来过,
但是我发现, 就算我在中断内给a=0,
它还是不会重作 ,
因为c语言是"循序"的方式执行程式,并不是"并列"
,因此, 它在 {} 内某一行在做事也许里面有一个while(),它停在那边等......
还没绕到最前面if判断,所以就算中断给a=0
好像不会有作用, 不知道怎麽解决!
抱歉!我表达可能不好请多多包涵
不晓得有人了解我讲的问题吗?
可否给一些idea吗?
如何中断发生时, 可以让if a== 1 起作用
a=1 or 0 类似一个enable的功能,只要可以触发, 应该就能解决
但是......现在就是触发不到 >"<
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.239.44
1F:推 ruemann:隔空抓药我不会 要拿榕树叶开天眼吗? 08/31 20:26
2F:推 WolfLord:把pwm产生程式放进timer的int,uart改用main loop应该 08/31 20:32
3F:→ WolfLord:会改善,或者给timer比较高的中断优先权也可以改善 08/31 20:33
4F:→ WolfLord:因为相对於pwm,uart比较non-real time 08/31 20:34
5F:推 deo2000:这问题跟我之前遇到的好像阿 08/31 20:38
6F:推 timestoprun:找PWM是硬体独立的!!不会被中断影响,或是使用优先权 10/22 21:08