TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: elgarbe en 18 de Mayo de 2012, 11:49:35
-
Tengo el siguiente proyecto:
Leo un TPS (sensor de acelerador) con el ADC, en funcion de cuánto acelera el usuario abro más o menos una válvula con un motor PaP.
El tema es que lo estoy tratando de hacer todo por interrupciones, esto es, el ADC continuamente convirtiendo y actualizando un registro con el nuevo valor (incluso teno que hacer algún filtro seguramente). El timer 0 me interrumpe periodicamente para actualizar la posicion de la válvula en funcion del valor del ADC anterior y del nuevo.
Lo que no estoy seguro de como hacer es poner al ADC a convertir constantemente. En los viejos ADC ponía el EOC al START y listo, pero en uC se me complica soldar dicho cable, jeje, hay alguna forma de hacerlo en CCS?
Saludos!
-
Que microcontrolador? :?
-
Que microcontrolador? :?
Que apurado soy!
16F883
-
Podes usar el módulo CCP2 en modo comparación para que inicie la conversión al ocurrir la interrupción.
Saludos!
-
Podes usar el módulo CCP2 en modo comparación para que inicie la conversión al ocurrir la interrupción.
Saludos!
Claro, pero lo que yo quería evitar es tener que decirle al ADC cada cuánto tiempo tiene que convertir. Sino que lo haga solito, sería algo así como en poner dentro de la interrupcion del ADC la instruccion de Arrancar la conversion. Esto es, ni bien termina de hacer una conversion que empieze otra, que no espere a que yo se lo indique. Ya que si yo le doy poco tiempo entre pedidos de conversion está mal y si le doy mucho tiempo entre conversiones pierdo datos de gusto.
Yo antes usaba uC motorola y creo recordar que en ellos se podía configurar para conversion continua.
Si no se puede, entonces usaré tu sugerencia de usar el CCP2.
Saludos!
-
Creo que se puede activar las conversiones por un timer, es decir, al desbordar el timer activa la conversion, lo que no se es si en este pic sera posible.
-
El ADC interrumpe cuando termina la conversion. En esa misma interrupcion podes poner que comience con la siguiente conversion.
Saludos!
-
El ADC interrumpe cuando termina la conversion. En esa misma interrupcion podes poner que comience con la siguiente conversion.
Saludos!
Es es exactamente lo que quería hacer, pero quería confirmar si es correcto, si no hay problemas de flag o cosas rarras. Vos lo usaste alguna vez así?
Gracias!
-
Estoy pensando que si pongo el ADC a convertir continuamente me va a interrumpir cada 4uSeg. Es una locura....
Voy a usar el CCP2 para iniciar la conversion...
Case close.
Saludos
-
Hola amigo, yo haría lo siguiente, determino cuantas muestras quiero por segundo, si quiero 20 muestras coloco un temporizador y cada 50ms hago una conversión.
Saludos.
-
Con un pic con DMA podrias hacerlo facilmente, pero te tendrias que ir a 16bits :lol: yo tengo un proyecto donde hago el muestreo de 16 canales con un adc externo, mediante spi, los 16 canales los muestrea en 35us, sin contar que no tengo que hacer nada para iniciarlo, ni nada para leer los resultados, yo activo el spi, el dma, y este se encarga de actualizarme el array de 16 canales sin que tenga que atender nada, cuando me interese saber que V hay en el canal 0 pues canal[0] :-/
-
Igualmente por lo visto no quiere alta velocidad de muestreo sino que se haga a una frecuencia determinada pero automáticamente. Para eso repito, podes usar el CCP2 que lo activa automáticamente o un timer y crear el código necesario.
Saludos!
-
Igualmente por lo visto no quiere alta velocidad de muestreo sino que se haga a una frecuencia determinada pero automáticamente. Para eso repito, podes usar el CCP2 que lo activa automáticamente o un timer y crear el código necesario.
Saludos!
Exacto, eso es lo que quiero, que se haga automáticamente y como bien dices no necesito muchas muestras, estuve haciendo pruebas con la válvula y necesito un retardo mínimo de 1ms entre cada paso del motor, por lo que si al variar el TPS necesito mover unos 10 pasos me va a llevar 10mseg. Con tener 1 valor del ADC cada 1 mseg me sobra.... No tenía ese dato hasta hace un rato, sino....
Saludos y gracias!