Autor Tema: EMULADOR DE UN PUERTO SERIE CON UN PIC 18F2550  (Leído 10227 veces)

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

Desconectado DRAWDE_2009

  • PIC10
  • *
  • Mensajes: 4
EMULADOR DE UN PUERTO SERIE CON UN PIC 18F2550
« en: 06 de Enero de 2009, 01:24:45 »
HOLA QUE MAS SOY NUEVO EN EL FORO PERO YA TENGO TIEMPO DE ESTAR MIRANDO LOS EJEMPLOS DE PICUSB Y DEMAS, LO QUE PASA ES QUE PARA MI PROYECTO ESTOY IMPLEMENTANDO UN CONVERSOR DE SERIE A USB Y PUES LO QUIERO REALIZAR MEDIENTE LA EMULACION DEL PUERTO SERIE.
YA TENGO LOS DRIVERS YA ME LO RECONOCE EL PC Y TODO LO UNICO QUE QUIERO ES QUE ME COLABOREN CON LA PROGRAMACION PARA ENVIAR Y RECIBIR DATOS. ES DECIR QUIERO IMPLEMENTAR UN CONVERSOR DE ESOS QUE YA LOS VENDEN. (QUE CONVIERTE DE USB A RS232)

AHI LES DEJO LO QUE TENGO DEL PROGRAMA EN C LO DE RECONOCER EL DISPOSITIVO Y DEMAS NO HAY PROBLEMA

Código: [Seleccionar]
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, stream=STANDARD)
#include ".\include\usb_cdc.h"

char c,d;
void main() {
   usb_cdc_init();
   usb_init(); //inicializamos el USB

      while (!usb_cdc_connected()) {}
         do{
               usb_task();
               if(usb_enumerated())
                  {
                     if (usb_cdc_kbhit())
                        {
                           c = usb_cdc_getc();
                           putc(c,STANDARD);
                        }

                     if (kbhit(STANDARD))
                        {
                           d=getc(STANDARD);
                           usb_cdc_putc(d);
                        }
                  }
            }  while (TRUE);
    }



« Última modificación: 06 de Enero de 2009, 01:31:42 por DRAWDE_2009 »

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: EMULADOR DE UN PUERTO SERIE CON UN PIC 18F2550
« Respuesta #1 en: 06 de Enero de 2009, 12:31:23 »
Estas usando la librería que trae CCS y esa tiene una limitación.  Solo tiene 1 endpoint para RX y otro para TX, hace falta las de las lineas asíncronas de control RTS,CTS,DTR,DSR,RING. Cada una tiene su propio Endpoint y en eso hay bastante trabajo, pues el driver que te da CCS para el PC ya no serviría.

No es imposible, solo e doy una guía.

SALUDOS!

Desconectado DRAWDE_2009

  • PIC10
  • *
  • Mensajes: 4
Re: EMULADOR DE UN PUERTO SERIE CON UN PIC 18F2550
« Respuesta #2 en: 06 de Enero de 2009, 13:19:01 »
MUCHAS GRACIAS POR EL APORTE VOY A INVESTIGAR MAS SORE EL TEMA.

PERO HE LEIDO SOBRE ESO Y DICE QUE SOLO ES NECESARIO EL TX Y RX PARA ENVIAR Y  RECIBIR DATOS.

LA IDEA DEL PROYECTO ES CREAR UN CABLE QUE POR UN LADO SEA USB Y POR EL OTROS LADO RS232 Y CUANDO LO CONECTE AL PC EL COMPUTADOR LO RECONOSCA COMO UN PUERTO SERIE, DONDE SE PUEDA CONECTAR CUALQUIER OTRO DISPOSITIVO QUE FUNCIONE CON COMUNICACION SERIE.

YA TENGO EL CIRCUITO MONTADO (AHI ADJUNTO EL ESQUEMATICO), LOS COMPONENTES SON:
1. PIC18F2550
2. MAX232
3. CRISTAL DE 20MHZ
4.CONECTOR USB
5. CONECTOR DB9 MACHO
6. REISTENCIAS Y DEMAS


