TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: aitopes en 13 de Enero de 2008, 16:58:43
-
Hola amigos!
Estoy intentando, por primera vez, usar el ADC del 12F675.
Tengo un potenciometro con su cursor conectado a AN3, y prentendo que las salidas GP0, GP1 y GP2 "roten" a una velocidad determinada por el valor leido en el ADC. Pero...no me funciona. ¿Me ayudan a buscar el error?
Este es el codigo que estoy escribiendo:
Symbol r = GPIO.2
Symbol g = GPIO.1
Symbol y = GPIO.0
Symbol ad_action = ADCON0.GO_DONE
TRISIO = %111000 'GPIO 0,1,2, salidas y 3,4,5 entradas
'CMCON = 7 'comparadores apagados
ANSEL = %00111000
ADCON0 = %00001111
High ADCON0.ADON
'Define osc 4
'Define adc_bits 8
'Define ADC_CLOCK 3
'Define ADC_SAMPLEUS 50
Dim tiempo As Byte
GPIO = %110000 'todas las salidas a 0
WaitMs 500
rotacion:
Adcin 3, tiempo
High ad_action
While ad_action
Wend
r = 1
g = 0
y = 0
WaitMs tiempo
'WaitMs 100
r = 0
g = 1
y = 0
WaitMs tiempo
'WaitMs 100
r = 0
g = 0
y = 1
WaitMs tiempo
'WaitMs 100
Goto rotacion
End
-
Hola aitopes!!
Como salidas vas a ocupar GP<2:0>
Pero no has desactivado el comparador cuyas entradas estan multiplexadas a gp0 pg1 y gp2 respectivamente.
TRISIO = %111000 'GPIO 0,1,2, salidas y 3,4,5 entradas
'CMCON = 7 'comparadores apagados
ANSEL = %00111000
Lo tienes comentado.
La demás configuración la veo bien, tomas Vref como VDD, canal 3.
Yo no se de basic o el lenguje que uses.
Pero por ahi veo que esta la onda.
Espero te sea de ayuda.
Atentamente
Akenafab
-
Con solo quitar estas tres lineas ya te funciona en el simulador:
High ad_action
While ad_action
Wend
Adcin ya hace el control de activacion, puesta en marcha, control del bit de
terminacion de conversion y programacion del ADC a 10bit.
Si quieres ver como funcina esta funcion e incluso si quieres hacer tu propia
rutina en el PSI para poder trabajar a 8Bit, puedes verlo desde aqui en adelante
con todo lujo de detalles:
http://www.todopic.com.ar/foros/index.php?topic=14917.msg126488#msg126488
http://www.todopic.com.ar/foros/index.php?topic=14917.msg126721#msg126721
http://www.todopic.com.ar/foros/index.php?topic=14917.msg126726#msg126726
Y los comparadores siempre los deshabilito por lo que no se si en la realidad podran afectar.
CMCON = 0x07 'comparator off
VRCON = 0x00 'vref off
Esta configuracion nunca la he utilizado asi que no se que resultado puede dar en la realidad.
bit 6-4 ADCS<2:0>: A/D Conversion Clock Select bits
000 = FOSC/2
001 = FOSC/8
010 = FOSC/32
x11 = FRC (clock derived from a dedicated internal oscillator = 500 kHz max)
100 = FOSC/4
101 = FOSC/16
110 = FOSC/64
-
Hola Amigos!
Gracias por su ayuda.
Este código ya funciona perfectamente en el simulador:
Symbol r = GPIO.2
Symbol g = GPIO.1
Symbol y = GPIO.0
Symbol ad_action = ADCON0.GO_DONE
TRISIO = %111000 'GPIO 1,2,0,5 salidas y 4, 3 entradas
CMCON = 0x07 'comparator off
VRCON = 0x00 'vref off
ANSEL = %00111000 'GPIO.4 A/D IN W/Frc
ADCON0 = %00001111 'TURN ON VREF, SELECT CHANNEL 0, RIGHT JUSTIFY RESULT
High ADCON0.ADON
Dim tiempo As Word
GPIO = %110000 'todas las salidas a 0
rotacion:
Adcin 3, tiempo
r = 1
g = 0
y = 0
WaitMs tiempo
'WaitMs 100
r = 0
g = 1
y = 0
WaitMs tiempo
'WaitMs 100
r = 0
g = 0
y = 1
WaitMs tiempo
'WaitMs 100
Goto rotacion
End
Ahora, a jugar con el hard! :)
Saludos!
-
Hola Amigos!
Gracias por su ayuda.
Este código ya funciona perfectamente en el simulador:
.....
Ahora, a jugar con el hard! :)
Saludos!
Muy importante jugar con el hard, te lo digo ya que recien me paso que por confirame mucho en el proteus, cuando lo pase al hard no funcionaba como debia ser y el problema era que el proteus permitia hacer algo que en si el PIC no podia hacer en la vida real :5] :5] :5] :5] :5] :5], pero ahora ya esta al 99.9% solo estoy haciendo retoques. Hay proteus, proteus, proteus ....... y ahora a sacado el sp3 para el 7.2, que nuevos bug habran traido :mrgreen:
-
Hola!
Yo no uso demasiado los simuladores. Pero en este caso, tuve la "suerte" de equivocarme en el soft....y en el hard. Conecte el emisor de los PNP de salida a 12V en lugar de a 5V, y por eso no funcionaban. Convencido de que el hard estaba bien, me volvi loco con el soft, hasta que con su ayuda me sacaron del pozo. :)
Ahora todo anda como debe.
Gracias!