作者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
推 ruemann:隔空抓藥我不會 要拿榕樹葉開天眼嗎? 08/31 20:26
推 WolfLord:把pwm產生程式放進timer的int,uart改用main loop應該 08/31 20:32
→ WolfLord:會改善,或者給timer比較高的中斷優先權也可以改善 08/31 20:33
→ WolfLord:因為相對於pwm,uart比較non-real time 08/31 20:34
推 deo2000:這問題跟我之前遇到的好像阿 08/31 20:38
推 timestoprun:找PWM是硬體獨立的!!不會被中斷影響,或是使用優先權 10/22 21:08