LO QUE QUIERO QUE HAGA EL PROGRAMA ES QUE ENVIE DATOS DEL PC AL MICRO POR USB Y EL MICRO ENVIE ESA MISMA INFORMACION AL RS232 Y LO CONTRARIO QUE EL MICRO RECIBA DATOS DEL RS232 Y SE LOS ENVIE AL PC POR USB.

PUES LA VERDAD NO SE MUCHO DE C PERO TENGO PENSADO ALGO COMO QUE PREGUNTAR SI EN EL STANDARD HAY DATOS, SI HAY SE LOS ENVIO VIA USB. Y LO MISMO PARA EL CASO CONTRARIO (BIDIRECCONAL). EL PROBLEMA ES QUE NO SE SI LO QUE TENGO EN EL PROGRAMA HACE ESO ?

Código: [Seleccionar]
if (usb_cdc_kbhit())
                        {
                           c = usb_cdc_getc();
                           putc(c,STANDARD);
                        }

                     if (kbhit(STANDARD))
                        {
                           d=getc(STANDARD);
                           usb_cdc_putc(d);
                        }

ESO ES LO QUE QUIERO QUE ME DIGAN SI VOY BIEN O ESTOY TOTALMENTE ERRONEO
GRACIAS
ADIOS
« Última modificación: 06 de Enero de 2009, 14:05:52 por DRAWDE_2009 »

Desconectado Giovanny

  • PIC12
  • **
  • Mensajes: 97
    • Supercomponentes
Re: EMULADOR DE UN PUERTO SERIE CON UN PIC 18F2550
« Respuesta #3 en: 06 de Enero de 2009, 14:45:43 »
si quieres un rs232 completamente funcional , te recomiendo que uses el chip FT232, no necesitas mas, solamente instalar un driver para virtual com, y es todo,
te sale mas económico y mas pequeño que usar todos los componentes que enumeraste.

mira por ejemplo el TF232RL ademas de tener la interfaz USB a UART serial con tasa de transferencia desde 300 baud hasta 3Mbaud, tiene tambien salida  generadora de reloj opcional sin cristal externo, almacenamiento en EEPROM de 1024 bits, resistencias de terminación USB integradas, manejo de señales de leds para transmición y recepción de datos.  :-)

Lo puedes conseguir aqui: :-/

FT232BL

FT232RL


espero que te sea útil!. 
Saludos!.
        Saludos desde Colombia! Que hermoso país....

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: EMULADOR DE UN PUERTO SERIE CON UN PIC 18F2550
« Respuesta #4 en: 06 de Enero de 2009, 15:08:19 »
DRAWDE_2009, decías que querias algo igual a los cables comerciales y yo te doy las diferencias.  Claro que como tu mismo dices, para establecer una comunicación solo necesitas TX y RX y la libreria de CCS cumple completamente ese trabajo.

PD:
No escribas todo en mayúscula, no esta bien hacerlo, por lo menos en este foro esta marcado en las reglas.

Desconectado droky

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 628
    • Diseños radikales libres
Re: EMULADOR DE UN PUERTO SERIE CON UN PIC 18F2550
« Respuesta #5 en: 06 de Enero de 2009, 19:58:00 »
Hola,
Ciertamente es más lógico utilizar un FT232RL para hacer lo que pretendes, además puedes asignar un identificador único en la EEPROM interna del FT232RL o almacenar un "algo" de datos. Puedes usar algunas de sus salidas preprogramadas como indicación de comunicaciones con unos leds y unas resistencias y el coste final de espacio y dinero será inferior, ya que no necesitarás programarlo.
Puedes trabajar con lógica a 5v y a 3,3v y hasta alimentar un pequeño circuito (100mA) desde el bus USB a través del chip.
También si entra en presupuesto las horas de programación te las ahorrarás y el montaje será "llave en mano"
Un ejemplo de montaje con el FT232RL:
Conversor Serie USB-TTL

Y como bien te ha apuntado PICmouse, implementar los RTS,CTS,DTR,DSR te va a costar unos cuantos quebraderos de cabeza sobre todo si como indicas no tienes muchos conocimientos de C.
En cambio si lo que quieres es integrar el puerto serie en el código del PIC a través del USB para usar una comunicación serie con tu programa, es perfecto, pero no creo que llegues a hacer que se comporte como un RS232 real según el EIA232 por las limitaciones de la implementación USB como emulación serie en el PIC.
Aún así, adelante y mucha fuerza!!!

