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

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

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5168
Re: Mis experiencias con el BUS CAN
« Respuesta #1395 en: 09 de Mayo de 2013, 18:03:57 »
Gracias por el dato MerLiNz.

Las señales que aparecen en los cables V+ y V- ¿Qué són? ¿Vdd y GND?

Saludos.
« Última modificación: 09 de Mayo de 2013, 18:06:03 por Picuino »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5168
Re: Mis experiencias con el BUS CAN
« Respuesta #1396 en: 09 de Mayo de 2013, 18:09:03 »
Me respondo yo mismo.

Son cables de alimentación: http://en.wikipedia.org/wiki/CAN_bus


Saludos.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Mis experiencias con el BUS CAN
« Respuesta #1397 en: 09 de Mayo de 2013, 20:39:44 »
Si, alimentacion.

Desconectado carlosPino

  • PIC10
  • *
  • Mensajes: 4
Re: Mis experiencias con el BUS CAN
« Respuesta #1398 en: 29 de Mayo de 2013, 16:26:49 »
Buenas tardes, estoy tratando de comunicar dos dspic30f4011 con el transceiver MCP2551, y no he tenido éxito. En los pines del dspic C1TX y C1RX midiendo el voltaje me dan el mismo voltaje de alimentación, y en las salidas del trasnceiver CANH y CANL una tension muy cercana a 3v fijos. Me gustaría saber que indican estos niveles de tensión a ver si por allí se identifica el error. Muchas gracias.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7839
Re: Mis experiencias con el BUS CAN
« Respuesta #1399 en: 29 de Mayo de 2013, 18:48:25 »
Buenas tardes, estoy tratando de comunicar dos dspic30f4011 con el transceiver MCP2551, y no he tenido éxito. En los pines del dspic C1TX y C1RX midiendo el voltaje me dan el mismo voltaje de alimentación, y en las salidas del trasnceiver CANH y CANL una tension muy cercana a 3v fijos. Me gustaría saber que indican estos niveles de tensión a ver si por allí se identifica el error. Muchas gracias.

Si pudieras poner aqui un diagrama de conexion, creo que podriamos ayudarte mas.
Sin osciloscopio, es muy dificil que puedas ver si hay comunicacion...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado juanjuan19

  • PIC16
  • ***
  • Mensajes: 120
Re: Mis experiencias con el BUS CAN
« Respuesta #1400 en: 11 de Agosto de 2013, 22:25:16 »
recien veo este hilo, te felicito por tu trabajo, es excelente, yo recien empiezo a despertar en esto, por el momento estoy por comprar un modulo de desarrolo gsm sim900 y realizar mis comunicaciones con pic y un celular cualquiera, y avisar sobre determinados eventos que sucedan, por ejemplo el comportamiento de la temperatura en una habitacion. Me intereso lo de can, a ver si me tiras una idea por favor de como puedo implementar este protocolo can a lo que quiero hacer con mi futura adquisicion, un abrazo

Desconectado JUAN_RAMON_RG

  • PIC10
  • *
  • Mensajes: 6
Re: Mis experiencias con el BUS CAN
« Respuesta #1401 en: 03 de Septiembre de 2013, 17:21:56 »
Muy buenas tardes espero me puedan ayudar con lo siguiente ..logre la comunicacion de dos dspic30f4013 mediante can bus.. envie un mensaje (mi nombre) de un pic para mostrarlo en un display lcd conectado a otro pic ...el problema es que solo me aparece la primer letra del nombre y nada mas . adjunto el codigo que tengo del pic receptor. muy buenas tardes y gracias

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7839
Re: Mis experiencias con el BUS CAN
« Respuesta #1402 en: 03 de Septiembre de 2013, 18:36:13 »
Muy buenas tardes espero me puedan ayudar con lo siguiente ..logre la comunicacion de dos dspic30f4013 mediante can bus.. envie un mensaje (mi nombre) de un pic para mostrarlo en un display lcd conectado a otro pic ...el problema es que solo me aparece la primer letra del nombre y nada mas . adjunto el codigo que tengo del pic receptor. muy buenas tardes y gracias

No entiendo tu programa, cual es la parte donde transmite en CAN ??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Mis experiencias con el BUS CAN
« Respuesta #1403 en: 03 de Septiembre de 2013, 18:56:10 »
El problema puede estar en el puntero array raro que has puesto, si declaras un array[] y luego pones *Rxdata=C1RX0B1 pues es algo raro, o por lo menos no entiendo que pretendes con ello, si lo que quieres es apuntar un puntero hacia los C1RX0Bx debes hacerlo asi:

char *Rxdata=&C1RX0B1;

