Problema A/d converter pic16f690
Ciao a tutti ho incontrato un problema nel confrontare il valore che mi arriva dalla conversione analogico digitale
in pratica valSensore arriva dalla conversione a/d ed Soglia1 è un valore in binario che immetto io
i miei dati sono
;Soglia1 EQU b'00101100' ;0,86v
Soglia2 EQU b'01000001' ;1,27v
Soglia3 EQU b'01100010' ;1,91v
sul piedino an ho 1,5 volt ma ho verificato che il programma esegue come se valSensoreMarcia<soglia1
La verifica l'ho fatta facendo accendere un led se il programma va ad n1 oppure un altro led se il programma va ad s2, e va tutte le volte su n1 quindi c=0 quindi valSensoreMarcia < Soglia1
ho provato a cambiare soglia1 mettendola o b'00000000' ma niente da fare continua a rimanere con il C=0
L'ad converte è inizializzato cosi
La conversione è
idee su quale può essere il problema?? prove che posso fare ?
- Codice: Seleziona tutto
movf Soglia1, W
subwf valSensoreMarcia,W
btfss STATUS,C ; C = 1 ?
goto n1 ; No ! ( cioè valSensore < valSoglia1)
goto s2
in pratica valSensore arriva dalla conversione a/d ed Soglia1 è un valore in binario che immetto io
i miei dati sono
;Soglia1 EQU b'00101100' ;0,86v
Soglia2 EQU b'01000001' ;1,27v
Soglia3 EQU b'01100010' ;1,91v
sul piedino an ho 1,5 volt ma ho verificato che il programma esegue come se valSensoreMarcia<soglia1
La verifica l'ho fatta facendo accendere un led se il programma va ad n1 oppure un altro led se il programma va ad s2, e va tutte le volte su n1 quindi c=0 quindi valSensoreMarcia < Soglia1
ho provato a cambiare soglia1 mettendola o b'00000000' ma niente da fare continua a rimanere con il C=0
L'ad converte è inizializzato cosi
- Codice: Seleziona tutto
banksel ADCON1
movlw b'01010000' ;Fosc/16
movwf ADCON1
banksel ADCON0
movlw b'00001001' ;0ADFMLeftJustified,0Vdd,0010AN2,0NotinProgres,1AdEnabled
movwf ADCON0
La conversione è
- Codice: Seleziona tutto
Conversione
banksel ADCON0
bsf ADCON0, GO ;inizio conversione
btfsc ADCON0, GO ;fatta la conversione?
GOTO $-1 ;no, testa ancora
movf ADRESH, W ;leggiamo i bit più importanti
movwf valSensore
banksel ADCON1 ;BANK1
MOVF ADRESL,W ;LEGGI I BIT MENO IMPORTANTI
BANKSEL ADCON0
MOVWF risultatlo
return
idee su quale può essere il problema?? prove che posso fare ?
