4 votos

Configurar un pin del PIC para la Entrada y Salida de

Estoy trabajando en un proyecto que utiliza un PIC24FJ64GA002 mcu. Estoy trabajando en un bit a bit de un golpe de comunicación en serie de la función que va a utilizar uno de los cables para enviar datos y, a continuación, cambie al modo de recepción para recibir datos en el mismo pin. Separado pin se utiliza para el reloj que siempre será controlado por una tarjeta diferente (siempre una entrada). Me pregunto ¿hay alguna manera de configurar el pin de colector abierto de la operación de que puede ser utilizado como una variable de entrada y de salida y o voy a tener que cambiar la configuración de los pines cada vez que me vaya de la lectura a la escritura?

6voto

pbh101 Puntos 2454

Cambiar el pin de la configuración cada vez. Es el TRIS registro que controla si es una entrada (1) o de salida (0). Y, cuando un cambio de dirección, usted tiene que esperar un momento (revise la hoja de datos) como un ciclo o dos antes de utilizar el pin. un par de Nop(); va a hacer bien.

Y, asegúrese de que escribe para el LAT registro, y leer el R registro.

por ejemplo, para el puerto D, pin 0.

//output
_TRISD0 = 0;
Nop();
Nop();
_LATD0 = 1;
_LATD0 = 0;


//input
_TRISD0 = 1;
Nop();
Nop();
int i = _RD0;

3voto

Adam Lassek Puntos 181

Si quieres simular un colector abierto escribir un cero a la pestillo de registro. Luego de hacer el resto con el registro TRIS. Cuando un cero va a la TRIS poco esto activará el bit de salida y la línea será conducido bajo. Entonces, si usted escribe un uno a la TRIS poco la línea se convertirá en una entrada y la tire hacia arriba hará que la línea para ir de alta a menos que un dispositivo externo es la conducción bajo. La línea también estará en un estado de entrada en ese momento. Usted puede leer el puerto en cualquier momento y se mostrará la debida autobús estado porque cuando TRIS bit es 0, el autobús será baja y que es lo que va a ser leído y si TRIS bits es alto, va a ser una entrada y, a continuación, lo que nunca está en el bus se pueden leer así.

Algunos pines tienen también la posibilidad de habilitar un débil pullup en ellos y usted puede también habilitar el cambio de pin de interrupción en algunos de los pines.

//init
_LATA0 = 0;


//drive low
_TRISA0 = 0;

// let pull up bring pin high.
_TRISA0 = 1;

// read bit
in = _RA0;

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X