y ahora con eso o bien usas Rxdata
  • o bien *Rxdata y lo incrementas para obtener los datos de B1-B2.... (justo como tienes en el for)

Desconectado JUAN_RAMON_RG

  • PIC10
  • *
  • Mensajes: 6
Re: Mis experiencias con el BUS CAN
« Respuesta #1404 en: 04 de Septiembre de 2013, 14:18:21 »
Muy buenas tardes espero me puedan ayudar con lo siguiente ..logre la comunicacion de dos dspic30f4013 mediante can bus.. envie un mensaje (mi nombre) de un pic para mostrarlo en un display lcd conectado a otro pic ...el problema es que solo me aparece la primer letra del nombre y nada mas . adjunto el codigo que tengo del pic receptor. muy buenas tardes y gracias

No entiendo tu programa, cual es la parte donde transmite en CAN ??
paso el programa del pic transmisor ..el que habia puesto era solo la parte receptora pongo la parte donde mando mensaje por medio de can

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7839
Re: Mis experiencias con el BUS CAN
« Respuesta #1405 en: 04 de Septiembre de 2013, 15:05:25 »
Bueno, has progresado...
Ahora entiendo menos que antes que quieres hacer !! :lol: :lol: :lol:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado JUAN_RAMON_RG

  • PIC10
  • *
  • Mensajes: 6
Re: Mis experiencias con el BUS CAN
« Respuesta #1406 en: 06 de Septiembre de 2013, 16:36:39 »
Muchas gracias por tu ayuda . Ya solucione mi pequeño problema. me gustaría colaborar con este tema compartiendo mi proyecto ...un lector CAN BUS automotriz. solo faltan unos pequeños toques finales y se los presentare con mucho gusto ....gracias.

Desconectado acukla

  • PIC10
  • *
  • Mensajes: 2
Re: Mis experiencias con el BUS CAN
« Respuesta #1407 en: 06 de Septiembre de 2013, 18:19:23 »
Buenas Tardes a Todos! Antes que nada, tambien les dejo mis felicitaciones por todos los logros y el material tan valioso que aportan para toda la comunidad de todopic. Para seguir la linea de comunicacion CAN, me gustaria compartir mi problema, que supongo que para ustedes sera sencillo, pero hace unos dias que estoy con dificultades. Estava trabajando con comunicacion CAN con PIC18F4580, donde con mucho trabajo fueron modificadas las librerias de "can-pic18f4580", para comunicar un PIC con un modulo comercial de sistemas neumaticos, donde escribiendo su direccion (direccion del modulo comercial 0x080), el respondia o valor correspondiente a su posicion.
El problema que estoy teniendo, es basicamente en configurar el modulo CAN, en lo relacionado a baudrate (tiene ser de 1Mhz) y modo de operacion normal CAN A (no extendida). Estoy trabajando ahora con un microcontrolador dspic33fj128gp802, y programando en ccs. Por lo que tengo entendido, las bibliotecas "can-pic24.c" deberian funcionar para estos microcontroladores. El problema por lo que pude corroborar no es electrico o fisico, es mas bien configurar esas velocidiadades.
Estoy anexando el codigo para que se sientan a gusto y pueda hecharle un ojo al codigo y darme su parecer y/o sugerencias de modificacion. Desde ya muchas gracias; y a MGLSOFT felicitaciones por haber comenzado el foro hace ya un tiempo y todavia sigue produciendo resultados positivos y ayudando a toda la comunidad. Saludos


