有關16F877 A/D 轉換的問題
|
||||
---|---|---|---|---|
新會員
|
目前是利用RA0 以及 RA1輸入訊號 再將其轉換為數位訊號
就正常狀況來說 不論我將 RA0或RA1的訊號切掉 應該都不會影響到另一個通道的電壓 不過實際上使用 當我切斷RA0 或RA1 的電壓 還是會影響到另外一個channel的電壓值 雖然只是一瞬間 請問這有方法解決嗎
發表於: 2007/9/13 17:17
|
|||
|
Re: 不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
新會員
|
謝謝你的建議
我會試看看
發表於: 2007/9/6 19:16
|
|||
|
Re: 不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
新會員
|
我加了CLRWDT 之後 果然問題就解決了
真是感謝您的提點 還有我前面說錯了 我是要把A/D轉換後的資料存入bank2 的120h的地方 那這樣的話我的設定還有錯嗎
發表於: 2007/9/4 15:54
|
|||
|
Re: 不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
新會員
|
多謝指教 FSR的位置是我疏忽了
謝謝你的解釋 讓我獲益良多 至於WDT的設定 我正在查書 因為我沒有使用過WDT 也不清楚會造成什麼影響 謝謝你點出我間接定址有瑕疵的地方 我改完程式後再回報一下情況 真的萬分感激
發表於: 2007/9/4 14:26
|
|||
|
Re: 不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
新會員
|
我用間接定址的方法
是想把A/D 轉換完的資料 先放到bank3的120h 的位置 轉換2筆的話 就繼續往下存 120h 121h 以此類推 還是說我間接定址的方法錯了
發表於: 2007/9/4 13:31
|
|||
|
Re: 不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
新會員
|
恩 程式是每4ms中斷一次 然後用RS-232傳出一些資料和A/D 的轉換值 輸出內容大概是這樣
標頭(test test1) 序號(sn) 帶兩筆A/D轉換資料(xx xx) 所以看序號就可以知道 傳送資料到第三筆時就會重頭來過 目前原因不明
發表於: 2007/9/4 12:37
|
|||
|
Re: 不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
新會員
|
恩 程式是每4ms中斷一次 然後用RS-232傳出一些資料和A/D 的轉換值 輸出內容大概是這樣
標頭(test test1) 序號(sn) 帶兩筆A/D轉換資料(xx xx) 所以看序號就可以知道 傳送資料到第三筆時就會重頭來過 目前原因不明
發表於: 2007/9/4 12:20
|
|||
|
Re: 不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
新會員
|
你好 謝謝你的建議
不過問題仍舊存在 就像上面所說的 大約傳送到 FF FF 03 xx xx 後 又重頭開始 FF FF 01 xx xx 這樣 照道理是應該要繼續 FF FF 04 xx xx 以此類推 我不知道是不是我程式的瑕疵導致 在請問一下 FSR 設定似乎有問題是指?.....
發表於: 2007/9/4 12:12
|
|||
|
不知為何的封包遺失 請大家幫幫忙
|
||||
---|---|---|---|---|
新會員
|
我使用的chip 是pic16f877
在傳輸資料時 不知為何的 資料並沒有完全的傳輸出來 我在電腦裡 一步一步慢慢跑是沒有錯 但實際傳輸的時候 資料遺失去相當嚴重 以下是我的程式 希望經驗豐富的高手能夠幫我解答 照道理來說 可以看到的值應該為 AB CD 01 XX XX AB CD 02 XX XX AB CD 03 XX XX 以此類推 一直下去 但實際看到 卻只到 第三行之後就完全消失 而且還從頭來過 我百思不得其解 list p=16F877 #include <p16f877.inc> VAL_US equ .5 VAL_US_1 equ .80 VAL_MS equ .249 VAL_MS_1 equ .250 count equ 0x20 HEADER equ 0x21 PORTB_DATA equ 0x23 ECG_buffer equ 0x24 flag equ 0x25 temp1 equ 0x26 temp2 equ 0x27 flag1 equ 0x28 flag2 equ 0x29 number equ 0x2A buffer equ 0x2B number1 equ 0x2C number2 equ 0x2D number3 equ 0x2E flag3 equ 0x30 flag5 equ 0x2F temp3 equ 0x31 HEADER1 equ 0x22 HEADER2 equ 0x32 count_ms equ 0X33 count_ms_1 equ 0X34 HEADER3 equ 0x35 HEADER4 equ 0X36 HEADER5 equ 0X37 test equ 0x38 test1 equ 0x39 org 0x00 nop goto initial org 0X04 goto isr initial: banksel SPBRG movlw .25 ;Baud Rate = 19.2kps movwf SPBRG banksel RCSTA bsf RCSTA,SPEN ;致能RC7/RX/DR及 ;RC6/TX/CK為串列埠接腳 banksel HEADER movlw 0x12 movwf HEADER ;Header = 255 banksel HEADER1 movlw 0x34 movwf HEADER1 ;Header = 255 banksel HEADER2 movlw 0x56 movwf HEADER2 ;Header = 255 banksel HEADER3 movlw 0x78 movwf HEADER3 ;Header = 255 banksel HEADER4 movlw 0x9A movwf HEADER4 ;Header = 255 banksel HEADER5 movlw 0xBC movwf HEADER5 banksel number movlw 0x00 movwf number banksel test movlw 0xAB movwf test banksel test1 movlw 0xCD movwf test1 banksel number1 movlw 0x01 movwf number1 banksel number2 movlw 0x01 movwf number2 banksel number3 movlw 0x01 movwf number3 call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us banksel TXSTA bcf TXSTA,SYNC ;非同步模式 bsf TXSTA,BRGH ;非同步 高速模式 bsf TXSTA,TXEN ;傳送致能 banksel TXSTA tss: btfss TXSTA,TRMT goto tss ;================================================================= ;transfer10: ;傳送 data2 data ; banksel TXSTA ; btfss TXSTA,TRMT ; goto transfer10 ; call delay_25us ; banksel HEADER ; movf HEADER,w ; banksel TXREG ; movwf TXREG ; call delay_25us ; call delay_25us ; call delay_25us ; call delay_25us ;transfer20: ;傳送 data2 data ; banksel TXSTA ; btfss TXSTA,TRMT ; goto transfer20 ; call delay_25us ; banksel HEADER1 ; movf HEADER1,w ; banksel TXREG ; movwf TXREG ; call delay_25us ; call delay_25us ; call delay_25us ; call delay_25us ;transfer30: ;傳送 data2 data ; banksel TXSTA ; btfss TXSTA,TRMT ; goto transfer30 ; call delay_25us ; banksel HEADER2 ; movf HEADER2,w ; banksel TXREG ; movwf TXREG ; call delay_25us ; call delay_25us ; call delay_25us ; call delay_25us ;transfer40: ;傳送 data2 data ; banksel TXSTA ; btfss TXSTA,TRMT ; goto transfer40 ; banksel HEADER3 ; movf HEADER3,w ; banksel TXREG ; movwf TXREG ; call delay_25us ; call delay_25us ; call delay_25us ; call delay_25us ;================================================================= banksel TRISC clrf TRISC ;PORTC = Output banksel TRISB movlw b'00000001' movwf TRISB ;PORTB = Input banksel TRISA clrf TRISA bsf TRISA,0 bsf TRISA,1 ; bsf TRISA,2 banksel flag1 clrf flag1 clrf flag2 clrf flag3 banksel PORTB clrf PORTB banksel PORTC clrf PORTC ;Clear PORTC banksel ADCON1 clrf ADCON1 movlw b'00000101' movwf OPTION_REG ;TMR0 Rate = 1:64 banksel ADCON0 movlw 0x41 movwf ADCON0 ;ADC轉換時間 8Tosc ;channel5,(RE0/AN5) ;ADON banksel PIE1 bsf INTCON,GIE bsf INTCON,INTE start: ;banksel TMR0 ;movlw .193 ;movwf TMR0 ;banksel flag ;bsf flag,3 ; banksel PORTB ; bcf PORTB,4 ;call fky ;============================================== ;============================================== Timer0: banksel INTCON bsf INTCON,T0IE bcf INTCON,T0IF banksel TMR0 movlw .193 movwf TMR0 ;================================================ ;=========================================== store: banksel STATUS bsf STATUS,IRP INDF equ 0x00 banksel FSR movlw 0x120 movwf FSR ;=========================================== ;=========================================== Infinite: banksel flag5 btfsc flag5,0 goto Infinite goto AD1 ;=========================================== AD1: banksel ADCON0 ;AD data1 movlw B'01000001' ;設定使用channel RA0輸入類比信號data1 movwf ADCON0 call delay_25us bsf ADCON0,GO A1: ;AD1是否完成 btfsc ADCON0,GO goto A1 movf ADRESH,w movwf INDF incf FSR banksel flag5 bsf flag5,0 banksel number3 decfsz number3 goto Infinite AD2: banksel STATUS bcf STATUS,IRP clrf FSR bsf flag3,3 banksel ADCON0 movlw B'01001001' ;設定使用channel RA1輸入類比信號data2 movwf ADCON0 call delay_25us bsf ADCON0,GO A2: ;AD2是否完成 btfsc ADCON0,GO goto A2 movf ADRESH,w banksel temp2 movwf temp2 ;banksel flag5 ;bsf flag5,0 goto Infinite isr: banksel INTCON bcf INTCON,T0IF banksel number1 decfsz number1 goto RelifeTime banksel STATUS bcf STATUS,IRP clrf FSR banksel INTCON bcf INTCON,T0IF transfer00: banksel TXSTA btfss TXSTA,TRMT goto transfer00 banksel test movf test,w banksel TXREG movwf TXREG goto transfer0 transfer0: ;傳送 data2 data banksel TXSTA btfss TXSTA,TRMT goto transfer0 banksel test1 movf test1,w banksel TXREG movwf TXREG goto SN SN: banksel TXSTA btfss TXSTA,TRMT goto SN banksel number incf number movf number,w banksel TXREG movwf TXREG goto store1 ;=========================================== store1: banksel STATUS bsf STATUS,IRP INDF equ 0x00 banksel FSR movlw 0x120 movwf FSR ;=========================================== transfer1: ;傳送 data1 data banksel TXSTA btfss TXSTA,TRMT goto transfer1 banksel INDF movf INDF,w call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us call delay_25us banksel TXREG movwf TXREG goto transfer1_loop transfer1_loop: incf FSR banksel number2 decfsz number2 goto transfer1 transfer2: ;傳送 data2 data banksel STATUS bcf STATUS,IRP clrf FSR banksel TXSTA btfss TXSTA,TRMT goto transfer2 banksel temp2 movf temp2,w banksel TXREG movwf TXREG banksel number1 movlw 0x01 movwf number1 banksel number2 movlw 0x01 movwf number2 banksel number3 movlw 0x01 movwf number3 ;=========================================== store2: banksel STATUS bsf STATUS,IRP INDF equ 0x00 banksel FSR movlw 0x120 movwf FSR ;=========================================== ;==================================== RelifeTime: banksel flag5 bcf flag5,0 banksel TMR0 movlw .193 movwf TMR0 ;==================================== retfie ; ;---------------delay subroutine-------------- delay_25us: movlw VAL_US movwf count dec_loop nop decfsz count,f goto dec_loop return delay_400us: movlw VAL_US_1 movwf count dec_loop_1 nop decfsz count,f goto dec_loop_1 return ;--------------------------------------------- delay_250ms: movlw VAL_MS_1 movwf count_ms_1 loop_ms call delay_1ms decfsz count_ms_1,f goto loop_ms return delay_1ms: nop movlw VAL_MS movwf count_ms dec_loop_f nop decfsz count_ms,f goto dec_loop_f return end
發表於: 2007/9/4 3:33
|
|||
|