Autor Tema: Mis experiencias con el BUS CAN  (Leído 615781 veces)

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

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #180 en: 18 de Diciembre de 2007, 07:53:11 »
Esto significa lo que imagino?? :shock: :shock:
Anda tu placa ahora?? :lol: :lol:

Yo uso el software CanKing, si miras el resto del hilo veras que hablo del mismo.
Viene con los discos de las placas desarrollo de Microchip, y puedes bajarlo de su pagina WEB... :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #181 en: 19 de Diciembre de 2007, 21:30:24 »
Aun no respondes?? :shock: :shock:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pierno10

  • PIC10
  • *
  • Mensajes: 25
Re: Mis experiencias con el BUS CAN
« Respuesta #182 en: 20 de Diciembre de 2007, 18:46:24 »
Buenas noches MGLSOFT!!!!

Ya estoy x aki de nuew....

Me esta volviendo loco el tema del CAN BUS  :5].

Ahora ya mando cosas pero lo mejor de todo es que tengo 2 SNIFFERs, uno de USB y otro de puerto paralelo y ambos entienden el mismo mensaje. Pero lo mejor de todo es que yo no estoy mandando este mensaje :shock: . Mando un mensaje y el SNIFFER (CANKING) lo detecta. Pero yo mando un mensaje de pruebas muy simple y el detecta otra cosa. Lo he intentado a varias velocidades y las respuesta siempre es la misma.
Conclusión el error lo estoy cometiendo al crear el mensaje... VAMOS digo yo.

Imagina si estoy desesperado que ya estoy programando en CCS.

Ahora te dejo aki un poco de código en CCS para ver si me lo corriges para que solo mande un par de mensajes cuando inicie el PIC a 50Kbs, 125Kbs y 250Kbs.

Ya no se si cambiar de plataforma y pasarme SILABS  :? .

Espero tu ayuda como de costumbre y ya me comentas.

Te recuerdo que el micro que utilizo es 18F2580.

Un saludo


                     PERE.

Te adjunto un PDF de lo tengo para realizar el desarrollo.

Aquí te dejo el código este a ver si lo ves OK. Si no te agradecería las correcciones o que me generases un archivo de CCS que mandase un mennsaje y ya lo compilo yo.

Código: [Seleccionar]
#include "C:\Documents and Settings\Administrador\Escritorio\kk\main2.h"

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, stream=outstream)
#define CAN_USE_EXTENDED_ID FALSE
#include <can-18xxx8.c>

void main()
{

    int32 can_id;
    int can_data[8],i;
    int can_length, counter;
    struct rx_stat rxstat;

 


   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF|ADC_TAD_MUL_0);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillotar Config tab

   // TODO: USER CODE!!
   
   

 can_init();
   

   can_set_mode(CAN_OP_CONFIG);


// configuracion 50kbs q=8 62.5% oscilador 16MHZ
   BRGCON1=0x53;
   BRGCON2=0x90;
   BRGCON3=0x02;
   
   /*
   // configuracion 125kbs q=8 62.5% oscilador 16MHZ
   BRGCON1=0x07;
   BRGCON2=0x90;
   BRGCON3=0x02;
   */
   /*
   // configuracion 250kbs q=8 62.5% oscilador 16MHZ
   BRGCON1=0x03;
   BRGCON2=0x90;
   BRGCON3=0x02;
   */
   
   
   

   can_set_mode(CAN_OP_NORMAL);
   
counter = 0;
puts("Starting");

can_data[0] = 0x55;
can_data[1] = 0x99;


delay_ms(10000);
if(can_putd(0x111, can_data, 2, 3, 0,0))
 {
   puts("tx ok");
   delay_ms(10000);
 }
 
 
can_data[0] = 0x66;
can_data[1] = 0x47;

if(can_putd(0x222, can_data, 2, 0, 0, 0))
 {
   puts("tx ok");
   delay_ms(10000);
 }
 
 if ( can_tbe())
        {
          can_data[0] = 0x45;
          can_data[1] = 0x36;

          if (can_putd(0x123, can_data, 2,3,0,0)) { //success, a transmit buffer was open
            fprintf(outstream,"OKOK ");
            for (i=0;i<2;i++) {
               fprintf(outstream,"%X ",can_data[i]);
            }
            fprintf(outstream,"\r\n");
          }
          else { //fail, no transmit buffer was open
            fprintf(outstream,"\r\nFAIL on PUTD\r\n");
          }
          }


}
« Última modificación: 20 de Diciembre de 2007, 18:55:10 por pierno10 »

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #183 en: 21 de Diciembre de 2007, 08:06:56 »
Ante todo felicitaciones porque ye estas "hablando" en el BUS CAN, que no es poco... :mrgreen: :mrgreen:

Otra felicitacion y mi envidia (sana) por lo que hay en tu mesa de trabajo, pavadas de herramientas tienes!!! :lol: :lol:

Respecto al codigo, salvo algunos nudos que te has hecho, y espero tengas un poco mas de paciencia.
Quiero pedirte que pongas aqui que mensajes recibes en los sniffers, para saber cual de tus mensajes y porque los recibes...

