Autor Tema: Proyecto PicUSB  (Leído 392313 veces)

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

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #315 en: 14 de Febrero de 2008, 00:41:35 »
Marcos, Diego, creéis que sería mejor que siguiera la duda en este hilo??
http://www.todopic.com.ar/foros/index.php?topic=2252.msg154304#msg154304

En cuanto leais esto borro este post :)

Yo creo que si. (MGLSOFT). :mrgreen:
« Última modificación: 14 de Febrero de 2008, 09:13:55 por MGLSOFT »

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Proyecto PicUSB
« Respuesta #316 en: 14 de Febrero de 2008, 00:55:13 »
vuelve el perro arrepentido... =(
gente, de nuevo yo... espero no molestar con tantas preguntas, me siento pesado ya u_u

les comento q ya instale win en una pc q tengo por aca, y ya tengo el mplab y el css v4.038 (q fea interfaz por cierto...). La cuestion es q parece q el CCS no tiene la libreria <pic18_usb.h> y estuve googleando un buen rato y no la puedo encontrar...
alguien me la podria facilitar por favor? estoy ansioso por generar mi propio codigo ^^

saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado huichoman

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 186
    • Pequeñas piezas para grandes proyectos.
Re: Proyecto PicUSB <PC-PICUSB CDC-MAX485-MAX485-PIC>
« Respuesta #317 en: 14 de Febrero de 2008, 01:58:19 »
Hola, vengo del foro de Delphi, pues considero este hilo el lugar más  apropiado para mis dudas :mrgreen:.

Estoy tratando de hacer un puente algo así por el estilo: PC-PIC USBCDC-MAX485-MAX485-PIC

Para la simulación utilizo: PROTEUS ISIS, Virtual Serial Port driver y un programa hecho en delphi. Versión del compilador, CCS 4.065.

Al mandar un comando desde el programa en Delphi, el PIC que está al otro extremo recibe y contesta  correctamente, pero se muere en el instante. En un post anterior J1M comentó algo sobre "vaciar el buffer de residuos" utilizando la función
usb_cdc_flush_out_buffer();  que Alejandro le solucionó un problema similar. En que parte tendría que utilizar dicha función??. Otro detalle es que al cerrar el programa de lado de la PC, el proceso queda activo, y es imposible terminarlo, obligándome a reiniciar. Alguien con una  :idea: que me guíe??? :mrgreen:

Este es el código fuente para el PIC18F2550. Esta basado en el ejemplo del maestro Redpic para la comunicación USB CDC.

Código: [Seleccionar]
#use delay(clock=48000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7,parity=N)        //Modificación
#include ".\include\usb_cdc.h"
#rom int 0xf00000={1,2,3,4}


#define enviar_on PIN_B0     //Modificación
#define STX 0x02
#define ETX 0x03

void enviar(void);
void recibir(void);

void enviar(void){
  output_high(enviar_on);
  delay_ms(5);
}

void recibir(void){
  delay_ms(5);
  output_low(enviar_on);
  delay_ms(1);}


void main() {
   BYTE i, j, address, value;
   char c;
   recibir();
   delay_ms(333);
   
   usb_cdc_init();
   usb_init();
   
   while(!usb_cdc_connected()) {}

   do {
      usb_task();
      if (usb_enumerated())

     {
     
      if (kbhit()) {
         c=getc();
         usb_cdc_putc(c);}
      }
      if (usb_cdc_kbhit()) {
         c=usb_cdc_getc();
         enviar(); putc(c); recibir();}
      }     
     
     }
   } while (TRUE);
   
 
}


Ganbatte kudasai.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: Proyecto PicUSB
« Respuesta #318 en: 14 de Febrero de 2008, 10:50:47 »
Zspikes esa versión del CCS debería llevarlo incluido, busca en la carpeta de Drivers. Sino, reinstala el programa.
Huichoman te sucede lo mismo que a mí, pero con 232, aún no he consegguido encontrar el problema.. recibo 3 bytes de los 14 que debería recibir y el PIC se me cuelga... hasta que no lo reseteo no me hace ni caso. En cuanto encuentre solución te cuento por si fuera lo mismo que te sucede a tí...

