TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: kamisama en 16 de Junio de 2010, 00:31:26
-
Hola, hace tiempo habia posteado una consulta porque ISIS/PDS se cuelga cuando uso el ADC y utilizo algunos puertos AN para otra cosa.
Bueno, de todas formas lo hice en ASM, porque es mas sencillo todavia con el HARD integrado. Y estaba relativamente conforme con las mediciones de un acelerometro, pero variaban en 6 puntos mas o menos.... y crei que estaba bien, hasta que le plante un osciloscopio y las mediciones son completamente estables, a diferencia de lo que me dice el ADC del pic
Este es el cogdigo, en el datasheet dice que con +/-20ms alcanza para la precarga.
ADC99: '-----------------------------------------------------------------------------------
ADCON0=bADCreg 'Igual en circuito va como trompada directo sin bsf
DelayUS 60 'Mejor código minimo y delay asegurado
ASM
bsf STATUS,RP0 ;bank 1 ; bcf STATUS,RP1
clrf ADCON1 ;ADCON1=B'10000000' ;left justified, all inputs a/d
bsf ADCON1,7
bcf STATUS,RP0 ;bank 0
bsf ADCON0,2
btfsc ADCON0,GO ;Wait for conversion to complete
GoTo $-1
bsf STATUS,RP0
movlw B'00000111'
movwf ADCON1 ;clrf ADCON0
bcf STATUS,RP0
ENDASM
wADC.HighByte=ADRESH 'Se probo la asignacion via ASM pero no funciono
wADC.LowByte= ADRESL 'Utilice Righ justified en ADCON1, asi que Lowbyte Ok.
TRISA=%00111000 'Cuando no se usa ADIN se pueden alterar los reg. TRISA
PORTA=%00101101 'No se si hace falta, pero bueno... dale gas por las dudas
Return
PD: bADCreg=%11100001
Bueno, muchas gracias por las respuestas. He probado poniendole un capacitor y el ruido baja, pero segun el osciloscopio no necesita el capacitor
Una consulta para los usuarios del PDS, hay alguna forma de que al recibir ruido y almacenarlo en un array, al mostrarlo en un display no se tilde... esto es algo recurrente en todos los proyectos con GLCD, ya que al acceder a las fuentes, sino encuentra el ASCII buscado, se va a la luna, y ni siquiera es posible depurarlo, simplemente deja de funcionar y ni el WDT se da cuenta.
-
hola, me voy a arriesgar con una respuesta, y creo alli esta la cuestión, almenos a mi me ha pasado con el 18F4550, que es similar al 16F877.
Fijate de acomodar los bits 7-6 del registro ADCON0, denominados ADCS1:ADCS0, que ajustas el reloj interno de la conversión. Prueba con FOSC/32. No veo que allas configurados estos bits.
-
Hola, si estan en la variable seteados como 11, SUPUESTAMENTE lei que FRC era la mejor opcion e independiente del Xtal utilizado.
Igual hice pruebas con las otras opciones de ADCS1 y ADCS0. Gracias igual... a ver que otra cosa puede ser...
-
tambien puedes probar a hacer varias mediciones y despues sacar la media como resultado. en el hilo de rutinas para compartir (http://www.todopic.com.ar/foros/index.php?topic=23812.msg191686#msg191686) tienes algun ejemplo con el CAD, echale un ojo ;-)
un saludo