Código: C
  1. #include <33FJ128GP802.h>
  2. #FUSES WDT                    //Watch Dog Timer
  3. #FUSES NOWRTB                   //Boot block not write protected
  4. #FUSES NOBSS                    //No boot segment
  5. #FUSES NOPROTECT                //Code not protected from reading
  6. #FUSES NOWRTss                    //Program memory not write protected
  7. #FUSES PR_PLL                     //Pimary oscillator
  8. #FUSES HS
  9. #FUSES PUT128                   //Power On Reset Timer value 128ms
  10. #FUSES NOIESO                   //Internal External Switch Over mode disabled
  11. #FUSES NORSS                    //No secure segment RAM
  12. #FUSES NOSSS                    //No secure segment
  13. #FUSES NOWRTSS                  //Secure segment not write protected
  14. #FUSES NORBS                    //No Boot RAM defined
  15. #FUSES NODEBUG                  //No Debug mode for ICD
  16. #FUSES NOJTAG                   //JTAG disabled
  17.  
  18. #use delay(clock=48M)         // Cristal externo de 8MHZ
  19. #use rs232(baud=57600,parity=N,xmit=PIN_B8,rcv=PIN_B9,bits=8)
  20.  
  21. #include <can-PIC24.c>
  22.  
  23. //definimos los pines RS232 y ECAN
  24. #Pin_select U1TX=PIN_B8    // Transmision RS232 (pin 17)
  25. #Pin_select U1RX=PIN_B9    // Recepcion RS232 (pin 18)
  26. #Pin_select C1RX=PIN_B10   // Recepcion ECAN
  27. #Pin_select C1TX=PIN_B11   // Transmision ECAN
  28.  
  29. struct rx_stat rxstat;
  30. int32 rx_id;
  31. int8   in_data[8]={0,0,0,0,0,0,0,0},out_data[8]={0,0,0,0,0,0,0,0}, rx_len;
  32.  
  33. int32 solpos(void)   // Funcion que solicita informacion del modulo CAN
  34. {
  35. int32 pos;
  36. can_putd(0x080, out_data[0], 0, 0 , 0 , 1 );    //solicitacion RTR
  37.      while ( can_kbhit()!= 1)   //espera retornar valor
  38.         {
  39.           delay_cycles( 2 ); //funciona con 2 (no se por que)
  40.         }
  41.       if ( can_kbhit() == 1 )
  42.        {
  43.          if(can_getd(rx_id, &in_data[0], rx_len, rxstat))
  44.          {
  45.          pos=make32(in_data[0],in_data[1],in_data[2]);  // reconstruye valor para 32 bits
  46.          }
  47.        }
  48. return pos;
  49. }
  50.  
  51. void main()
  52. {  int32 posicion;
  53.  
  54.    setup_adc(ADC_CLOCK_INTERNAL );
  55.    can_init();
  56.  
  57. while (true)
  58.    {
  59.    output_toggle(pin_b6);     // cambia estado de un led para verificacion
  60.    posicion=solpos();         // llama a una funcion que lee valores de CAN
  61.    printf("%d\t",in_data[0]); // imprime valor mas significativo via rs232
  62.    printf("%d\t",in_data[1]);
  63.    printf("%d\n",in_data[2]); // valor menos significativo
  64.    delay_ms(250);             // tiempo de espera
  65.  
  66.    
  67.    }
  68.  
  69.  
  70. }
  71.  
« Última modificación: 06 de Septiembre de 2013, 18:26:22 por MGLSOFT »

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7839
Re: Mis experiencias con el BUS CAN
« Respuesta #1408 en: 06 de Septiembre de 2013, 18:36:31 »
Muestranos que proceso usaste para configurar la velocidad, y el resultado al que llegaste (mas que nada como ejercicio para encontrar el problema).

Ademas quita o comenta la pausa de dos ciclos de reloj, que puede estar haciendo el ruido por el cual esto no funciona.

Solo una vez trabaje a 1 Mb, y te aseguro que es bastante quisquilloso, con el cumplimiento de los tiempos....

No se si es buena idea a esa velocidad trabajar por poolling, yo activaria las interrupciones y usaria los buffers de recepcion.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado acukla

  • PIC10
  • *
  • Mensajes: 2
Re: Mis experiencias con el BUS CAN
« Respuesta #1409 en: 06 de Septiembre de 2013, 23:01:36 »
Gracias por la pronta respuesta MGLSOFT, te cuento lo que he hecho sin tener resultados positivos;
he utilizado a herramienta que propusiste inicialmente en e foro (Microchip Controller Area Network (CAN) Bit Timing Calculator), utilizando una frecuencia de oscilador de 48MHZ y un baud rate de 1Mbps, los resutados fueron los siguientes para los dspic33f;
CICFG1=0x0000
CICFG2=0x07BE
que reemplaze en el archivo "can-pic24.c", comentando las otras lineas, un trabajo similar a lo que nos presentaste inicialmente.
Voy a pasarte el trabajo original, basado en el pic18f4580, que estoy utilizando de referencia para modificar algunas las configuraciones, por lo menos las que se de que se trata la linea de comando, solo que finalmente volvi a la forma original asi no alterar los archivos y consulto a personas con mucha experiencia en la area.
Este trabajo lo he realizado con un colega de habla portuguesa, veras por los comentarios. El esta funcionando hasta hoy en un brazo de actuacion neumatica. Estoy con la idea de mejorar algunas cosas y entre eso quiero cambiar el microcontrolador y embarcar un control dedicando; pero como veras... estoy en pañaes todavia principalmente por el tema de CAN.
Estoy viendo paralelamente tambien para ver si modifico alguna cosa, como me sugeriste lo de pooling, pues bien... era como siempre haciamos jeje, es buena tu sugerencia, pero si funcionaria es bueno que lo haga de las dos formas. Desde ya muchas gracias por la ayuda!


 

anything