TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micronet3 en 09 de Enero de 2017, 18:56:27
-
saludos.
una consulta, estoy trabajando con el pic 16f628a, no me alcanza pines , mi diseño ya esta hecho con este pic asi que no me gustaria migrar a un pic de mas pines, lo que estaba viendo es si es posible utilizar el pin tx y rx de este pin como ENTRADA/SALIDA Y para transmitir/recibir, obviamente no al mismo tiempo sino que el usuario seleccione como va a trabajar
gracias
-
en si lo que quiero es cambiar el uso del pin de acuerdo a un menu o boton en tiempo real( utilizarlo como pin io o para transmitir/recibir dependera de la opcion que elija el usuario en tiempo real
es posible?
gracias?
-
Creo que lo mejor e indiscutible sea usar otro PIC pero..
Todo es posible, pero lo mas seguro es que necesites otro pin mas para dehsabilitar las señales externas que lleguen a estos pines. Lo cual no resuelve nuestros problemas
Tambien esta el tema que si en algun momento cortas la parte de transmision, lo podes llegar a hacer cuando esta en medio de de una recepcion, o perder algunos datos, etc.
Tal ves buscaria usar algunos de los demas pines y dejar los RX y TX dedicado unicamente a eso.
En fin no te salvas de agregarle algo mas a la placa. Y en ese caso termina siendo lo mismo que hacer la placa con otro PIC.
----------------------------
Esto es luego de tu segundo mensaje. SI es posible. Solo considera lo que tengas conectado.
-
he probado asi pero no me sale :5]
que estaria mal?
#include <16f876A.h>
#fuses hs,nowdt,PROTECT
#use delay(clock=20MHZ)
//#use fixed_io(C_OUTPUTS =PIN_C6,PIN_C7)
void main(){
set_tris_a(1);
set_tris_c(128);
if(input(pin_a0)==0)
#USE rs232(xmit=pin_c6,rcv=pin_c7,baud=9600)
while(1){
if(input(pin_a0)==0){
printf("hola mundo\r\n");
delay_ms(500);}
else if(input(pin_a0)==1){
output_toggle(pin_C6);
delay_ms(1000);
}
}
}
-
CCS y sus grandes complicaciones.
Primero el #USE es una directiva de preprocesamieto, no una instruccion, por lo cual no podrias usarlo asi.
Segundo para que funcione vas a tener que modificar los registros, y usar FAST_IO. Ya que CCS no dispone de ninguna funcion como para apagar la UART.
Vas a tener que cambiar el bit SPEN del registro RCSTA, tal ves tambien tambien el bit CREN, y el TXEN de TXSTA.
Luego de eso modificar los registros TRIS para seleccionarlos como entrada o salida. Esto te los deja como I/O.
( Bastante simple de realizar en otro compilador todo esto, en CCS tenes que definir todos los bits que vayas a cambiar con #BIT ).
Obviamente despues vas a tener que hacer lo opuesto para que vuelva a como RX/TX. Lo que tenes que darte cuenta, es que vas a estar enviando valores incorrectos a lo que tengas conectado en TX, y cuidado con poner como salida lo que tengas en RX. Ya que podes estar poniendolo a GND a tu PIC, y lo que tengas conectado enviarle VDD logrando un cortocircuito.
Por eso te decia que mejor es utilizar otros pines
--------------
En fin, ahi tenes la idea, simplemente es realizar los pasos de habilitar / deshabilitar la UART en el micro.
-
ok, quieres decir que para cambiar de funcion a los pines tengo que configurar directamente los registros del pic?, bueno si se podria hacer pero va a traer complicaciones asi que a cambiar pics nomas
muchas gracias amigo killac
-
saludos. les comento que termine utilizando el 16f876, pero me volvio a faltar 1 pin por agregar mas detalles a mi tarjeta, bueno esto los solucione cambiandome al pic 16f886 que tiene mas pines I/0.
Saludos