Autor Tema: Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board  (Leído 2968 veces)

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

Desconectado afelio

  • PIC16
  • ***
  • Mensajes: 130
Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« en: 01 de Septiembre de 2014, 11:56:41 »
Buenas,

Estoy probando el Bus CAN de una placa que hice con un PIC32MX534F064h y la herramienta de microchip "MCP2515 CAN Bus Monitor Demo Board".

Todo parece indicar que funciona perfectamente, excepto cuando hago unas pocas pruebas más.

Cuando envío desde mi placa a la MCP2515 envía perfectamente, y cuando realizo el primer envío por parte del MCP2515 igual, todo perfecto. El problema viene cuando realizo más envios desde el MCP2515, necesito enviarlo 4 veces para que el dato llegue, así sucesivamente, si cambio los datos y lo envío, 4 veces.

No se si me estoy explicando bien, a ver con más datos:

Para la recepción por parte de mi tarjeta, chequeo el mensaje recibido y si los datos[0] y datos[1] son 0xAA y 0xBB  enciendo un led, sino, lo apago.

Pues como digo, arranco el programa, y envío el primer mensaje para encender el led (0xAA y 0xBB) o para que siga apagado, lo hace en t=0 y con darle una vez a Send lo hace perfectamente.

Pero para los siguientes mensajes que envío (para apagar el led o para encenderlo) necesito darle 4 veces a Send en el programa del MCP.

A que se debe??
Por qué el primero lo hace bien y los siguientes no??

Muchas gracias.

Un saludo.

Desconectado afelio

  • PIC16
  • ***
  • Mensajes: 130
Re: Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« Respuesta #1 en: 01 de Septiembre de 2014, 14:12:44 »
Buenas,

Me quedé con la mala sensación de que no me expliqué bien, a si que conecté todo y lo puse en marcha para que lo podais ver, (una imagen vale más que mil palabras)




Como podeis observar en la imagen, El MCP2515 recibe bien, y el primer mensaje lo envía perfecto
pero la segunda vez tengo que darle 4 veces a enviar para que mi placa detecte el mensaje, y la tercera, cuarta...etc...igual.

Muchas gracias.

Un saludo.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7787
Re: Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« Respuesta #2 en: 01 de Septiembre de 2014, 14:19:31 »
Tienes habilitadas las resistencias de fin de linea ?
Como cableaste el bus??

Que hace el programa del PIC ??

Es poca información la que presentas...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado afelio

  • PIC16
  • ***
  • Mensajes: 130
Re: Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« Respuesta #3 en: 01 de Septiembre de 2014, 15:41:24 »
Buenas MGLSOFT,

Llevas toda la razón, he sido breve con la información.

Pues utilizo el driver MCP2551 en mi placa, de ahí al micro, y por otro lado al MCP2515.

Sobre las resistencias de fin de linea, te diría que no las tengo habilitadas porque no a no ser que venga por defecto, yo no he configurado nada en el PIC sobre las resistencias fin de linea. Si te refieres a los 60Ohm (creo recordar), en cada extremo del bus, no he puesto ninguna a mi placa, ya que supuestamente el MCP2515 mete esa impedancia al Bus.

La programación del PIC es bien sencilla de momento.
Sólo tiene el CAN y la UART configurados. A 80MHz el reloj del sistema y de los periféricos.
La velocidad del CAN está configurada a 125K.

En el bus CAN, la recepción la hago por interrupción, no así la Tx.

Un saludo.


Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7787
Re: Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« Respuesta #4 en: 01 de Septiembre de 2014, 15:50:07 »
Deberias tener una configuracion asi:

PIC con CAN incorporado > MCP2551  >>>  -----------Bus CAN---------------------<<< MCP2551  < MCP2515 < PIC sin CAN

Las resistencias de fin de linea son elegibles del lado del analizador (se configuran por software) pero del lado del PIC debes ponerlas tu mismo.

Si tienes ambos sin resistencias puede que ande.
Si tienes ambos con resistencias no hay razon para que no ande...!!
Pero si tienes resistencias solo en un extremo es muy posible que no ande bien.

las resistencias son de 120 ohm entre los dos cables del bus, y van en ambos extremos de la linea.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado afelio

  • PIC16
  • ***
  • Mensajes: 130
