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

作者: qeagle   2013-08-17 02:40:11
我發現使用在c30的c compilier上__delay_us()函式時
輸入是const像 __delay_us(20)就正常
換成變數像
delay=20;
__delay_us(delay)
延遲時間就會爆增
不知道為什麼
作者: ksmrt0123 (ksmrt)   2013-08-19 01:30:00
用變數需要run time才會算出真正的delay數值, 細節看一下 libpic30.h 就知道
作者: qeagle   2013-08-21 14:38:00
謝謝你的回應,但我看它的說明只有提到定義FCY這個值會影響時間FCY是外部振盪器頻率,並沒看到用常數與變數有差別?我自己懷疑是否巨集造成,但也看不出來
作者: ksmrt0123 (ksmrt)   2013-08-22 00:15:00
那你要看一下compiler optimization的 constantfolding 與 constant propagationhttp://en.wikipedia.org/wiki/Constant_folding你用的compiler可能沒有做constant propagation, 或是條件不足所以沒做propagation
作者: qeagle   2013-08-22 19:07:00
哇..這個就太深了,這個專有名詞我都沒看過,但我想程式有沒有做佳化..應該不會讓原預期是us的delay功能,變成ms等級吧
作者: ksmrt0123 (ksmrt)   2013-08-23 01:34:00
那就... 直接看編出來的asm檔的差異吧

Links booklink

Contact Us: admin [ a t ] ucptt.com