mata ne! :)


Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Proyecto PicUSB
« Respuesta #319 en: 14 de Febrero de 2008, 16:55:08 »
Hola J1M y huichoman, me habeis picao. Como todavía tengo la board con el USB montado voy a ver si le añado otro PIC (16F876) por 232.

Huichoman dices que en la comunicación PC <---> PIC1 <---> PIC2 el PIC que se te queda colgado es el PIC2 ¿no? , que raro, parece que fuera más lógico que el que se colgara fuera el PIC1 que es el que tiene el USB ... voy a ver si lo monto.
« Última modificación: 14 de Febrero de 2008, 16:57:13 por pocher »

Desconectado huichoman

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 186
    • Pequeñas piezas para grandes proyectos.
Re: Proyecto PicUSB
« Respuesta #320 en: 14 de Febrero de 2008, 17:10:26 »

Huichoman dices que en la comunicación PC <---> PIC1 <---> PIC2 el PIC que se te queda colgado es el PIC2 ¿no? , que raro, parece que fuera más lógico que el que se colgara fuera el PIC1 que es el que tiene el USB ...

Hola Pocher, disculpa fué error de redacción, el que se queda colgado es el PIC1, y tambien se queda colgado el proceso del programa en la PC (Rs485.exe) y no lo puedo terminar hasta que reinicie.  Ahora, estoy en fase de prueba, todo simulado este fin voy a hacer las pruebas físicas. Ahora mismo voy de salida al médico, regresando subo un video. El problema en si es el siguiente, Inicio la simulación en proteus, espero a que me cree el puerto virtual en mi caso el COM3, abro el programa que utilizo para mandar datos, me conecto al com3, espero a que proteus procese los datos (la compu al 100%), manda los datos, el PIC2 recibe los datos, despliega en un lcd lo correspondiente al comando recibido dentro de la cadena de caracteres enviada, responde con otra cadena, la cual se despliega en el programa de la PC. A partir de ahi espero un tiempo pertinente y vuelvo a mandar otro comando, pero naaaaada de naaaaaaada. osease que si funciona, pero solouna vez  :mrgreen:.

Saludos

Gabnatte kudasai.

matane

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Proyecto PicUSB
« Respuesta #321 en: 14 de Febrero de 2008, 17:59:34 »
La LCD quien la tiene ¿el PIC1 ó el PIC2? Manda el fichero de PROTEUS.

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Proyecto PicUSB
« Respuesta #322 en: 15 de Febrero de 2008, 03:40:02 »
Acabo de probar la comunicación PC <---> PIC1 ---> PIC2 y funciona bien.

He de decir que la primera vez funcionó mal: los LEDs del PIC2 no se encendian correctamente. Reseteé el PIC2 y a partir de aquí siempre a recibido bien.

Me falta hacer cambios en el programa para probar la comunicación bidireccional total: PC <---> PIC1 <---> PIC2

Voy a ello.

Desconectado huichoman

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 186
    • Pequeñas piezas para grandes proyectos.
Re: Proyecto PicUSB
« Respuesta #323 en: 15 de Febrero de 2008, 05:15:25 »
Hola amigo Pocher. 

Te pongo el rar con el archivo en proteus, los programas para ambos pics y el programa que utilizo para la comunicación.  Saludos y gracias por toda la ayuda.

USBCDCRS485.rar

Ganbatte kudasai.


Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Proyecto PicUSB
« Respuesta #324 en: 15 de Febrero de 2008, 09:35:13 »
 :-/ ¡¡¡ También FUNCIONA !!! :-/     :-/ ¡¡¡ Oeh, Oeh, Oeh !!! :-/

