[問題] PIC使用c30的__delay_us()

看板ASM (組合語言)作者時間11年前 (2013/08/17 02:40), 編輯推噓2(2011)
留言13則, 2人參與, 最新討論串1/1
我發現使用在c30的c compilier上__delay_us()函式時 輸入是const像 __delay_us(20)就正常 換成變數像 delay=20; __delay_us(delay) 延遲時間就會爆增 不知道為什麼 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.141.134.219

08/19 01:30, , 1F
用變數需要run time才會算出真正的delay數值, 細節看一
08/19 01:30, 1F

08/19 01:31, , 2F
下 libpic30.h 就知道
08/19 01:31, 2F

08/21 14:38, , 3F
謝謝你的回應,但我看它的說明只有提到定義FCY這個值會影響
08/21 14:38, 3F

08/21 14:39, , 4F
時間FCY是外部振盪器頻率,並沒看到用常數與變數有差別?
08/21 14:39, 4F

08/21 14:55, , 5F
我自己懷疑是否巨集造成,但也看不出來
08/21 14:55, 5F

08/22 00:15, , 6F
那你要看一下compiler optimization的 constant
08/22 00:15, 6F

08/22 00:15, , 7F
folding 與 constant propagation
08/22 00:15, 7F

08/22 00:18, , 9F
你用的compiler可能沒有做constant propagation, 或是
08/22 00:18, 9F

08/22 00:21, , 10F
條件不足所以沒做propagation
08/22 00:21, 10F

08/22 19:07, , 11F
哇..這個就太深了,這個專有名詞我都沒看過,但我想程式有沒
08/22 19:07, 11F

08/22 19:08, , 12F
有做佳化..應該不會讓原預期是us的delay功能,變成ms等級吧
08/22 19:08, 12F

08/23 01:34, , 13F
那就... 直接看編出來的asm檔的差異吧
08/23 01:34, 13F
文章代碼(AID): #1I3d8D7y (ASM)
文章代碼(AID): #1I3d8D7y (ASM)