Bueeeeeno..... sigo haciendo experimentos y nada de avance....... una ayudadita por favor.....
Lo del transistor no funcionó para la amplificación de la señal, por lo cual opté por un filtro RC pasa bajos.
Mi problema de momento y creo que más importante es que quiero leer dos señales analogicas, una por AN0 y la otra por AN1 en momentos diferentes claro. El problema es que sin conectarle ninguna señal a la entrada AN1 me da una lectura en el ADC. Ya revisé conexiones y están bien. En cuanto al código creo también estar bien, pero no sé si algo me falte:
INICIO:
banksel ADCON1 ;Cambia a Bank 1
movlw 0x3F ;Pone a RA0:RA5 como entradas
movwf PORTA ;
movlw 0x00 ;Pone a w = 00000000
movwf PORTB ;Pone a PORTB & PORTC como salidas
movlw 0x90 ;Pone a RC4 y RC7-RX como entradas
movwf PORTC ;y a RC3:RC0 RC5:RC6-TX como salidas
movlw 0x04 ;RA0, RA1 y RA3 como analogica
movwf ADCON1 ;RA2,RA4 y RA5 como digitales
;A/D Result Format = Left justified
banksel ADCON0 ;Cambia a Bank 0
;*****************************************************************************************
;SUBRUTINA PARA LEER EL CONVERSOR A/D EN AN0
;*****************************************************************************************
LEER_ADC_AN0:
banksel ADCON1 ;Cambia a Bank 1
movlw 0x04 ;RA0, RA1 y RA3 como analogica
movwf ADCON1 ;RA2,RA4 y RA5 como digitales
;A/D Result Format = Left justified
banksel ADCON0 ;Cambia a Bank 0
movlw 0x00 ;AN0 Analog Input Channel, para tomar la muestra de PWM generada en el PORTC RC2
movwf ADCON0 ;
bsf ADCON0,6 ;ADC Clock Fosc/8
bsf ADCON0,0 ;Enciende el ADC
call Delay_40us
call Delay_5us
call Delay_5us
bsf ADCON0,2 ;Inicia la conversion ADC
Lloop btfss PIR1,6
goto Lloop
movf ADRESH,0
movwf VIN
bcf PIR1,6
return
;*****************************************************************************************
;SUBRUTINA PARA LEER EL CONVERSOR A/D EN AN1
;*****************************************************************************************
LEER_ADC_AN1:
banksel ADCON1 ;Cambia a Bank 1
movlw 0x04 ;RA0, RA1 y RA3 como analogica
movwf ADCON1 ;RA2,RA4 y RA5 como digitales
;A/D Result Format = Left justified
banksel ADCON0 ;Cambia a Bank 0
bsf ADCON0,3 ;AN1 (ADCON0 <5:3> CHS2:CHS0 = 001) entrada analogica para tomar la muestra de retorno
movwf ADCON0 ;
bsf ADCON0,6 ;ADC Clock Fosc/8
bsf ADCON0,0 ;Enciende el ADC
call Delay_40us
call Delay_5us
call Delay_5us
bsf ADCON0,2 ;Inicia la conversion ADC
LloopRT btfss PIR1,6
goto LloopRT
movf ADRESH,0
movwf VINRTN
bcf PIR1,6
return
La señal PWM que genero en el PORTC CCP1 la aplico a AN0 solamente pero sin aplicar nada en AN1 me da una lectura que no deberia existir. Alguna idea de por qué esté pasando esto??????
De hecho los valores que leo en VIN y VINRTN son consecutivos y a veces iguales, por ejemplo: ED, EC..... F2,F1..... E8,E7.... EC,EC..... EE,EE..... EC,EB
curioso no?????