Доброго времени суток,прошу помочь разобраться с "гвоздем" в колесе.Собрал связку ADS8320+pic16f628a, не работает АЦП:0 бит стартует, а на выходе все "1". На вход ацп подается 1,54 вольта, а Vref=2.91 вольта (формирую от МК). Осциллограммы приложены. Объясните, пожалуйста, почему посадка напряжения на выходе данных в начале преобразования(примерно 1.2 вольта). SPI прилагаю(использовал его же для общения с MCP3102, проблем не было).Зачеркнул задержки,переходы подчеркнул.
CS=0x00;
#asm
q equ 0x20
p equ 0x21
X_H equ 0x22
X_L equ 0x23
movlw 4
movwf p
clrf X_L
clrf X_H
bsf X_L,0 //T.K. dit0=0 dly ADS8320
banksel PORTA
lock bsf RA1_bit //clock 1
movlw 2
movwf q
decfsz q
goto $-1
bcf RA1_bit //clock 0
movlw 1
movwf q
decfsz q
goto $-1
btfsc RA0_bit
goto lock // HET 0 dit
bsf RA1_bit //ectb 0 bit >>clock 1
movlw 2
movwf q
decfsz q
goto $-1
bcf RA1_bit // >>clock 0
nop
nop
bcf status,0
loop rlf X_L,f
btfsc RA0_bit
bsf X_L,0
btfsc status,0
goto bit_8
bsf RA1_bit //clock 1
movlw 2
movwf q
decfsz q
goto $-1
bcf RA1_bit //clock 0
goto loop
bit_8 rlf X_H,f
goto bit_8_1
loop_2 rlf X_H,f
btfsc RA0_bit
bsf X_H,0
btfsc status,0
goto out
bit_8_1 bsf RA1_bit //clock 1
movlw 2
movwf q
decfsz q
goto $-1
bcf RA1_bit //clock 0
goto loop_2
out bsf RA3_bit //CS=1
bsf RA1_bit //clock 1
movlw 2
movwf q
decfsz q
goto $-1
bcf RA1_bit //clock 0
movlw 1
movwf q
decfsz q
goto $-1
decfsz p
goto out
nop
#endasm;
CS=0x01;
}
Спойлер
void SPI(){CS=0x00;
#asm
q equ 0x20
p equ 0x21
X_H equ 0x22
X_L equ 0x23
movlw 4
movwf p
clrf X_L
clrf X_H
bsf X_L,0 //T.K. dit0=0 dly ADS8320
banksel PORTA
lock bsf RA1_bit //clock 1
movlw 2
movwf q
decfsz q
goto $-1
bcf RA1_bit //clock 0
movlw 1
movwf q
decfsz q
goto $-1
btfsc RA0_bit
goto lock // HET 0 dit
bsf RA1_bit //ectb 0 bit >>clock 1
movlw 2
movwf q
decfsz q
goto $-1
bcf RA1_bit // >>clock 0
nop
nop
bcf status,0
loop rlf X_L,f
btfsc RA0_bit
bsf X_L,0
btfsc status,0
goto bit_8
bsf RA1_bit //clock 1
movlw 2
movwf q
decfsz q
goto $-1
bcf RA1_bit //clock 0
goto loop
bit_8 rlf X_H,f
goto bit_8_1
loop_2 rlf X_H,f
btfsc RA0_bit
bsf X_H,0
btfsc status,0
goto out
bit_8_1 bsf RA1_bit //clock 1
movlw 2
movwf q
decfsz q
goto $-1
bcf RA1_bit //clock 0
goto loop_2
out bsf RA3_bit //CS=1
bsf RA1_bit //clock 1
movlw 2
movwf q
decfsz q
goto $-1
bcf RA1_bit //clock 0
movlw 1
movwf q
decfsz q
goto $-1
decfsz p
goto out
nop
#endasm;
CS=0x01;
}
Последний раз редактировалось EclipsV Чт апр 23, 2015 10:48:15, всего редактировалось 1 раз.
