TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: cocu3 en 19 de Julio de 2008, 13:42:08

Título: pregunta sobre multi serial
Publicado por: cocu3 en 19 de Julio de 2008, 13:42:08
buen dia, para configurar los pic con varios seriales ya se como se hace, pero mi pregunta es si se puede habilitar y desabilitar un serial durante el transcurso edl programa con la funcion setup_uart  :shock:

gracias
Título: Re: pregunta sobre multi serial
Publicado por: firepic en 19 de Julio de 2008, 13:51:21
Buen día!
¿Habilitar y deshabilitar? No entiendo exactamente a qué te refieres...
Puedes configurar un serial por hard y cuantos quieras por software, y CCS llama a las rutinas encargadas de la transmisión cuando usas los comandos seriales, como putc, getc y dependientes de ellos, como el printf, etc...
Yo he trabajado con varios canales seriales y nunca he usado la setup_uart... sólo coloco:
Código: C
  1. #use rs232(BAUD=xxxx, UART)
Como ves, ni siquiera hay que definir los pines, cuando colocas "UART" el CCS usa automáticamente los pines Tx y Rx del micro. Así lo hace por hardware.
Los demás canales seriales que incluyas sí serán implementados por software, así que hay que definir los pines de transmisión y recepción.
Ok saludos, nos leemos!  :mrgreen:
Título: Re: pregunta sobre multi serial
Publicado por: MLO__ en 19 de Julio de 2008, 16:12:17
Hola

El setup_uart es para configurar la velocidad de transmision y el stream del COM.

Saludos
Título: Re: pregunta sobre multi serial
Publicado por: cocu3 en 21 de Julio de 2008, 12:22:25
pues el setup_uart lo he utilizado para habilitar y deshabilitar el serial del micro pero cuando esta por hardware, o sea hago esto:
setup_uart(TRUE) para activarlo y setup_uart(FALSE) para apagarlo

lo q no se es cuando se tienen varios seriales y solo se quiere apagar uno no mas
Título: Re: pregunta sobre multi serial
Publicado por: MLO__ en 21 de Julio de 2008, 13:14:54
Hola.

Esto es lo que dice la ayuda.

(http://img243.imageshack.us/img243/6559/uartlx7.jpg)

Saludos
Título: Re: pregunta sobre multi serial
Publicado por: samhael en 28 de Julio de 2008, 22:01:39
perdon pero hay algo que no estiendo sobre el tema... perdon si mi pregunta es muy tonta

Resulta que apenas estoy iniciando en el tema y estoy haciendo un controlador multivariable en builder en el cual pretendo recibir 3 señales analogas y enviar dos PWM para controla, hice un primer proyecto con una sola entrada y me funciono pero luego incremente a varias y el controlador de win xp ya no me funcio. Sime ppudieran ayudar en algo estaria muy agradecido:D. el codigo fuente es.

#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN

#use delay(clock=48000000)

#USE RS232(BAUD=19200, XMIT=PIN_A0, RCV=PIN_A1, stream=T1)

#USE RS232(BAUD=19200, XMIT=PIN_A2, RCV=PIN_A3, stream=T2)

#USE RS232(BAUD=19200, XMIT=PIN_A5, stream=FR)


#include <usb_cdc.h>
#include <usb_desc_cdc.h>

char c,e,g;
long int d,f;

void main()
{

usb_cdc_init();
usb_init(); //inicializamos el USB

while (!usb_cdc_connected()) {}
while (true)
{
usb_task();
if(usb_enumerated())
{
if (usb_cdc_kbhit())
{
c = usb_cdc_getc();
e = usb_cdc_getc();
g = usb_cdc_getc();
putc(c,T1);
putc(e,T2);
putc(g,FR);
}

if (kbhit(T1) || kbhit(T2))
{
d=getc(T1);
usb_cdc_putc(d);

f=getc(T2);
usb_cdc_putc(f);

}

//pwm1 por uno de los datos

//-------------------------------------------------------------
set_tris_b(0xF7);
setup_ccp1(CCP_PWM); // Configure CCP1 as a PWM

setup_timer_2(T2_DIV_BY_1,255, 1); //
set_pwm1_duty(d); // high time= value * (1/clock) * prescale //

//--------------------------------------------------------------

//pwm2 por uno de los datos

//-------------------------------------------------------------
set_tris_b(0xF7);
setup_ccp2(CCP_PWM); // Configure CCP2 as a PWM

//setup_timer_2(T2_DIV_BY_1,255, 1); //
set_pwm2_duty(f); // high time= value * (1/clock) * prescale //


//------------------------------------------------------------
}
}
}