[問題] 中斷問題

看板ASM (組合語言)作者 (平凡)時間11年前 (2012/08/31 19:29), 編輯推噓4(402)
留言6則, 4人參與, 最新討論串5/6 (看更多)
最近遇到一個問題,一直想不到方法解決, 可否請大大指點一下. 問題是這樣的 我有一段程式... 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

08/31 20:26, , 1F
隔空抓藥我不會 要拿榕樹葉開天眼嗎?
08/31 20:26, 1F

08/31 20:32, , 2F
把pwm產生程式放進timer的int,uart改用main loop應該
08/31 20:32, 2F

08/31 20:33, , 3F
會改善,或者給timer比較高的中斷優先權也可以改善
08/31 20:33, 3F

08/31 20:34, , 4F
因為相對於pwm,uart比較non-real time
08/31 20:34, 4F

08/31 20:38, , 5F
這問題跟我之前遇到的好像阿
08/31 20:38, 5F

10/22 21:08, , 6F
找PWM是硬體獨立的!!不會被中斷影響,或是使用優先權
10/22 21:08, 6F
文章代碼(AID): #1GGA0DWt (ASM)
文章代碼(AID): #1GGA0DWt (ASM)