• Sábado 21 de Diciembre de 2024, 10:53

Autor Tema:  Salida y entrada puerto  (Leído 2496 veces)

Skualo

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Salida y entrada puerto
« en: Sábado 9 de Agosto de 2008, 15:03 »
0
Wenas, me gustaria saber si configurando un puerto de 8 salidas como el Port_B de un 16f877 si le digo por ejemplo que del Rb1 a Rb7 son salidas y Rb0 es entrada para usarlo como interrupcion a la hora de sacar un valor por el puerto puedo decir output_b(0b0000000)? es decir si ignorara Rb0 o no es posible y tendre que acerlo entrada por entrada o hay otra manera de acer esto?

Saludos

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Salida y entrada puerto
« Respuesta #1 en: Viernes 22 de Agosto de 2008, 15:47 »
0
En principio depende del compilador o ensamblador y de la arquitectura del micro. Depende del circuito de salida de los pines (desde el punto de vista hard).

Pero lo normal es que para que un Pin funcione como salida haya de tener el valor '0' y esto es por que la configuración suele ser un transistor en como emisor cumun con (o sin) pull up en el colector. Otros micros utilizan una etapa CMOS invertida para la entrada y en este caso hay que mantenerlo a '1'.

Estube mirando el datasheet del micro que especificaste y según el fabricante se anula completamente el driver de salida (poco aconsejable desde mi punto de vista) por lo tanto en principio no habría ningún problema en poner ningún valor.

SIN EMBARGO, al utilizar C y por lo que veo, el compilador CCS para trabajar tienes que tener en cuenta algo más:

Ya sabes que CCS gestiona automaticamente los registros TRISx ¿verdad? al hacer una escritura sobre el pin en cuestión, aunque lo hayas inicializado al principio como entrada, el compilador cambiará el registro TRISB para configurarlo como salida.

Debes asegurarte de que configuras los puertos al principio de modo que el compilador no gestiona los registros TRISx por su cuenta. Creo recordar que es una directiva de precompilador. Creo que era: #PRAGMA USE FAST_IO.

Un saludo.