PIC är avkopplad med en 100nF konding. Sampling triggas manuellt var 100e ms. I övrigt är det bara ICD2 och en LCD som är kopplad till PIC.
Tad=280ns
Samplingstid=2*Tad
Vref- = AVss = Vss = 0V
Vref+ = AVdd = Vdd = 5,01V (alla spänningar uppmätta med en kalibrerad fluke 179)
Ch1+=538mV
Ch1-=Vref-
källimpedans=1kohm
resultat=100
förväntat resultat=110
Enligt databladet så är min. samplingstid Tad, min. Tad=256ns, max källimpedans 5kohm. Se dsPIC30F family reference manual s. 437
Kod: Markera allt
;------------------------------------------------------------------------------
; AD_Interrupt()
;------------------------------------------------------------------------------
.text
__ADCInterrupt:
BCLR IFS0, #ADIF ;clear interrupt flag
CALL LCD_Line1
MOV ADCBUF3, W0
MOV ADCBUF2, W0
MOV ADCBUF0, W0
MOV ADCBUF1, W0
CALL Bin_BCD_xxxxx
RETFIE
;//AD_Interrupt()
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
; AD_Init()
;------------------------------------------------------------------------------
.text
AD_Init:
;Setup A/D
;Analog inputs
BSET TRISB, #RB0
BCLR ADPCFG, #PCFG0
BSET TRISB, #RB1
BCLR ADPCFG, #PCFG1
BSET TRISB, #RB2
BCLR ADPCFG, #PCFG2
BSET TRISB, #RB3
BCLR ADPCFG, #PCFG3
;Start conversion after sampling
BSET ADCON1, #SSRC1
BSET ADCON1, #SSRC0
BSET ADCON1, #SSRC2
;Simultaneous sampling of all 4 channels
BSET ADCON1, #SIMSAM
;Sample all channels
BSET ADCON2, #CHPS1
;Interrupt after every 4 conversions
BSET ADCON2, #SMPI2
;Set sample and conversion times
MOV #0x0210, W0
MOV W0, ADCON3
;Select A/D-inputs, AN3, AN0, AN1, AN2
BSET ADCHS, #CH0SA0
BSET ADCHS, #CH0SA1
;Enable ad interrupts
BCLR IFS0, #ADIF ;clear interrupt flag
BSET IEC0, #ADIE
;Turn on A/D-module
BSET ADCON1, #ADON
;//AD_Init()
;------------------------------------------------------------------------------