TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: ramirez en 03 de Noviembre de 2010, 08:11:46

Título: if (input_state(PIN_B0)==1) ó if (input(PIN_B0)==1)
Publicado por: ramirez en 03 de Noviembre de 2010, 08:11:46
Buenas tardes a todos de nuevo, he estado viendo por el foro algunos códigos y me surge la siguiente duda:

if (input_state(PIN_B0)==1) significa lo mismo que if (input(PIN_B0)==1)

Gracias de nuevo a todos por la colaboración
Título: Re: if (input_state(PIN_B0)==1) ó if (input(PIN_B0)==1)
Publicado por: Nocturno en 03 de Noviembre de 2010, 08:15:02
Ambas instrucciones son casi idénticas, ya que ambas devuelven un 0 o un 1 según esté el pin a nivel bajo o alto respectivamente.

La única diferencia entre input e input_state es que el primero fuerza al pin a comportarse como una entrada si no lo estuviera (TRIS=1) mientras que el segundo sólo lee su estado sin modificar la dirección.
Título: Re: if (input_state(PIN_B0)==1) ó if (input(PIN_B0)==1)
Publicado por: ramirez en 03 de Noviembre de 2010, 09:46:13
Muchas gracias Nocturno por tu respuesta.
Título: Re: if (input_state(PIN_B0)==1) ó if (input(PIN_B0)==1)
Publicado por: f-traxx en 03 de Noviembre de 2010, 13:22:53
Gracias Nocturno por la explicación ya sabia que servian para lo mismo, pero ahora ya se en que se distinguen, muchas grácias!!
Título: Re: if (input_state(PIN_B0)==1) ó if (input(PIN_B0)==1)
Publicado por: Cryn en 03 de Noviembre de 2010, 13:31:15
La única diferencia entre input e input_state es que el primero fuerza al pin a comportarse como una entrada si no lo estuviera (TRIS=1) mientras que el segundo sólo lee su estado sin modificar la dirección.
Y eso sin importar si se declaró fast_io(x)?
Título: Re: if (input_state(PIN_B0)==1) ó if (input(PIN_B0)==1)
Publicado por: ramirez en 03 de Noviembre de 2010, 13:37:59
Por lo tanto, ¿siempre es mejor poner  if (input_state(PIN_B0)==1) ?
Título: Re: if (input_state(PIN_B0)==1) ó if (input(PIN_B0)==1)
Publicado por: Suky en 03 de Noviembre de 2010, 13:49:14
La única diferencia entre input e input_state es que el primero fuerza al pin a comportarse como una entrada si no lo estuviera (TRIS=1) mientras que el segundo sólo lee su estado sin modificar la dirección.
Y eso sin importar si se declaró fast_io(x)?

En ese caso las dos instrucciones se comportan igual  ;-) Ninguna configura el tris.

Por lo tanto, ¿siempre es mejor poner  if (input_state(PIN_B0)==1) ?

Todo depende para que lo utilices.


Saludos!
Título: Re: if (input_state(PIN_B0)==1) ó if (input(PIN_B0)==1)
Publicado por: Cryn en 03 de Noviembre de 2010, 13:52:15
para mi lo mejor es usar fast_io siempre, o al menos casi siempre.
Título: Re: if (input_state(PIN_B0)==1) ó if (input(PIN_B0)==1)
Publicado por: Suky en 03 de Noviembre de 2010, 13:54:39
para mi lo mejor es usar fast_io siempre, o al menos casi siempre.

Es una buena costumbre  :)
Título: Re: if (input_state(PIN_B0)==1) ó if (input(PIN_B0)==1)
Publicado por: Nocturno en 03 de Noviembre de 2010, 13:56:16
A mí también me gusta usar fast_io y definir manualmente los TRIS, pero según qué aplicación te vendrá mejor hacerlo de una manera o de otra.
La ventaja es tener disponibles todas las posibilidades y que cada uno use la que más le convenga.