Hola a todos.
Re abro este hilo, porque mi problema trata de la simulación del convertidor A/D y como aquí se trató el tema, y pali en un hilo que armó cita este post, será más fácil su uso.
Cuando simulo, el primer dato que cargo en el archivo con los valores a convertir, lo hace bien. El problema está cuando vuelvo a repetir el ciclo y tendría que convertir el segundo dato, lo hace mal. He cargado nuevos datos en el archivo que luego vuelvo a generar el archivo.scl y me convierte el mismo dato.
No logro decifrar dónde está el error, ya que el primero, lo hace bien pero el segundo no.
Estos son los valores a convertir:
2FF
041
1FF
La forma que guardé los datos es como lo explica aquí MAUNIX.
Este es el valor que me convierte a 2FF ADRESH B'00000010' y ADRESL B'11111111' (tiene alineación a la deracha), como ven, lo hace bien, pero cuando convierte el valor 041 me da ADRESH B'00010000' ADRESL B'01000000' Y por mas que cambie otro valor, me da el mismo dato.
Copio la primera parte del código
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTC
BSF STATUS,RP0
BCF STATUS,RP1
MOVLW .1
MOVWF TRISA ;RA0 COMO ENTRADA, DEMÁS SALIDAS
BCF STATUS,RP0 ;BANCO 0
MOVLW B'10000001' ;ADC ENC. CANAL AN0. FREC Fosc/32
MOVWF ADCON0 ;Y LO PASO AL ADCON0
BSF STATUS,RP0 ;BANCO 1
MOVLW B'10000001' ;+VREF RA3, ALINEACIÓN A LA DERECHA Y PORTA TODAS ANALÓGICAS.
MOVWF ADCON1 ;Y LO PASO AL ADCON1
BCF STATUS,RP0 ;BANCO 0
BCF PIR1,ADIF ;INDICO QUE LA CONVERSIÓN NO ESTÁ ECHA
COMIENZO BSF ADCON0,GO ;INICIO LA CONVERSIÓN
CAD BTFSC ADCON0,GO ;¿TERMINÓ LA CONVERSIÓN?
GOTO CAD ;NO, VUELVO A CAD
GOTO CONVERSION
Una vez que termino de hacer lo que necesito con los datos requeridos, vuelvo a la etiqueta COMIENZO. Vale aclarar que los datos ADRESL y ADRESH los paso cada valor a una pocición de la RAM correspondiente y no actuo más sobre los registro ADRESL ADRESH