En los sniffers, como tienes puesta la configuracion de todos los parametros del BUS CAN ???

Ponme esas respuestas y seguimos, asi puedo ayudarte sin tratar de adivinar, que es una ciencia oculta que no manejo... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pierno10

  • PIC10
  • *
  • Mensajes: 25
Re: Mis experiencias con el BUS CAN
« Respuesta #184 en: 21 de Diciembre de 2007, 11:11:49 »
Buenas tardes MGLSOFT!!!

En primer lugar agradecer tu interés y ganas de ayudar al projimo.....

En segundo lugar en estas fechas tan especiales desearte lo mejor para los tuyos y que pases unas felices navidades y prospero año nuevo.

Y ahora pasemos a la materia.

Los mensajes que estoy enviando son 3. Si te fijas en el código que te mando (compilado en CCS) veras que solo se ejecuta una sola vez, ya que no le he puesto WHILE(1). Pero claro cada vez que yo reseteo el pic se ejecuta de nuevo, ese el modo que he elegido para controlar los mensajes que estoy mandando.

Código: [Seleccionar]

#include "C:\Documents and Settings\Administrador\Escritorio\kk\main2.h"

#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, stream=outstream)
#define CAN_USE_EXTENDED_ID FALSE
#include <can-18xxx8.c>

void main()
{

    int32 can_id;
    int can_data[8],i;
    int can_length, counter;
    struct rx_stat rxstat;

 


   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF|ADC_TAD_MUL_0);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillotar Config tab

   // TODO: USER CODE!!
   
   

 can_init();
   

   can_set_mode(CAN_OP_CONFIG);


// configuracion 50kbs q=8 62.5% oscilador 16MHZ
/*
   BRGCON1=0x53;
   BRGCON2=0x90;
   BRGCON3=0x02;
   */
   
   // configuracion 125kbs q=8 62.5% oscilador 16MHZ
   BRGCON1=0x07;
   BRGCON2=0x90;
   BRGCON3=0x02;
   
   /*
   // configuracion 250kbs q=8 62.5% oscilador 16MHZ
   BRGCON1=0x03;
   BRGCON2=0x90;
   BRGCON3=0x02;
   */
   
   
   

   can_set_mode(CAN_OP_NORMAL);
   
counter = 0;
puts("Starting");

can_data[0] = 0x55;
can_data[1] = 0x99;


delay_ms(10000);
if(can_putd(0x111, can_data, 2, 3, 0,0))
 {
   puts("tx ok");
   delay_ms(10000);
 }
 
 
can_data[0] = 0x66;
can_data[1] = 0x47;

if(can_putd(0x222, can_data, 2, 0, 0, 0))
 {
   puts("tx ok");
   delay_ms(10000);
 }
 
 if ( can_tbe())
        {
          can_data[0] = 0x45;
          can_data[1] = 0x36;

          if (can_putd(0x123, can_data, 2,3,0,0)) { //success, a transmit buffer was open
            fprintf(outstream,"OKOK ");
            for (i=0;i<2;i++) {
               fprintf(outstream,"%X ",can_data[i]);
            }
            fprintf(outstream,"\r\n");
          }
          else { //fail, no transmit buffer was open
            fprintf(outstream,"\r\nFAIL on PUTD\r\n");
          }
          }


}



Cada uno de los mensajes  tiene un identificador diferente para diferenciarlos, y además están en CAN ID Standar (no extendido). Aun así lo que ven los sniffer es lo que te he adjuntado en el PDF. Veras que hay 2  cuadros de color rojo, uno corresponde como bien sabes al CANKING (de la tarjeta de desarrollo de MICROCHIP para MCP25050) y el otro a un Sniffer que me han dejado que es USB (mas sencillo).
Los 2 en el caso de las capturas están configurados a 125kbs, aunque a 50kbs hacen exactamente lo mismo. Cuando cambio la velocidad evidentemente también recompilo el PIC y configuro los registros a lo que corresponda.

