Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

05/02/2014 #1

Avatar de ls2k

Usar ADC y entradas digitales en el mismo puerto (CCS)
Hola a todos, les cuento que estoy armando un voltimetro-amperimetro para mi fuente con un pic y displays de 7 segmentos, La lectura y escritura en los displays funciona bien y aguanta hasta 15A y 30V, la fuente llega solo hasta 23V por lo que no hay problema en el dimensionamiento que le di. El punto es que quiero cambiar entre voltimetro y amperimetro con un pulsador, por software tengo la idea lista, pero como sólo me quedan pines disponibles del portA configuré el ADCON1 de la siguiente forma:

setup_adc_ports(4); para dejar el RA2 como digital para conectar allí el pulsador y con bit_test(porta,2); leo el estado, el programa funciona al simular todo en proteus pero hay que apretar el pulsador varias veces para que cambie de modo, ¿es normal, o el método que estoy utilizando para hacerlo no es eficaz? hay alguna forma de optimizar esa parte para usar el puerto como adc en RA0 y RA1 y en RA2 conectar el pulsador?

Cualquier sugerencia para optimizar el codigo tambien es bienvenida C:

Adjunto el codigo en CCS C y el diseño en proteus
06/02/2014 #2

Avatar de LaElectronicaMeOdia

pues se configura como lo tienes intenta poner un antirrebote. y define el tris_A2 como entrada antes de la rutina main.
06/02/2014 #3

Avatar de TRILO-BYTE

no seria mejor idea usar 2 ADC con el pic uno que solo lea corriente y otro que lea voltaje
digo no es tan caro usar un LCD hay unos muy economicos

a usar los displays de 7 segmentos

para solo ocupar solo 8 bits y manejar hasta 4 displays puedes usas 4 bits un 74ls47 para decodificar el BCD y los otros 4 para multiplexar
digo usando un multiplexor puedes usar hasta 16 displays
sin multiplexor 4 displays

eso si quieres hacer las cosas dificiles

pero un LCD 16x2 se ve mas bonito , le metes mensajes de texto como
ejemplo :

voltaje : 5.42v
corriente: 234mA
07/02/2014 #4

Avatar de ls2k

Trilo: Viste es esquema, asi es exactamente como lo estoy haciendo, con AN0 mido la caida en el shunt, y con AN1 el voltaje entregado, los resto por software y con un 7447 y 4 pnp controlo los displays, acá no son muy baratos los lcds así que el que tengo lo estoy reservando para algun instrumento más definitivo, como un frecuencimetro o que se yo.

De hecho uno de los problemas que tuve fue que al definir el trisa como #BYTE TRISA 133 y luego hacer TRISA = 255 o usando las directivas de ccs para definirlo el programa no funcionaba, voy a probarlo poniendolo antes del main y les cuento.
07/02/2014 #5

Avatar de ByAxel

#BYTE TRISA 133 no hace efecto si antes no declaras #USE FAST_IO() por lo que el compilador hace I/O cada vez que se escribe o lee algo del puerto; es decir que siempre está modificando los TRISx.

Utiliza #USE FAST_IO() y en main la función set_tris_x() para que tú controles los TRISx.

Otro detalle, coloca antirrebote para el pulsador y mejor ahún una espera hasta que suelten el pulsador porque tal y como está el código, éste se repite varias veces cada vez que se acciona el pulsador.
09/02/2014 #6

Avatar de ls2k

#BYTE TRISA 133 funciona por si solo, los use_io son solo para el uso de output e input y alguna que otra instrucción, pero en lo que yo hago es hacer que TRISA se encuentra en la posicion 133 y despues dandole un valor se define su configuración. Son formas alternativas de hacer lo mismo. Así es como lo he usado siempre y no he tenido problemas.

Estoy buscando lo del antirrebote para el pulsador, gracias
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.