Re: Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« Respuesta #5 en: 01 de Septiembre de 2014, 16:01:28 »
Buenas,

Mil gracias de nuevo MGLSOFT.

La configuración así la tengo, como indicas.

Ahora bien, me estoy liando bastante con el tema de las resistencias del fin de línea, como configuro las resistencias.

Yo creo, [quizá me equivoque, (lo más seguro)], que el analizador "MCP2515 CAN Bus Monitor Demo Board" con sus dos placas y que yo añado la mía son las que añaden cada uno la resistencia de 120ohmios.
En caso de ser así, tengo que configurar algo en la herramienta "MCP2515 CAN Bus Monitor Demo Board"??

Y en mi microcontrolador, tengo que configurar el tema de la resistencia??

Muchas gracias.

Un saludo.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7787
Re: Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« Respuesta #6 en: 01 de Septiembre de 2014, 17:31:51 »
Si usas las dos placas de Microchip, debes hacer que la placa de tu diseño quede insertada en medio del bus, así las placas de Microchip ponen o sacan las resistencias, no debería ofrecerte problemas en la recepción en la tuya.
Ver en pagina 17 del manual de usuario, esta el esquema. El transistor Q2 activa la resistencia de 120 ohm R14.

Da la sensación de que hay ecos y por eso tu placa no entiende el mensaje, para eso están las resistencias, para apagar los ecos.

Las resistencias, si miras en el circuito, son activadas a traves de transistores, comandados por el PIC de cada placa y a este le llega la orden de activarlas desde el mismo software.

Ahora que lo miro bien en el firmware que dice Microchip que tienen esas placas, esta siempre activo el transistor, desde que inicia:

Código: C
  1.  //RTS Pin Outputs
  2.   RTS0_2515_HIGH();
  3.   tris_RTS0_pin = OUTPUT_PIN;
  4.  
  5.   RTS1_2515_HIGH();
  6.   tris_RTS1_pin = OUTPUT_PIN;
  7.  
  8.   RTS2_2515_HIGH();
  9.   tris_RTS2_pin = OUTPUT_PIN;
  10.  
  11.   tris_CAN_RES = OUTPUT_PIN;
  12.   CAN_RES_ON(); //JM                                    <<<<<<<<<<<<<<<<<<<<<<<<<<<<< Aqui las activan y no vuelven a desactivarlas!!
  13. //  CAN_RES_OFF();  //Disconnect the termination resistor by default
  14.  
  15.   UserFlag.MCP_RXBn = 0;      //clear flag
  16.   UserFlag.USBsend = 0;       //clear flag
  17.   UserFlag.USBQueue = 0;      //Clear message queue
  18.  
  19.   //Need to set up MCP2515 before enabling interrupts
  20.   CANInit();          // See BusMon.c & .h
  21.  

Por lo tanto no funcionara tu placa con una de ellas solamente, y deberas ponerla en el centro del bus para que ande... :lol: :lol:
El firmware esta aca, por si quieres verlo:

http://ww1.microchip.com/downloads/en/DeviceDoc/2515DM-BM%20FW.zip

« Última modificación: 01 de Septiembre de 2014, 17:34:19 por MGLSOFT »
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado afelio

  • PIC16
  • ***
  • Mensajes: 130
Re: Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« Respuesta #7 en: 01 de Septiembre de 2014, 17:42:02 »
Buenas MGLSOFT,

OK, las resistencias de terminal del bus ya estan activas y las pone la placa del "MCP2515 CAN Bus Monitor Demo Board".

Respecto a lo de poner mi tarjeta en medio, así lo hago, utilizo las dos placas del "MCP2515 CAN Bus Monitor Demo Board", y la mía en medio.

He seguido haciendo pruebas:

El primer mensaje lo envía a la primera,
Y si espero un tiempo, el siguiente mensaje lo vuelve a enviar  a la primera, sino, tengo que enviarlo cuatro veces.

Estas últimas pruebas han sido bastante rápidas, mañana seguiré probando a ver.

Un saludo.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7787
Re: Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« Respuesta #8 en: 01 de Septiembre de 2014, 17:43:44 »
No estarás configurandole un Id a tu placa igual al de una de las de Microchip??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado afelio

  • PIC16
  • ***
  • Mensajes: 130
