作者qeagle ()
看板ASM
標題[問題] PIC使用c30的__delay_us()
時間Sat Aug 17 02:40:11 2013
我發現使用在c30的c compilier上__delay_us()函式時
輸入是const像 __delay_us(20)就正常
換成變數像
delay=20;
__delay_us(delay)
延遲時間就會爆增
不知道為什麼
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.141.134.219
1F:推 ksmrt0123:用變數需要run time才會算出真正的delay數值, 細節看一 08/19 01:30
2F:→ ksmrt0123:下 libpic30.h 就知道 08/19 01:31
3F:→ qeagle:謝謝你的回應,但我看它的說明只有提到定義FCY這個值會影響 08/21 14:38
4F:→ qeagle:時間FCY是外部振盪器頻率,並沒看到用常數與變數有差別? 08/21 14:39
5F:→ qeagle:我自己懷疑是否巨集造成,但也看不出來 08/21 14:55
6F:推 ksmrt0123:那你要看一下compiler optimization的 constant 08/22 00:15
7F:→ ksmrt0123:folding 與 constant propagation 08/22 00:15
9F:→ ksmrt0123:你用的compiler可能沒有做constant propagation, 或是 08/22 00:18
10F:→ ksmrt0123:條件不足所以沒做propagation 08/22 00:21
11F:→ qeagle:哇..這個就太深了,這個專有名詞我都沒看過,但我想程式有沒 08/22 19:07
12F:→ qeagle:有做佳化..應該不會讓原預期是us的delay功能,變成ms等級吧 08/22 19:08
13F:→ ksmrt0123:那就... 直接看編出來的asm檔的差異吧 08/23 01:34