Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Buenos días a tod@s,
Estaba pensando en pasar datos de mi micro: PIC32MX534F064H al ordenador mediante el USB, la opción elegida, de momento, es usar la UART para mandar los datos, para ello, he visto que existen cables/adaptadores para poder enviar los datos desde la placa con DB9 al USB del PC.
Como por ejemplo:
http://www.ebay.es/itm/FTDI-USB-to-RS232-DB9-Serial-Port-Adapter-Cable-Gold-Plated-/370919914612?pt=UK_Computing_Parallel_Serial_PS_2&hash=item565c8cbc74
Pero me surge una duda importante para dicho método.
¿¿Es necesario utilizar un MAX232 entre el micro y el conector DB9??
¿¿O basta con conectar los pines de la UART del micro (Tx y Rx) directamente a los pines del DB9??
Muchas gracias.
Un saludo.
Si, es bidireccional. Para un PIC16F2550 y MPLAB se usa asi:#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8, ERRORS)
#include "usb_cdc.h"
int1 Enviado=0, Display;
/*===========================================================================*/
void main()
{
int Enviado=0;
delay_ms(500); // Espera medio segundo a que se estabilice la alimentacion por USB
usb_cdc_init(); // Inicializa el USB CDC
usb_init();
while (TRUE)
{
usb_task(); // Procesa las tareas USB
if (kbhit()) // Si hay un dato en el puerto serie
{
Dato=getc(); // Lo lee
if (RS232_ERRORS&0x06!=0) //RCSTA errors
{
if (usb_enumerated()) // SI el USB esta enlazado con el PC
usb_cdc_putc (Dato); // Manda el dato al PC
putc(Dato); // Eco por el puerto serie
}
}
if (usb_enumerated()) // SI el USB esta enlazado con el PC
{
if (usb_cdc_kbhit()) // Entrada de dato serie USB
{
Dato=usb_cdc_getc(); // Lee el dato del PC por USB
usb_cdc_putc(Dato); // Eco al PC por el USB
}
}
if (usb_cdc_connected() && !Enviado)
{
printf(usb_cdc_putc, "Bridge USB-SERIAL V0.1rn"
"Ready...rn");
Enviado=TRUE;
}
}
}
Como puedes ver tiene las funciones "usb_cdc_getc()", "usb_cdc_putc();" y usb_cdc_kbhit()" similares a las que se usan con el puerto serie.