Re: Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« Respuesta #9 en: 01 de Septiembre de 2014, 17:50:59 »
Buenas MGLSOFT,

Pues empecé con el CAN haciendo pruebas en modo Loopback, filtrando los SID y permitiendo la interrupción de recepción para el SID = 0x100.
Por lo que a la hora de Transmitir, transmitía con el SID = 0x100.

Ahora, las pruebas sigo haciendolas así, en modo normal.

Envío trama desde mi tarjeta con SID = 0x100. Aunque creo que da igual, pues las tarjetas de microchip creo que aceptan cualquier SID.

y desde el software del "MCP2515 CAN Bus Monitor Demo Board" envío con SID = 0x100. Como te digo, cuando hice con pruebas en Loopback entro en la interrupción de Rx con ese SID.

Crees que ahí puede estar el problema??

Un saludo.
« Última modificación: 01 de Septiembre de 2014, 17:58:39 por afelio »

Desconectado afelio

  • PIC16
  • ***
  • Mensajes: 130
Re: Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« Respuesta #10 en: 04 de Septiembre de 2014, 11:37:47 »
Buenas MGLSOFT,

Problema resuelto, pero no se muy bien porqué sucede.

El problema venía a la hora de asignar la memoria de las Fifos.

Antes tenía puesto:

Código: [Seleccionar]
BYTE CAN1MessageFifoArea[2 * 8 * 16]
Ahora pongo:

Código: [Seleccionar]
BYTE CAN1MessageFifoArea[2 * 2 * 16]

Bien, explicaré un poco, el primer 2 es el número de canales, uno para Transmisión y otro para Recepción.
El segundo 2 ó 8 en el primer caso, es el número de mensajes en el Buffer
Y el 16 es el mínimo tamaño de un mensaje en el Buffer (16 bytes)

Cuando Tx desde "MCP2515 CAN Bus Monitor Demo Board" a mi tarjeta, envío sólo dos datos. D[0] y D[1].

Pues sigo sin entender por qué fallaba si asignaba la memoria
Código: [Seleccionar]
BYTE CAN1MessageFifoArea[2 * 8 * 16]
Muchas gracias.

Un saludo.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7787
Re: Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« Respuesta #11 en: 04 de Septiembre de 2014, 17:41:26 »
El mensaje tiene solo 8 bytes, no se porque poner 16 ??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado afelio

  • PIC16
  • ***
  • Mensajes: 130
Re: Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« Respuesta #12 en: 05 de Septiembre de 2014, 14:39:57 »
Buenas MGLSOFT,

La configuración del bus CAN, la he hecho con la ayuda que aporta microchip, que dice lo siguiente:

Citar
While each channel has a minimum size of one message buffer (16 bytes).

Y pone los siguientes ejemplos:

Citar
Example 1: 2 Transmit Channels (each with 8 message buffers) and 1 full Receive Channel (with 10 message buffers):

Two Transmit Channels with 8 messages buffers: 2 * 8 * 16 = 256 bytes
One Receive Channel with 10 message buffers: 1 * 10 * 16 = 160 bytes
Total memory required in bytes = 416 bytes
 

Probaré a poner en lugar de 16 a 8 a ver si sigue funcionando, porque como indicas, son 8 Bytes el mensaje. Pero si antes tenía la información con pinzas, ahora lo entiendo menos.

Por qué no funcionaba bien antes?? con:

BYTE CAN1MessageFifoArea[2 * 8 * 16]

Por qué indica que el mensaje mínimo son 16 bytes??

Muchas gracias.

Un saludo.

Desconectado Patido a Partido

  • PIC10
  • *
  • Mensajes: 1
Re:Bus CAN y herramienta MCP2515 CAN Bus Monitor Demo Board
« Respuesta #13 en: 02 de Marzo de 2017, 12:09:50 »
 :8} Buenas tardes, quiero adaptar un mcp2515 can bus monitor demo board, a una linea de datos J1939 (250kb/s) de velocidad en un camion volvo. Como hay que conectarla y que configuracion lleva y si tenemos el manual de usuario en español.

Muchas gracias. Un saludo.


 

anything