Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Conversor USB

6 Respuestas
2 Usuarios
0 Reactions
10.5 K Visitas
afelio
Respuestas: 19
Topic starter
(@afelio)
Active Member
Registrado: hace 12 años

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.

Responder
5 respuestas
heli
Respuestas: 748
 Heli
(@heli)
Ardero
Registrado: hace 19 años

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.

Responder
Página 2 / 2
Compartir: