Autor Tema: Mis experiencias con el BUS CAN  (Leído 615709 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 #540 en: 09 de Enero de 2009, 15:07:58 »
Como era la conexion que hiciste??
Seguro que conectaste a los pines del bus??
Pusiste a tierra la placa del pic??

Que velocidades utilizaste??
Fuiste cambiandolas??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado teleko

  • PIC10
  • *
  • Mensajes: 41
Re: Mis experiencias con el BUS CAN
« Respuesta #541 en: 09 de Enero de 2009, 16:10:51 »
La conexión fue conectando sólo el CanH y CanL, ya que el cable OBD que tengo no coincide con las conexiones de mi placa. Yo creo que el fallo está ahí, que debo conectar con la masa del coche (hay un pin a masa en el OBD.). La tensión a la placa es con un cable USB (sólo conexión de voltaje) conectado al portatil, con eso queda alimentada a casi 5V. Cierto es que cuando lo conecto a la protoboard, tomo la misma alimentación para ambos PIC.

Las velocidades probé con 250 y 500kbps, que según he leido por ahí, son las 2 posibles a la que trabaja el Can en Toyota. Probé a conectar un polímetro que tengo con la función logic, y detecta cambios de estado muy rápidos (o sea, algo se está transmitiendo por el bus). Aunque lo mejor sería un osciloscopio.

Por cierto, en un hilo de ccsinfo vi tu nick, preguntando lo que yo estaba buscando de "can autobaud". ¿Tienes alguna rutina que haga esto con el modo listen?
« Última modificación: 09 de Enero de 2009, 16:25:03 por teleko »

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #542 en: 09 de Enero de 2009, 16:42:32 »
Okala tuviera una rutina para hacerlo!! :D :D
Hay que trabajar bastante en software para poder lograrlo, ademas solo podrias acceder a un set de velocidades conocidas, si un fabricante usa velocidades no estandar, nunca podrias encontrarla!!!

Por eso los sniffer que conozco no lo tienen.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado arameo

  • PIC10
  • *
  • Mensajes: 17
Re: Mis experiencias con el BUS CAN
« Respuesta #543 en: 16 de Enero de 2009, 20:16:54 »
Gente, aca les dejo el esquematico para que me comenten que les parece y recibir sus criticas, cambios, consejos, etc.

Una configuracion que veo cambia bastante a la que figura en el circuito del ELM327, es la salida del MCP2551 al Bus (Adjunto Foto)
La RS propuesta es de 4.7 K  y la planteada de 10 (mucha diferencia)
Al igual que las R y los C conectados de las lineas del bus a tierra.



El switchx4 es con la idea de programar el testeo de los pines del PortA en la conf. del bus y segun ellos realizar la configuracion de la velocidad de transferencia del bus (ya que desconozco con cual funciona el auto), esto para no tener que grabar el PIC nuevamente si deseo probar otra velocidad.
Creo que es factible desenchufar los pines del bus, cambiar una conf. del switch y resetear el PIC, al detectar otro valor en estos pines, entra a otra rutina de conf.

Como ven esta idea ?

Bueno, espero comentarios y poder subir algun codigo simple propuesto/probado.

Saludos


Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #544 en: 16 de Enero de 2009, 23:04:55 »
Supongo que con el doble circuito RC intentan filtrar vaya a saber que (el MCP2551 tiene todo ese hardware adentro), y si miras la hoja de datos la resistencia de 4,7K es para velocidades del bus muy bajas...

lo de las llaves para la configuracion de velocidad del bus no esta mal, aunque seria lo mismo cambiar con un pulsador y usar esas entradas como salidas y mostrar cual fue la velocidad seleccionada.
En modo binario tendrias 15 posibilidades, de esa forma sabrias a ciencia cierta cual es la velocidad utilizada...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado gustpe

  • PIC10
  • *
  • Mensajes: 15
Re: Mis experiencias con el BUS CAN
« Respuesta #545 en: 21 de Enero de 2009, 23:53:12 »
Hola a todos, este mi primer aporte en el tema del Bus-Can, bueno les cuento, me compre una interface can usb http://www.canusb.com/index.htm, muy buena por cierto te dan un programa para ver los datos y algunos ejemplos con labview y otros, lo probe en un vehiculo y me leyo todos los datos, con esos datos me dispuse a armar mi propia interface usando el dspic 30f4011 con el mcp2551 y cristal de 20Mhz, lo programe con el mikrobasic para dspic, y bueno despues de tanto lidiar logre configurar para enviar y recibir mensajes 500Kbps, y aqui viene mi problema cuando conecto el dspic con la interface usb me envia y recibe bien los datos, pero cuando lo conecto con el vehiculo, este se resetea, si solo programo el dspic para enviar no hay  problema, pero si lo configuro asi sea solo para recibir se me resetea, nose porque si alguien me puede ayudar, les adjunto el programa del dspic. gracias

Código: FreeBasic
  1. program TX_RX_CAN_500Kbs
  2. include "logo"
  3. DIM Can_Init_Flags, Can_Send_Flags, Can_Rcv_Flags, MSG_RCVD, RX_DATA_LEN, X AS word
  4.     Tx_Data  AS byte[8]
  5.     Rx_Data  AS byte[8]
  6.     txt AS STRING[3]
  7.     Rx_ID, Tx_ID AS longint
  8.  
  9. main:
  10.   ADPCFG = $FFFF
  11.   Can_Init_Flags   = 0
  12.   Can_Send_Flags   = 0
  13.   Can_Rcv_Flags    = 0
  14.  
  15.   Can_Send_Flags   = CAN_TX_PRIORITY_1 AND           ' SE UTILIZA PARA
  16.                      CAN_TX_STD_FRAME AND            '  CANSendMessage
  17.                      CAN_TX_RTR_FRAME
  18.  
  19.   Can_Init_Flags   = CAN_CONFIG_SAMPLE_THRICE AND    ' SE ULILIZA PARA
  20.                      CAN_CONFIG_PHSEG2_PRG_ON AND    '  CANInitialize
  21.                      CAN_CONFIG_XTD_MSG AND
  22.                      CAN_CONFIG_DBL_BUFFER_ON AND
  23.                      CAN_CONFIG_ALL_VALID_MSG  AND
  24.                      CAN_CONFIG_LINE_FILTER_OFF
  25.  
  26.   CAN1Initialize(1,2,4,4,1,Can_Init_Flags)           ' configurado a 500kbs con oscilador
  27.                                                       'de 20 MHz
  28.   CAN1SetOperationMode(CAN_MODE_NORMAL, 0x00)         ' set CONFIGURATION mode
  29.  
  30.  
  31.   CAN1SetMask(CAN_MASK_B1, -1, CAN_CONFIG_MATCH_MSG_TYPE AND CAN_CONFIG_STD_MSG)   ' set all mask1 bits to ones
  32.   CAN1SetMask(CAN_MASK_B2, -1, CAN_CONFIG_MATCH_MSG_TYPE AND CAN_CONFIG_STD_MSG)   ' set all mask2 bits to ones
  33.   CAN1SetFilter(CAN_FILTER_B1_F1, 5,CAN_CONFIG_STD_MSG) ' set id of filter B2_F3 to 3
  34.   CAN1SetOperationMode(CAN_MODE_NORMAL, 0x00)           ' modo Normal ENVIA Y RECIBE
  35.  
  36. ' -----------------configuracion del glcd 128x64
  37.   Glcd_Init(PORTC,13,PORTC,14,PORTE,8,PORTD,1,PORTB,8,PORTD,3,PORTB) 'conf d puertos
  38.   delay_ms(2000)
  39.  
  40.     Glcd_Fill(0x00)  ' Limpiar pantalla
  41.     Glcd_Image(LOGOTIPO_bmp)         'dibujar imagen
  42.     Delay_MS(5000)
  43.     Uart2_Init(9600)                   'INICIALIZAMOS RS232
  44.     Glcd_Fill(0x00)  ' Limpiar pantalla
  45. MOSTAR:
  46.   WHILE TRUE
  47.     Tx_ID=$100
  48.     Tx_Data[0] = $EC
  49.     Tx_Data[1] = $04
  50.     Tx_Data[2] = $00
  51.     Tx_Data[3] = $00
  52.     Tx_Data[4] = $00
  53.     Tx_Data[5] = $A9
  54.     Tx_Data[6] = $0B
  55.     Tx_Data[7] = $6a
  56.     CAN1Write(Tx_ID, Tx_Data, 8, Can_Send_Flags)   ' envio los datos
  57.     Tx_ID=$500
  58.     Tx_Data[0] = $5E
  59.     Tx_Data[1] = $00
  60.     Tx_Data[2] = $F8
  61.     Tx_Data[3] = $02
  62.     Tx_Data[4] = $D2
  63.     Tx_Data[5] = $02
  64.     Tx_Data[6] = $26
  65.     Tx_Data[7] = $02
  66.     CAN1Write(Tx_ID, Tx_Data, 8, Can_Send_Flags)   ' envio los datos
  67.     FOR X=0 TO 100
  68.     DELAY_MS(1)           'PAUSA ENTRE ENVIO RECEPCION
  69.     NEXT X
  70.    
  71.     Msg_Rcvd = CAN1Read(Rx_ID , Rx_Data , Rx_Data_Len, Can_Rcv_Flags)
  72.  
  73.     IF Rx_ID=$112 THEN
  74.     Uart2_Write_TEXT ("112")
  75.     Glcd_Set_Font(@System3x6, 3, 6, 32)
  76.     Glcd_Write_TEXT("RX_ID=112   DLC=", 3, 0, 2)
  77.     ByteToStr(Rx_Data_LEN, txt)
  78.     Glcd_Write_TEXT(TXT, 63, 0, 2)
  79.     ByteToStr(Rx_Data[0], txt)
  80.     Glcd_Write_TEXT(TXT, 3, 1, 0)
  81.     ByteToStr(Rx_Data[1], txt)
  82.     Glcd_Write_TEXT(TXT, 18, 1, 0)
  83.     ByteToStr(Rx_Data[2], txt)
  84.     Glcd_Write_TEXT(TXT, 33, 1, 0)
  85.     ByteToStr(Rx_Data[3], txt)
  86.     Glcd_Write_TEXT(TXT, 48, 1, 0)
  87.     ByteToStr(Rx_Data[4], txt)
  88.     Glcd_Write_TEXT(TXT, 63, 1, 0)
  89.     ByteToStr(Rx_Data[5], txt)
  90.     Glcd_Write_TEXT(TXT, 78, 1, 0)
  91.     ByteToStr(Rx_Data[6], txt)
  92.     Glcd_Write_TEXT(TXT, 93, 1, 0)
  93.     ByteToStr(Rx_Data[7], txt)
  94.     Glcd_Write_TEXT(TXT, 108, 1, 0)
  95.     END IF
  96.  
  97.     IF Rx_ID=$512 THEN
  98.     Uart2_Write_TEXT ("512")
  99.     Glcd_Set_Font(@System3x6, 3, 6, 32)
  100.     Glcd_Write_TEXT("RX_ID=512   DLC=", 3, 2, 2)
  101.     ByteToStr(Rx_Data_LEN, txt)
  102.     Glcd_Write_TEXT(TXT, 63, 2, 2)
  103.     ByteToStr(Rx_Data[0], txt)
  104.     Glcd_Write_TEXT(TXT, 3, 3, 0)
  105.     ByteToStr(Rx_Data[1], txt)
  106.     Glcd_Write_TEXT(TXT, 18, 3, 0)
  107.     ByteToStr(Rx_Data[2], txt)
  108.     Glcd_Write_TEXT(TXT, 33, 3, 0)
  109.     ByteToStr(Rx_Data[3], txt)
  110.     Glcd_Write_TEXT(TXT, 48, 3, 0)
  111.     ByteToStr(Rx_Data[4], txt)
  112.     Glcd_Write_TEXT(TXT, 63, 3, 0)
  113.     ByteToStr(Rx_Data[5], txt)
  114.     Glcd_Write_TEXT(TXT, 78, 3, 0)
  115.     ByteToStr(Rx_Data[6], txt)
  116.     Glcd_Write_TEXT(TXT, 93, 3, 0)
  117.     ByteToStr(Rx_Data[7], txt)
  118.     Glcd_Write_TEXT(TXT, 108, 3, 0)
  119.     END IF
  120.  
  121.      IF Rx_ID=$712 THEN
  122.     Uart2_Write_TEXT ("700")
  123.     Glcd_Set_Font(@System3x6, 3, 6, 32)
  124.     Glcd_Write_TEXT("RX_ID=700   DLC=", 3, 4, 2)
  125.     ByteToStr(Rx_Data_LEN, txt)
  126.     Glcd_Write_TEXT(TXT, 63, 4, 2)
  127.     ByteToStr(Rx_Data[0], txt)
  128.     Glcd_Write_TEXT(TXT, 3, 5, 0)
  129.     ByteToStr(Rx_Data[1], txt)
  130.     Glcd_Write_TEXT(TXT, 18, 5, 0)
  131.     ByteToStr(Rx_Data[2], txt)
  132.     Glcd_Write_TEXT(TXT, 33, 5, 0)
  133.     ByteToStr(Rx_Data[3], txt)
  134.     Glcd_Write_TEXT(TXT, 48, 5, 0)
  135.     ByteToStr(Rx_Data[4], txt)
  136.     Glcd_Write_TEXT(TXT, 63, 5, 0)
  137.     ByteToStr(Rx_Data[5], txt)
  138.     Glcd_Write_TEXT(TXT, 78, 5, 0)
  139.     ByteToStr(Rx_Data[6], txt)
  140.     Glcd_Write_TEXT(TXT, 93, 5, 0)
  141.     ByteToStr(Rx_Data[7], txt)
  142.     Glcd_Write_TEXT(TXT, 108, 5, 0)
  143.     END IF
  144.   WEND
  145. GOTO MOSTRAR

MGL. Perdon por la edicion, pero asi se puede ver tu codigo sin tener el editor...
« Última modificación: 22 de Enero de 2009, 00:19:21 por MGLSOFT »

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #546 en: 22 de Enero de 2009, 00:15:31 »
Hola gustpe!!
Felicitaciones por la herramienta y por tu aporte al hilo!!

Podrias agregar una imagen del circuito completo de tu placa??
Eso nos ayudaria a intentar saber si tu reset proviene del hardware o si es del software.
No tengo mucha (nada en realidad) experiencia con los Dspic, pero podremos aprender todos juntos sobre el mismo...

Edito:
Cuando pegue el codigo de tu sniffer me di cuenta que la etiqueta de salida no es igual a donde quieres saltar, la primera es MOSTAR y el GoTo te envia a MOSTRAR..
Deberia darte error el compilador..pero es posible que alli tengas el error.. :lol:
« Última modificación: 22 de Enero de 2009, 00:24:06 por MGLSOFT »
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado gustpe

  • PIC10
  • *
  • Mensajes: 15
Re: Mis experiencias con el BUS CAN
« Respuesta #547 en: 22 de Enero de 2009, 01:06:19 »
Que error para grande que he cometido, pero lo extrano es que no me daba error al compilar, bueno lo pruebo manana y les comentos, ojala funcione y bueno no lo tengo hecho en placa sino armado en el proto, ahi les subo las fotos del cicuito y de los datos q me muestra en el lcd

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #548 en: 22 de Enero de 2009, 01:42:51 »
Y si lo dibujas en papel y pegas aqui una imagen te va bien ?? :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado gustpe

  • PIC10
  • *
  • Mensajes: 15
Re: Mis experiencias con el BUS CAN
« Respuesta #549 en: 22 de Enero de 2009, 11:51:25 »
Aqui esta el esquema :), en las lines can-h y can-l, conecto una resistencia de 100ohm cuando lo conecto a mi interface can-usb, pero cuando lo conecto en el vehiculo lo hago sin la resistencia porque este ya trae una, cuando mido las dos lineas me da un valor de 120ohm, tambien en las lineas entre el dspic y el mcp e puesto unos led que me indica que esta funcionando, pero igual funciona con o sin estos, por esta razon no los puse en el esquema, bueno como les dije hoy pruebo haber si ya me funciona el programa con la correcion MGLSOFT, muchas gracias por cierto, ya escribo cualquier avace.
Aqui les dejo unos links, que tienen buena informacion en español.
http://server-die.alc.upv.es/asignaturas/PAEEES/2005-06/A05-A06%20-%20Funcionamiento%20del%20controlador%20CAN%20en%20el%20dsPIC30F4013.pdf
http://bieec.epn.edu.ec:8180/dspace/handle/123456789/986
http://bieec.epn.edu.ec:8180/dspace/handle/123456789/743

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #550 en: 22 de Enero de 2009, 12:31:28 »
Creo que cometes un error y es que no poner la resistencia de fin de linea te provoca error de Bus override y queda tonto tu receptor, ademas el valor de la resistencia es de 120 ohm no de 100 ohms. :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado gustpe

  • PIC10
  • *
  • Mensajes: 15
Re: Mis experiencias con el BUS CAN
« Respuesta #551 en: 23 de Enero de 2009, 00:04:04 »
Hola, les cuento que hoy hice las pruebas y me funciono muy bien :P, lo unico q cambie del programa fue que le quite el Mostrar y Goto Mostrar, y me funciono a la perfeccion, mañana voy a continuar con las pruebas para ver si todo esta bien hacerme el pcb, pienso hacerlo todo en montaje superficial, y sobre la resistencia igual me funciona con la de 100ohm, no recuerdo donde pero lei que decia q el bus-can debe tener una resistencia entre 60 y 200, si encuentro la info la subo para que puedan verla.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #552 en: 23 de Enero de 2009, 00:19:01 »
Me alegro muchisimo que ande tu proyecto.
Ya nos contaras mas sobre el mismo y como funciona.
La coneccion a PC es serial o USB ??
Ya tienes software de PC o usas el mismo del CANUSB ??

Bueno espero puedas contestarnos y mostrar mas a fondo lo que estas haciendo... :P
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado gustpe

  • PIC10
  • *
  • Mensajes: 15
Re: Mis experiencias con el BUS CAN
« Respuesta #553 en: 23 de Enero de 2009, 00:23:45 »
Bueno la coneccion a la pc la voy a hacer por serial porque se me facilita, aun no domino el usb, y como hay tantos adaptadores usb serial pues hay q aprovecharlos :lol:, y bueno el programa del pc lo pienso hacer en labview, nose si interesa alguna info de mi proyecto diganme y con gusto la comparto :lol:

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7842
Re: Mis experiencias con el BUS CAN
« Respuesta #554 en: 23 de Enero de 2009, 00:25:48 »
Por supuesto que interesa!! :-/ :-/
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything