Autor Tema: pregunta sobre multi serial  (Leído 1850 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado cocu3

  • PIC12
  • **
  • Mensajes: 77
pregunta sobre multi serial
« 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

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: pregunta sobre multi serial
« Respuesta #1 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:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: pregunta sobre multi serial
« Respuesta #2 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
El papel lo aguanta todo

Desconectado cocu3

  • PIC12
  • **
  • Mensajes: 77
Re: pregunta sobre multi serial
« Respuesta #3 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

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: pregunta sobre multi serial
« Respuesta #4 en: 21 de Julio de 2008, 13:14:54 »
Hola.

Esto es lo que dice la ayuda.



Saludos
El papel lo aguanta todo

Desconectado samhael

  • PIC10
  • *
  • Mensajes: 1
Re: pregunta sobre multi serial
« Respuesta #5 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 //


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