Me olvidaba... este post te puede echar una mano:
http://www.todopic.com.ar/foros/index.php?topic=23222.0

Salu2
« Última modificación: 06 de Enero de 2009, 20:01:27 por droky »
Yo... he visto cosas que vosotros no creeríais... atacar naves en llamas más allá de Orión, he visto rayos C brillar en la oscuridad cerca de la puerta Tannhäuser.
Todos esos momentos se perderán en el tiempo como lágrimas en la lluvia.
Es hora de morir.

Si me buscas en twitter, me tienes por @radikaldesig

Desconectado DRAWDE_2009

  • PIC10
  • *
  • Mensajes: 4
Re: EMULADOR DE UN PUERTO SERIE CON UN PIC 18F2550
« Respuesta #6 en: 06 de Enero de 2009, 21:44:38 »
Muchas gracias por todos los aportes y de por si ya estuve mirando este proyecto implementando el ft232rl la verdad es mucho mas simple pero lo que pasa es que existe un pequeño problema el proyecto ya esta estipulado para los componente que enumere y no los puedo cambiar. Este circuito lo que pretende es comunicar un equipo de ultrasonido con un pc que va ser monitoriado por LABVIEW.

yo se que es poco complicado pero igual la idea es esa.

muchas gracias por esos aportes la verdad hoy mismo voy a implementarlo con FT232 para tener una conversor para mi .

adios 

Desconectado DRAWDE_2009

  • PIC10
  • *
  • Mensajes: 4
Re: EMULADOR DE UN PUERTO SERIE CON UN PIC 18F2550
« Respuesta #7 en: 07 de Enero de 2009, 22:08:54 »
ayuda no logro que funcione la transmision y recpcion de datos. programo el pic y luego lo conecto al pc, funciona bien lo reconoce como un puerto COMX y luego le conecto cualquir dispositivo serial a mi tarjeta y no sucede nada lo unico que pasa es que el pin 17 de mi micro (TX) siempre esta en alto (5v) y no cambia de ahi.

no se si me puedan ayudar les dejo mi oltimo programa para que me digan donde esta mi error.

Código: [Seleccionar]
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
//#define TTL_TX PIN_C6
//#define TTL_RX PIN_C7
//#use rs232(baud=9600, xmit=TTL_TX, rcv=TTL_RX)
#include ".\include\usb_cdc.h"


void main() {
   usb_cdc_init();
   usb_init(); //inicializamos el USB

      while (!usb_cdc_connected()) {}
         
           do{
               usb_task();
               if(usb_enumerated())
                  {
                                   
                     if (usb_cdc_kbhit())
                        {
                           putc(usb_cdc_getc());
                        }

                     if (kbhit())
                        {
                           usb_cdc_putc(getc());
                        }
                  }
            }  while (TRUE);
    }




gracias
 

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: EMULADOR DE UN PUERTO SERIE CON UN PIC 18F2550
« Respuesta #8 en: 17 de Abril de 2012, 15:14:20 »
Se supone que uno estudia para aprender no para pasar la materia, te animo a que subas tus avances, aqui te ayudaremos, es mas me comprometo a ayudarte, pero no pidas que te den el proyecto listo para presentar.

saludos
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado Edsmind

  • PIC10
  • *
  • Mensajes: 6
Re: EMULADOR DE UN PUERTO SERIE CON UN PIC 18F2550
« Respuesta #9 en: 02 de Julio de 2012, 08:46:40 »
Buenos días,

Drawde_2009, yo estoy tratando de hacer algo parecido.
He conseguido realizar la comunicación desde el PIC al PC pero al revés no. Puse mis avances y mis dudas en post recientemente:

http://www.todopic.com.ar/foros/index.php?topic=38725.0

Espero que te sirva de ayuda, si consigues la realizar la comunicación desde el PC al PIC avísanos.

Gracias.
"No entiendes realmente algo a menos que seas capaz de explicárselo a tu abuela." Albert Einstein


 

anything