Código: [Seleccionar]
// conflagración 50kbs q=8 62.5% oscilador 16MHZ
/*
   BRGCON1=0x53;
   BRGCON2=0x90;
   BRGCON3=0x02;
   */
   
   // conflagración 125kbs q=8 62.5% oscilador 16MHZ
   BRGCON1=0x07;
   BRGCON2=0x90;
   BRGCON3=0x02;
   
   /*
   // conflagración 250kbs q=8 62.5% oscilador 16MHZ
   BRGCON1=0x03;
   BRGCON2=0x90;
   BRGCON3=0x02;


La pregunta del millón es ¿¿que es lo que estoy mandando que ambos casos están viendo lo mismo???
Lo mando mal esta claro pero que me esta fallando???
Solo se trata de lo  mas básico mandar un mensaje de CAN y aun no he sido capaz....


Un saldudo y MUCHAS GRACIAS..... :-)

                   PERE.

PD: Lo único que necesito ahora es un código lo más simple posible que mande un mensaje CAN y al leerlo con el Sniffer se corresponda. No pido más de momento...

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #185 en: 21 de Diciembre de 2007, 11:47:05 »
Ok, es indudable que tu software esta haciendo algo mal, porque los ID no coinciden con los que envias... :mrgreen: :mrgreen:

Para que avances coincido contigo, te hago un ejemplo y lo haces funcionar en tu placa, pero necesito el archivo de encabezados que tu programa menciona :

Citar
#include "C:\Documents and Settings\Administrador\Escritorio\kk\main2.h"

Podras pasarmelo por privado??
O postearlo aqui mismo?? :lol:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pierno10

  • PIC10
  • *
  • Mensajes: 25
Re: Mis experiencias con el BUS CAN
« Respuesta #186 en: 21 de Diciembre de 2007, 12:18:12 »
Buenas tardes MGLSOFT!!

Aquí te remito lo que me estas pidiendo....

Muchas gracias de nuevo  :-/


Un saludo

                   PERE.


Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #187 en: 21 de Diciembre de 2007, 16:55:53 »
Que version de CCS utilizas??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #188 en: 21 de Diciembre de 2007, 22:16:14 »
Creo que lo que tienes es solamente una contradiccion, la rutina Can_Init(), selecciona el Can extendido, mientras en cada mensaje tu intentas enviarlo en Can estandar.

Prueba cambiando:
Citar
(can_putd(0x111, can_data, 2, 3, 0,0))

por

Citar
(can_putd(0x111, can_data, 2, 3, 1,0))

a ver si ese mensaje es bien leido, luego vemos si lo que digo es real o no, te parece??

El programa compilo bien en mi maquina, pero no tengo un 2580 para probarlo en la practica... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pierno10

  • PIC10
  • *
  • Mensajes: 25
Re: Mis experiencias con el BUS CAN
« Respuesta #189 en: 22 de Diciembre de 2007, 12:32:36 »
Buenas tardes MGLSOFT!!!
He realizado el cambio que me has propuesto pero sigue saliendo exactamente lo mismo.....  :shock:
Es muy curioso ya que como has visto el Sniffer entiende que se trata de una trama extendida tanto si la mando STANDAR como si no.
Que mas podemos hacer para ver que sucede???
Alguna sugerencia????  :-/

Seguimos en contacto.


Un saludo


                       PERE.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #190 en: 24 de Diciembre de 2007, 06:40:31 »
Lo unico que se me ocurre entonces es que hagas al revés, que utilizes la trama extendida , en vez de la standard, porque el Canking ya vi que no tiene pestaña alguna donde seleccionar trabajar con trama estandar.

Vuelve a poner el 1 en cada Can_putd() y cambia esto:

Citar
#define CAN_USE_EXTENDED_ID FALSE

por esto:

Citar
#define CAN_USE_EXTENDED_ID TRUE
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado pierno10

  • PIC10
  • *
  • Mensajes: 25
Re: Mis experiencias con el BUS CAN
« Respuesta #191 en: 28 de Diciembre de 2007, 03:38:22 »
Buenos días MGLSOFT!!!!

Esto sigue sin ir y yo soy un tío muy empeñado...  Por lo tanto no pienso rendirme.

El correo de hoy es ya el de vamos a sincronizarnos para dar solución al asunto.

Te propongo una cosa, como no se si el HW mio funciona correctamente y tu tarjeta de desarrollo parece que si lo va a soportar, te planteo lo siguiente:

- Manda un privado con tu dirección personal (la de tu casa por ejemplo), y cuando la tenga te remito un par de PIC 18F2580. Así tendré una referencia segura y fiable del porque esto no funciona. ¿¿¿Vamos si no te importa???

Espero tu respuesta



Un saludo

                  PERE.

PD: Gracias por tu atención y apoyo.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #192 en: 28 de Diciembre de 2007, 10:40:51 »
OK, pasate por tu casilla Hotmail...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Kid_Bengala

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 410
Re: Mis experiencias con el BUS CAN
« Respuesta #193 en: 30 de Diciembre de 2007, 16:03:08 »
hola

me alegro de este hilo, que lo intento seguir con entusiasmo aunque ultimamente no dispongo de mucho tiempo libre, creo haber leido en los ultimos posts (lei por encima) algo de un sniffer, yo me veo en la necesidad de diseñar un pequeño sniffer apra capturar unas tramas CAN de un dispositivo que tengo, para luego con otro hardware que diseñe procesar esas tramas. ¿Alguien tiene hecho el sniffer? Me suena que lei por encima que Marcos lo tenia, pero es que ando muy mal de tiempo y no peudo revisarme todo el hilo  :(

saludos de antonio

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #194 en: 31 de Diciembre de 2007, 07:12:26 »
El que tiene un sniffer por hardware es Pierno10 !!

Citar
Contexto del taller.pdf (201.23 KB - descargado 5 veces.)

Lo conminamos a traves del foro a que intente copiarlo y ponernos el esquema (salvo que tenga un micro y programa que no se puede copiar).... :-/ :-/ :-/
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.