TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: heder en 09 de Noviembre de 2007, 01:10:34
-
hola tengo una duda sobre la conversion adc con el mkb, cuando programaba en mplab 5v me representaban en la salida a 8bits (11111111)=5v en mkb el conversor me da una salida a 10bits y para trabajar una salida a 8bits tendria que trabajar a 2.5v= (11111111), mi pregunta es como contraresto esto o en que estoy errando.
mi programa en mkb
dim temp as byte
main:
TRISB = 0 ' PORTB como salida
TRISA = %000001 'RA0 COMO ENTADA
ADCON1 = %00001110 'SELECCIONO CH0
TEMP = adc_read(0)
PORTB = TEMP
delay_ms(50)
goto main
end.
gracias por pretarme atencion
-
Hola:
Y porqué no puedes trabajar con los 10 bits?
PD: recuerda que puedes introducir código ASM si en realidad necesitaras los 8bits.
-
Y si configuras el ADCON para trabajr con 8 Bits solamente.
-
Hola:
Pues parece ser que es la instrucción así:
Adc_Read
Prototype sub function Adc_Read(dim channel as byte) as word
Returns 10-bit unsigned value read from the specified channel.
Description Initializes PIC’s internal ADC module to work with RC clock. Clock determines the time period necessary for performing AD conversion (min 12TAD).
Parameter channel represents the channel from which the analog value is to be acquired. Refer to the appropriate datasheet for channel-to-pin mapping.
Requires Nothing.
Example tmp = Adc_Read(1) ' Read analog value from channel 1
Ya es cuestión de la instrucción, te retorna el valor de 10 bits, pero se podría configurar el registro para ver que sucede.
-
no puedo usar los 10bit porque pienzo implememtar un dac de 8bits, el problema es que no tengo idea de como configurar el registro
-
Lee el datasheet del PIC que estes usando si es el 877 puedes con el registro ADCON1 si tienes dudas nos dices
-
acabo de hacer funcionar el adc para 8bits como me lo aconsejoron trabaje la configuracion en asm en mkb
dim temp as byte
main:
TRISB = 0 ' PORTB como salida
TRISA = %000001
ADCON1 =%00001110
ADCON0 =%01000001
delay_ms(50)
ADCON0.2=1
T:
if ADCON0.2=1 THEN
goto T
END IF
TEMP= ADRESH
PORTB = TEMP
goto main
END.
gracias por pretarme atencion
-
Excelente que ya funcione como lo querias.