Re: Hi-Tech compiler 的問題
|
||||
---|---|---|---|---|
新會員
|
參照:
Dear lancer0498 直接加<pic16f685.h>當然也是可以的嚕~~ 透過include <pic.h>或<htc.h>的方式, 只是讓HiTech的前置處理器來處理這一段include file的工作。 更方便、可攜性也提高, 算是HiTech貼心的地方啦 ^^
發表於: 2009/12/1 1:12
|
|||
|
Re: Hi-Tech compiler 的問題
|
||||
---|---|---|---|---|
新會員
|
參照:
lancer0498大大你好, 感謝你的建議。 不過我之前的問題是在HiTech前幾版還沒支援PIC16F690系列的時候 (也就是安裝後,並不會有16F690的Header檔),那時曾經試著手動照著SPEC SFR的定義自建Header,結果Compiler似乎是不接受這種做法。 如果是以目前的情況而言, 大膽假設如果要使用Hi-Tech來寫目前最新的PIC12F1822,即使自建Header應該也是沒辦法的。 不過既然Microchip已經把HiTech併入,相信未來的整合性會更好。 再次感謝 lancer0498兄的資訊。
發表於: 2009/11/30 16:15
|
|||
|
Re: Hi-Tech compiler 的問題
|
||||
---|---|---|---|---|
新會員
|
參照:
到美國官網去下載最近的MPLAB IDE v8.40,已經有支援PIC16F690系列了。 不過如果遇到Hi-Tech沒有支援到較新的Item,似乎也沒辦法手動去做header檔。
發表於: 2009/11/27 11:45
|
|||
|
Re: software PWM 問題請教
|
||||
---|---|---|---|---|
新會員
|
參照:
上面那個只是概念的code 用組語也可以寫得出來。 大概做法就是用一個Timer定時中斷(1/10k = 0.1ms) 在中斷內把所有的IO拉HIGH 主迴圈內就用Polling的方式看Timer的值是不是超過設定的Duty值。 超過了就切LOW。 這樣就是一個軟體的PWM了。 只是頻率低了點、準度差了點(因為負緣是用Polling做出來的) 基本上有幾根OUTPUT PIN就可以做出幾ch的pwm。 不過。以10khz、8bit的條件,對軟體的做法來說,loading是過大了。
發表於: 2009/6/17 12:04
|
|||
|
Re: software PWM 問題請教
|
||||
---|---|---|---|---|
新會員
|
「目標是要做到6 channel 的PWM (10khz 8bit)」
既然說是Software PWM了, 那就用Polling的方式來做嚕 不過準度不好就是了。 概念像下面這樣: //------------------------------------------ void Timer0_ISR(void){ PWM1_PIN = HIGH; PWM2_PIN = HIGH; PWM3_PIN = HIGH; PWM4_PIN = HIGH; PWM5_PIN = HIGH; PWM6_PIN = HIGH; RESET_TIMER0(); } //------------------------------------------ void main(void){ Initial(); //...etc. while(1){ if(Timer0 >= Duty1){ PWM1_PIN = LOW; } if(Timer0 >= Duty2){ PWM2_PIN = LOW; } //....etc. } } //======================= ps.這個留言版系統可以把Tab鍵的功能做進來嗎? 沒有Tab,每次看code都蠻痛苦的。>_<
發表於: 2009/6/16 9:50
|
|||
|
Re: PICC 無法 BUILD...
|
||||
---|---|---|---|---|
新會員
|
參照:
「但沒設 TOIE , 只有 T0IF 會進入 ISR 嘛 ?」 只有T0IF == 1不會進ISR 但如果有別的中斷發生,那就會進ISR了 所以這個寫法應該是建立在兩個前提: 一、多個中斷。 二、T0IE有時候會暫時關掉。 也謝謝這個討論串嚕,以前也沒去深入想過這個差別。
發表於: 2009/6/8 18:01
|
|||
|
Re: 為何將電壓輸入至AN腳,電壓會變成0V??????
|
||||
---|---|---|---|---|
新會員
|
像是IO設定成拉LOW輸出了?
先確認TRISA是否有設定為輸入吧。
發表於: 2009/2/26 9:55
|
|||
|
Re: 詢問PIC16F687的PWM如何控制?
|
||||
---|---|---|---|---|
新會員
|
沒有PWM模組,那就用軟體的方式做嚕。
Polling Timer0與Duty、Period。 概念: 當Timer0的值小於設定的Duty,輸出High。 大於Duty,輸出Low。 頂到週期,就重新開始一個新的週期。 (重設Timer0,輸出High) 因為這個pwm是靠軟體的做出來的, 所以軟體的loading會比較大, pwm的頻率也會比較低。 Good luck~~
發表於: 2009/1/20 9:41
|
|||
|
Re: 請問簡單的if_then_else程式
|
||||
---|---|---|---|---|
新會員
|
1.重要的是邏輯規畫,而不是指令。
按鍵的Debounce可以用Timer0中斷去處理 若你用的是無中斷的低階PIC ,就去Polling Timer0的值 如:if(TMR0 >= TIME_BASE_PERIOD) 產生Time Base,假設為1ms。 2.假設你的按鍵設計成30ms偵測一次,那就變成: if(TMR0 >= TIME_BASE_PERIOD){ TMR0 = 0; TimeBase_DetSW++; if(TimeBase_DetSW >= 30){ TimeBase_DetSW = 0; DetectingSW(); } } 3.以上是不使用Delay做按鍵偵測的概念。 DetectingSW()的部份 還要看你的硬體線路是Low Active或High Active, 再加個旗標、或Register,就可以做出很多變化。 4.建議儘量少用goto的方式,會破壞軟體的封裝架構。 請多以call、return、使用flag做工作間連結的方式來思考。 如:當按鍵偵測完畢。就設定一個:flag_SW_Pressed。 後面的程式再來讀這個flag,判斷是否要執行相對應的動作。 以上,希望對你有幫助嚕。
發表於: 2009/1/13 10:10
|
|||
|