TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Algec en 30 de Noviembre de 2006, 17:49:08

Título: A vueltas con el set_tris
Publicado por: Algec en 30 de Noviembre de 2006, 17:49:08
no consigo que me funcione como creo el set_tris_a y set_tris_e
veamos si me he vuelto idiota de pronto
Quiero salida en pin0 de A y entradas en pin1,2,3,4 y 5 de A y Pin0,1, y 2 de E
deberia ser

#use fast_io(a)
#use fast_io(e)
set_tris_a(0xfe);
set_tris_e(0xff);

y si quiero salida en PIN0 de e y todo a como entradas y el resto de e como entradas tambien

set_tris_e(0xfe);
set_tris_a(0xff);

¿estoy en lo cierto? o ¿es que me he vuelto loco?.
Con el puerto b c y d me funciona bien al parecer, ¿que les pasa al a y al e?
Título: Re: A vueltas con el set_tris
Publicado por: Nocturno en 30 de Noviembre de 2006, 18:56:34
¿Has desconectado el ADC?
Aunque eso explicaría que no te funcionase el puerto A; el puerto E debería funcionar tal cual lo tienes.
Título: Re: A vueltas con el set_tris
Publicado por: RedPic en 30 de Noviembre de 2006, 19:07:40
Algec ten tambien en cuenta el modelo de PIC que uses.

Según cual sea puede haber interacciones entre los fuses y los comportamientos de este o aquel puerto. He vivido momentos dramáticos con el 18F4550 para lograr activar los puertos E y A según los fuses del USB (por ejemplo)

Datasheet, Datasheet, Datasheet, mucho Datasheet.  :mrgreen:

Título: Re: A vueltas con el set_tris
Publicado por: Algec en 30 de Noviembre de 2006, 19:10:51
Es un 16F877
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,NODEBUG,BROWNOUT,NOCPD,NOWRT
y NO desactive el ADC pero nunca lo he hecho y no suponia que habia que desactivarlo , pensaba que lo estaba por defecto.
Probare eso pero no se si funcionara
Gracias
Título: Re: A vueltas con el set_tris
Publicado por: vszener en 01 de Diciembre de 2006, 14:46:14
Hay que desactivarlo, es igual si trabajamos en ASM, tenemos que indicar que los pines del puerto A son pines de E/S, el pic como defecto lo asume como analógicas para el ADC.


Suerte!!! ;)
Título: Re: A vueltas con el set_tris
Publicado por: Algec en 01 de Diciembre de 2006, 17:05:58
Por lo que me decis si quiero usar un PIN del puerto A como salida digital y el resto del puerto como entradas analogicas no es posible hacerlo.
Es lo que me interesa hacer, activar como salida digital un pin de A, y el resto de A y de E como entradas analogicas, realizar una lectura  de todas las analogicas secuencialmente y cambiar a activar como salida digital otro pin de A y el resto, incluida la que era salida anteriormente, activarlas ahora como entradas analogicas, y asi sucesivamente con las 5 analogicas de A y las tres de E.
¿estoy equivocado, o no es posible?
Título: Re: A vueltas con el set_tris
Publicado por: Nocturno en 02 de Diciembre de 2006, 02:52:33
Puedes configurar unos pines como salidas, otros como entradas digitales y otros como entradas analógicas.
Para ello, además del TRIS debes utilizar el comando setup_adc_ports, cuya función según la ayuda es esta:

Sets up the ADC pins to be analog, digital or a combination.  The allowed combinations vary depending on the chip. The constants used are different for each chip as well.  Check the device include file for a complete list.  The constants ALL_ANALOG and NO_ANALOGS are valid for all chips.  Some other example constants:

Título: Re: A vueltas con el set_tris
Publicado por: vszener en 02 de Diciembre de 2006, 08:08:46
Como lo expone el amigo nocturno es la forma correcta, aun así, en caso de duda, el data sheet (http://ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf), que es la biblia para estos menesteres, en en capítulo de A/D Module, concretamente en el registro ADCON1

(http://fotos.subefotos.com/3c9abae56ecc29d44bbed3a4de19a8c8o.jpg)

los bit's PCFG3:PCFG0 configuran los pines como entradas analógicas o como pines de E/S.

(http://fotos.subefotos.com/9e3ab1536ddec656601d1c31f6aff0f7o.jpg)

Suerte!!! ;)
Título: Re: A vueltas con el set_tris
Publicado por: Algec en 02 de Diciembre de 2006, 08:46:06
Buffff que mas se puede pedir?
Mil gracias, mas completo imposible.