• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::

論壇索引


Board index » All Posts (admirty)




有關16F877 A/D 轉換的問題
#1
新會員
新會員


目前是利用RA0 以及 RA1輸入訊號 再將其轉換為數位訊號
就正常狀況來說 不論我將 RA0或RA1的訊號切掉 應該都不會影響到另一個通道的電壓
不過實際上使用 當我切斷RA0 或RA1 的電壓 還是會影響到另外一個channel的電壓值 雖然只是一瞬間

請問這有方法解決嗎

發表於: 2007/9/13 17:17
頂部


Re: 不知為何的封包遺失 請大家幫幫忙
#2
新會員
新會員


謝謝你的建議
我會試看看

發表於: 2007/9/6 19:16
頂部


Re: 不知為何的封包遺失 請大家幫幫忙
#3
新會員
新會員


yiming你好 現在的狀況是很成功的將封包給傳出去
也不會有所謂封包重頭開始與遺失的問題
我現在也沒有把資料存在Bank2
我直接就把資料放在Bank0 的 0x51的地方開始
只是說 不知道為什麼 我的A/D轉換資料都沒有看到
只有看到FF FF SN xx xx xx
xx 是A/D轉換的資料 看到的值都是0
請問我的程式是否有問題 或是我該去注意什麼東西 如果不是程式有問題 那就是我自己板子的問題了(實際使用A/D轉換的板子)

發表於: 2007/9/6 14:42
頂部


Re: 不知為何的封包遺失 請大家幫幫忙
#4
新會員
新會員


我加了CLRWDT 之後 果然問題就解決了
真是感謝您的提點

還有我前面說錯了
我是要把A/D轉換後的資料存入bank2 的120h的地方
那這樣的話我的設定還有錯嗎

發表於: 2007/9/4 15:54
頂部


Re: 不知為何的封包遺失 請大家幫幫忙
#5
新會員
新會員


多謝指教 FSR的位置是我疏忽了
謝謝你的解釋 讓我獲益良多

至於WDT的設定
我正在查書 因為我沒有使用過WDT 也不清楚會造成什麼影響
謝謝你點出我間接定址有瑕疵的地方

我改完程式後再回報一下情況 真的萬分感激

發表於: 2007/9/4 14:26
頂部


Re: 不知為何的封包遺失 請大家幫幫忙
#6
新會員
新會員


我用間接定址的方法
是想把A/D 轉換完的資料 先放到bank3的120h 的位置
轉換2筆的話 就繼續往下存 120h 121h 以此類推
還是說我間接定址的方法錯了


發表於: 2007/9/4 13:31
頂部


Re: 不知為何的封包遺失 請大家幫幫忙
#7
新會員
新會員


恩 程式是每4ms中斷一次 然後用RS-232傳出一些資料和A/D 的轉換值 輸出內容大概是這樣
標頭(test test1) 序號(sn) 帶兩筆A/D轉換資料(xx xx)
所以看序號就可以知道 傳送資料到第三筆時就會重頭來過
目前原因不明

發表於: 2007/9/4 12:37
頂部


Re: 不知為何的封包遺失 請大家幫幫忙
#8
新會員
新會員


恩 程式是每4ms中斷一次 然後用RS-232傳出一些資料和A/D 的轉換值 輸出內容大概是這樣
標頭(test test1) 序號(sn) 帶兩筆A/D轉換資料(xx xx)
所以看序號就可以知道 傳送資料到第三筆時就會重頭來過
目前原因不明

發表於: 2007/9/4 12:20
頂部


Re: 不知為何的封包遺失 請大家幫幫忙
#9
新會員
新會員


你好 謝謝你的建議
不過問題仍舊存在
就像上面所說的
大約傳送到 FF FF 03 xx xx 後 又重頭開始
FF FF 01 xx xx 這樣 照道理是應該要繼續 FF FF 04 xx xx
以此類推 我不知道是不是我程式的瑕疵導致
在請問一下 FSR 設定似乎有問題是指?.....

發表於: 2007/9/4 12:12
頂部


不知為何的封包遺失 請大家幫幫忙
#10
新會員
新會員


我使用的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
頂部






:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------