Browsing this Thread:
1 Anonymous Users
|
Re: 請教關於code簡化以減少Instruction cycle達到更高效率實現更高頻率的問題
|
|
新會員
Joined
: 2009/10/23 4:00 最後登入時間
: 2009/11/11 11:59
From The University of Manchester
Group:
註冊會員
Level : 1 HP : 0 / 2 MP : 1 / 115 EXP : 10
|
那麼要怎麼做才能提高FOSC呢?振盪器頻率是可以調的嗎?我不會組合語言,在C上有辦法改進嗎?萬分感激你的回覆
發表於: 2009/10/24 20:22
|
|
|
Re: 請教關於code簡化以減少Instruction cycle達到更高效率實現更高頻率的問題
|
|
版主
Joined
: 2004/4/30 10:53 最後登入時間
: 2021/11/30 18:11
From CAE, Microchip
Group:
站務管理者 註冊會員
Level : 75 HP : 744 / 1861 MP : 5367 / 108866 EXP : 45
|
18F4520 拉高到 20MHz,改用組合語言寫,那速度就可以很快了。
發表於: 2009/10/23 10:40
|
|
|
請教關於code簡化以減少Instruction cycle達到更高效率實現更高頻率的問題
|
|
新會員
Joined
: 2009/10/23 4:00 最後登入時間
: 2009/11/11 11:59
From The University of Manchester
Group:
註冊會員
Level : 1 HP : 0 / 2 MP : 1 / 115 EXP : 10
|
不同的語句statement算作不同的move型instructions,在執行時都要花費Tcy,設適當的delay,以期達到需要的頻率。下麵寫的是一個為DAC提供三角波型號的program,在執行時想要達到1,2,4,8kHz的信號。使用的是PIC18LF4520,FOSC是10MHz。 delay語句參數是按照理論計算得出的,但在安裝上DAC以後發現頻率偏差較大,具體說是太慢,程式效率低。怎樣才能實現更高的頻率呢?這個程式沒有delay時最高能達到4kHz,每個子while語句怎樣簡化程式才能實現8kHz甚至更高呢?
#include<p18f4520.h> #include<delays.h> void main(void) { int value; ADCON1=0x0F; TRISA=0x0f; TRISD=0xE0; LATD=0x00; while(1) { while(PORTA==0x01) { for(value=0;value<32;value++) { LATD=value; Delay10TCYx(4); } for(;value>1;value--) { LATD=value-2; Delay10TCYx(4); } } while(PORTA==0x02) { for(value=0;value<32;value++) { LATD=value; Delay10TCYx(2); } for(;value>1;value--) { LATD=value-2; Delay10TCYx(2); } } while(PORTA==0x04) { for(value=0;value<32;value++) { LATD=value; Delay10TCYx(1); } for(;value>1;value--) { LATD=value-2; Delay10TCYx(1); } } while(PORTA==0x08) { for(value=0;value<32;value++) { LATD=value; Delay1TCY(); Delay1TCY(); Delay1TCY(); Delay1TCY(); Delay1TCY(); } for(;value>1;value--) { LATD=value-2; Delay1TCY(); Delay1TCY(); Delay1TCY(); Delay1TCY(); Delay1TCY(); } } } }
發表於: 2009/10/23 4:27
|
|
You can view topic.
你 不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.