El único problema que sigue habiendo es que hay que resetear al PIC2 inicialmente, luego la comunicación bidireccional funciona perfectamente todo el rato. Me falta probar si añadiéndole al PIC2 un RESET_CPU() ya no sería necesario ir con el dedito a hacer un reset inicialmente.

La comunicación entre PICs la he hecho rapidito, únicamente con dos cables (transmisión y recepción)

Ahora que estoy "entusiasmato" voy a mirarme lo tuyo huichoman a ver si lo hechamos a andar.



Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Proyecto PicUSB
« Respuesta #325 en: 15 de Febrero de 2008, 09:41:04 »
Lo siento huichoman pero me dá error al intentar descargar el archivo.

Desconectado huichoman

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 186
    • Pequeñas piezas para grandes proyectos.
Re: Proyecto PicUSB
« Respuesta #326 en: 15 de Febrero de 2008, 11:22:13 »
Hola Pocher, acabo de probar el enlace y si funciona, pero por silas moscas te subí el archivo en rapidshare.

DESCARGAR ARCHIVO

Saludos.


Ganbatte kudasai.

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Proyecto PicUSB
« Respuesta #327 en: 15 de Febrero de 2008, 15:26:17 »
Hola huichoman.

He estado mirando los archivos que has enviado y he visto varias cosas:

- En el PIC1 (el que tiene USB) utilizas para la recepción de caracteres c=getc() en el while. Esto no es recomendable, a mí en ocasiones no me ha funcionado bien. Debes de hacerlo siempre por interrupción RDA.

- En el PIC2 (esclavo) utilizas las rutina de interrupción de RedPic. Quizá seria aconsejable que dejaras una rutina de interrupción más pequeña sin tanto comando. Lo digo para que no te lies y una vez que te funcione pués añade lo que quieras, al fin y al cabo lo único que vas a recibir es un byte por interrupción.

- No veo las señales de control del 485. Sin el control de estas señales no te puede funcionar.

- En la parte del PC yo uso VB y en Delphi no te puedo ayudar.

Un saludo.

PD. Ya he solucionado lo de tener que hacer un reset al PIC2 al principio. Se ha solucionado haciendo que al arrancar el VB automáticamente al cargar el formulario mande un comando a cada PIC y que estos respondan. No lo tengo muy claro pero así funciona y si funciona prohibido tocar.

Desconectado huichoman

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 186
    • Pequeñas piezas para grandes proyectos.
Re: Proyecto PicUSB
« Respuesta #328 en: 15 de Febrero de 2008, 16:11:31 »
Hola pocher .

Citar
En el PIC1 (el que tiene USB) utilizas para la recepción de caracteres c=getc() en el while. Esto no es recomendable, a mí en ocasiones no me ha funcionado bien. Debes de hacerlo siempre por interrupción RDA.

Ok. Realizaré el cambio.


Citar
En el PIC2 (esclavo) utilizas las rutina de interrupción de RedPic. Quizá seria aconsejable que dejaras una rutina de interrupción más pequeña sin tanto comando. Lo digo para que no te lies y una vez que te funcione pués añade lo que quieras, al fin y al cabo lo único que vas a recibir es un byte por interrupción.

La rutina funciona perfectamente, ya hice las pruebas pic-MAX485-MAX485-MAX232-PROGRAMA EN DELPHI. Va como la seda.

Citar
No veo las señales de control del 485. Sin el control de estas señales no te puede funcionar.
Las señales para el control 485 si estan, son las funciones enviar();   y recibir ();.


Podrias compartir lo que estas en el lado del pic con usb para checar el còdigo... porfaaaaaaaaa. :mrgreen:

Saludos, llegando a casa le sigo machetetando. Ahora mismo estoy en la uni. jeje

Saludos.

Ganbatte kudasai.



Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Proyecto PicUSB
« Respuesta #329 en: 15 de Febrero de 2008, 16:30:16 »
Es cierto sí las tienes.

La aplicación que tengo es bastante larga. A ver si la recorto y te pego lo que me has pedido.

Un saludo.