Re: 能請大大幫我看一下這段簡單的程式嗎~
|
||||
---|---|---|---|---|
新會員
|
參照:
portc.0的輸出是像pwm波形的 ,不用pwm去做是因為pwm的頻率是固定一個頻率的,如果要不用頻率要重復寫不同頻率的pwm,所以用portc.0~我的想法是這樣他的每個周期的頻率就不會相同了,會有變頻的效果。(不知道這樣的想法對不對~)
發表於: 2009/5/18 11:22
|
|||
|
Re: 能請大大幫我看一下這段簡單的程式嗎~
|
||||
---|---|---|---|---|
資深會員
|
請問你的portc.0有 hi lo hi lo 輸出像pwm的波形嗎? 用示波器量一下看看.
感覺上做法是可行,但這種做法似乎反應太慢而且A/D做的太平繁了,基本上你的方式做出來輸出電流應該在200ma上下振盪,而振盪大小則視A/D的速度而定... 如果換個做法,portc,0平常就是PWM輸出,每秒做1次A/D當電流大於200ma則減少 PWM hi的寬度,反之則增加....,電流應該會比你目前的做法更穩定.也不用很平繁的做A/D.
發表於: 2009/5/18 8:25
|
|||
|
Re: 能請大大幫我看一下這段簡單的程式嗎~
|
||||
---|---|---|---|---|
資深會員
|
參照:
可以看 Wreg , ADRESH 但你要用 ICD2 或 PICkit 2 進入 DEBUG MODE 我沒試過 但照理是可以的 .........
發表於: 2009/5/18 4:06
|
|||
|
Re: 能請大大幫我看一下這段簡單的程式嗎~
|
||||
---|---|---|---|---|
資深會員
|
; 不曉得 频率 所以 Tad 沒調 ......
; data sheet 看的太少 ; 沒設 interrupt , 幹嘛 測試 adif ?? ; 只針對 原程式 修改 , 總架構 不與討論 ( 前空白 我不知要如何加 LIST p=16F877 #INCLUDE<p16F877.INC> D1 EQU 0X20 D2 EQU 0X21 ORG 00H START: BSF STATUS,RP0 MOVLW 0X80 MOVWF ADCON1 ; 向右靠齊 ; CLRF ADCON1 CLRF TRISC BCF STATUS,RP0 MOVLW B'10110001' MOVWF ADCON0 MOVLW ADRESL ; 將 ADRESL 位址 放入 FSR , 以方便存取 MOVWF FSR ADCONVERT: CALL DELAY BSF ADCON0,GO ADWAIT: ;;;; NOP BTFSC ADCON0 ,GO GOTO $ - 1 ;;;;;; BCF PIR1,ADIF MOVF ADRESH , F BTFSS STATUS , Z ; 是否 為0 GOTO PP2 ; A/D > .105 MOVLW .105 SUBWF INDF , W ; 對 ADRESL 進行 減法 BSF ADCON0 , GO ; 進行下一次 A/D , 不會影響 C FLAG BTFSC STATUS,C GOTO PP2 ; C = 1 , >= .105 ;;;;;;; GOTO PP2 ; PP1: BSF PORTC,0 ; C = 0 , < 105 GOTO ADWAIT ; ADCONVERT PP2: BCF PORTC,0 GOTO ADWAIT ; ADCONVERT DELAY: MOVLW .50 MOVWF D1 DLY1: DECFSZ D1,F GOTO DLY1 RETURN END ; genitec say ; ===> 建議你的 mosfet 改由 PWM去推動 ; +1
發表於: 2009/5/18 3:21
|
|||
|
Re: 能請大大幫我看一下這段簡單的程式嗎~
|
||||
---|---|---|---|---|
高級會員
|
1.先算出 或量出 你改變portc.0 到下一次改變portc的時間有多久 ?? (也可以說 二次執行 MOVWF D2 的間隔時間)
2. 再量出mosfet 變成on 之後 , 在1歐姆負載上的電壓上升曲線 , 在步驟1的間隔時間內 , 電壓上升多少 ?? 此 dV可以想成是你的輸出電流的最小連波 dI = dV / 1 (也就是你的PORTC 很穩定地一次ON , 一次OFF 時會得到的結果) ===> 建議你的 mosfet 改由 PWM去推動
發表於: 2009/5/17 20:43
|
|||
|
Re: 能請大大幫我看一下這段簡單的程式嗎~
|
||||
---|---|---|---|---|
新會員
|
不好意思~還是不懂你所說的~能再告訴我詳細一點嗎~
能再請問一下~watch 可以看到 ADRESH 和 w 的值嗎? 因為我的都沒有值~是ad抓失敗嗎~謝謝您~
發表於: 2009/5/17 18:53
|
|||
|
Re: 能請大大幫我看一下這段簡單的程式嗎~
|
||||
---|---|---|---|---|
資深會員
|
看起來,這樣(C)反應應該是太慢(用uC 來做太慢了)....
A -------> B \<--C<--/
發表於: 2009/5/17 18:36
|
|||
|
能請大大幫我看一下這段簡單的程式嗎~
|
||||
---|---|---|---|---|
新會員
|
主要動作是以AN6去抓取一個放大10倍後OP輸出信號,而OP的輸入信號為一單純BUCK輸出端的一個1歐姆負載上的電壓值。我希望就將輸出電流定在200mA。所後AN6抓到值高於.105(就是2,因為放大10倍),PORTC,0就關,小於.105就開,PORTC,0的信號是送個一MOSFET的軀動IC用來控制MOSFET。
雖然程式編譯沒有錯勿,但執行上就是不會定電流,所以不知道是我的寫法錯勿還是什麼樣的問題,請知道的大大能題供給我~謝謝 LIST p=16F877 #INCLUDE<p16F877.INC> D1 EQU 0X20 D2 EQU 0X21 ORG 00H START: BSF STATUS,RP0 CLRF ADCON1 CLRF TRISC BCF STATUS,RP0 MOVLW B'10110001' MOVWF ADCON0 ADCONVERT: CALL DELAY BSF ADCON0,GO ADWAIT: NOP BTFSS PIR1,ADIF GOTO ADWAIT BCF PIR1,ADIF MOVF ADRESH,W MOVWF D2 BCF STATUS,C MOVLW .105 SUBWF D2,W SKPC GOTO PP1 GOTO PP2 PP1: BSF PORTC,0 GOTO ADCONVERT PP2: BCF PORTC,0 GOTO ADCONVERT DELAY: MOVLW .50 MOVWF D1 DLY1: DECFSZ D1,F GOTO DLY1 RETURN END
發表於: 2009/5/17 14:12
|
|||
|