TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: f-traxx en 20 de Octubre de 2010, 13:22:15
-
Hola buenas, la idea que tengo es saber is es posible cambiar los pines por los que se transmite, osea, definimos:
#use rs232(baud=9600,parity=N,xmit=pin_c6,rcv=pin_c7,bits=8), y se que si luego dentro del main ponemos lo siguiente:
if (velocitat==1)
{
set_uart_speed(9600);
}
else
set_uart_speed(2400);
Se puede cambiar la velocidad de envio por la UART, lo que no se es si se puede cambiar los pins por los que se transmite, que eso es lo que yo necesito...
Alguien me podra hechar una manita...? :( :(
-
Hola f-traxx, pues yo nunca he hecho el intento, pero el manual del CCS dice:
#USE RS232
... This directive tells the compiler the baud rate and pins used for serial I/O. This
directive takes effect until another RS232 directive is encountered. The #USE DELAY
directive must appear before this directive can be used....
Según lo que entiendo si es posible. Sería cuestión de ensayar volviendo a declarar otra directiva RS232 en el lugar donde quieres cambiar los pines.
Saludos!
-
Que quieres decir donde yo quiera cambiar los pins (en el main), poner esto: #use rs232(baud=9600,parity=N,xmit=pin_c6,rcv=pin_c7,bits=8)
No creo, porque si no me equivoco los #use son directivas de pre-procesado, lo que quiere decir que en el main no lo cogeria, solo lo cogeria antes de entrar en el, o solo me cogeria el último #use, eso es lo que quiero averiguar, ya que lo he simulado de esta forma en el proteus y no me funciona...
Grácias por las respuestas!! ;-) ;-)
-
Hola f-traxx es correcto, no en el main(). Del manual del CCS C:
The following is an example program to read from one RS-232 port (A) and echo the data to both
the first RS-232 port (A) and a second RS-232 port (B).
#USE RS232(BAUD=9600, XMIT=PIN_B0, RCV=PIN_B1)
void put_to_a( char c )
{
put(c);
}
char get_from_a( )
{
return(getc());
}
#USE RS232(BAUD=9600, XMIT=PIN_B2,RCV=PIN_B3)
void put_to_b( char b )
{
putc(c);
}
main()
{
char c;
put_to_a("Online\n\r");
put_to_b("Online\n\r");
while(TRUE)
{
c=get_from_a();
put_to_b(c);
put_to_a(c);
}
}
Más adelante en el manual, verás este mismo ejemplo pero mejor usando la opción STREAM
Saludos!
-
muchas gracias bmb me mire el manual que tengo yo, que es en español, y de esto no salia nada... creo que tendre que actualizar a un manual mas completo... y respecto a la fúncion stream algo habia oido... Muchas grácias, lo pruebo y comento que tal va!!!
Por cierto... una forma de simularlo en el proteus?? :oops: :oops: o eso ya es mas difícil :?
-
Hola f-traxx, te cuento que de Proteus ando mal en conocimientos. Solo lo más básico. De pronto alguien más?
Saludos!
-
:-/ :-/ Estoy haciendo bastantes avances, he podido simularlo en el Proteus y casiiiii esta... lo que me pasa es que quando cambio de velocidad aunque modifique la configuracion del hiperterminal no funciona... ahora estoy en ello...
Quando lo tenga terminado lo posteo
-
Hola buenas, porfin puedo cambiar velocidad y pins de transmisión.
Aqui dejo los archivos de proteus y CCS.
Saludos F-traxx
Grácias por la ayuda prestada en http://www.aquihayapuntes.com/foro/viewtopic.php?f=11&t=104 ya que es la opcion que finalmente he seguido.