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

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

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7841
Re: Mis experiencias con el BUS CAN
« Respuesta #705 en: 14 de Enero de 2010, 07:59:37 »
Error!!
La resistencia que depende del largo del bus y su velocidad es la que esta conectada al pin RS del MCP2551.
La resistencia de fin de linea sacala o cortala, pero siempre sera de 120 Ohms, porque lo que hace es mantener la impedancia del tramo del bus y evitar el retorno o eco de los mensajes.
Yo tengo aplicaciones donde no la pongo y anda igual.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

penguin

  • Visitante
Re: Mis experiencias con el BUS CAN
« Respuesta #706 en: 14 de Enero de 2010, 08:11:35 »
uhm... de todos modos, he hecho unos calculillos basandome en el datasheet, para poner ese valor de Rs. Yo quiero que "ande" en slope control, y en el cuadro de tensiones e intensidades de trabajo, veo esto :
Código: C
  1. ---------------------------------------------------------------
  2.                    |                                 |
  3. Slope-control | 10 µA < -IRS < 200 µA   |  0.4 VDD < VRS < 0.6 VDD
  4. ----------------------------------------------------------------
  5.  

Mi Vdd son entre 4.9 y 5 voltios. Pongo que son 5. Como no se que parámetros fijar, pongo que mi grado de libertad está en la intensidad. Pongo que trabaje a una media de lo que me advierte la tabla, por ejemplo a 100 uA. Pues con la simple ley de ohm veo que obtengo la R de 50 KOhmios.

Uhm..es grande, pero basándome en lo que me dice el datasheet..debería ser buena. Luego tu me dices que ponga una de 10 Ohmios ( creo que alguna vez la hepuesto, aunque no estoy seguro). Eso significa, que teniendo la Vdd que no puedo modificar, de 5 voltios, la intensidad que puede pasar por ahí es de 500 mA. 500 mA es muucho mayor que 200 uA. Qué otra cosa se ha de tener en cuenta? O ...si 10 Ohmios puede estar bien, esa tabla para que es, que significa ese valor de intensidad ( el margen mínimo y máximo)

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7841
Re: Mis experiencias con el BUS CAN
« Respuesta #707 en: 14 de Enero de 2010, 08:15:41 »
Haz esta prueba y me dices:
No saques la resistencia RS, solo puenteala por debajo soldando un alambre, de forma tal que quede conectada directo a masa.
Luego prueba a ver como va...
Deberias leer algo en el bus.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

penguin

  • Visitante
Re: Mis experiencias con el BUS CAN
« Respuesta #708 en: 14 de Enero de 2010, 08:27:07 »

Bueno primero dcir que he errado en el cálculo, no he tenido en cuenta el porcentaje de Vdd, sino el valor absoluto de ésta. Eso dice que el cálculo de la resistencia determinada está en 2 valores, al final me salian 20 y 30 KOhmios.

he probado lo que me has dicho, que es lo mismo que decir que el bus va a High Speed. Bueno, no debería ser en HS teniendo en cuenta que lo quiero controlar a 125 Kbps y es de "clase B". Pero bueno, he probado y  si..he visto algo... he visto más desespero y la nada de nuevo. Me tendré que meter con la madre del chip, pa ver si reacciona con algo...

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7841
Re: Mis experiencias con el BUS CAN
« Respuesta #709 en: 14 de Enero de 2010, 08:36:46 »
Probaste de cambiarlo??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

penguin

  • Visitante
Re: Mis experiencias con el BUS CAN
« Respuesta #710 en: 14 de Enero de 2010, 09:00:05 »
si con todos los valores, 10, 30 k...todos...

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7841
Re: Mis experiencias con el BUS CAN
« Respuesta #711 en: 14 de Enero de 2010, 09:05:17 »
Me referia a si probaste de cambiar el mcp2551... :mrgreen:
Antes verifica la tension de alimentacion y el conexionado al bus y al MCP2515..
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

penguin

  • Visitante
Re: Mis experiencias con el BUS CAN
« Respuesta #712 en: 14 de Enero de 2010, 09:17:19 »
ah ! jeje, bueno , he cambiado los demas chips, creiendo que estaban fastidiados...los pics 3 y el can controller 2...asi que por etadística..no va a ser eso...no he conexionado mal ni puenteado...no se. Lo extraño es que mando mensaje can ( solo mando) y por la patilla SO del can controller hay contestacion de algo ( un monton de bits que vete tu a saber lo que es). Pero bueno, me imagino yo que eso es como si le dijese al pic " ey aqui no esta ni el lechero, envia de nuevo" o una trama de error. Vamos, que el sistema no esta fallido al 100 %. Al menos hay un par de amigos que quieren jugar..

Desconectado jalzueta

  • PIC10
  • *
  • Mensajes: 1
Re: Mis experiencias con el BUS CAN
« Respuesta #713 en: 14 de Enero de 2010, 12:23:14 »
Aquí pueden descargar la memoria de mi proyecto:

memoria pdf


Ahí se explica lo necesario sobre la normativa OBD, aunque no viene nada del código del PIC.

PD: Espero que les sea de ayuda, me ha llevado mucho tiempo hacer este proyecto y su memoria.


Hola a todos.

Estoy empezando ahora un proyecto consistente en realizar lecturas y escrituras del CAN-Bus con un PIC. Parece ser que hace cosa de unos 4 meses un miembro del foro colgó una memoria sobre un proyecto que tenía mucho que ver con esto. He intentado acceder a ella a través del link pero ya no se encuentra disponible...
Sería posible que algún miembro que disponga del documento lo volviera a colgar para que pudiera echarle un vistazo.

Muchísimas gracias de antemano.

Un cordial saludo.

penguin

  • Visitante
Re: Mis experiencias con el BUS CAN
« Respuesta #714 en: 14 de Enero de 2010, 14:48:39 »

q tal jalzueta..pues no se nada de esa memoria ( al mernos yo) y eso que estoy bastante por aqui.

Anda que si la pudiera catar yo también... seria como uno de esas respuestas a .." que es primero el huevo o la gallina?" o " que hay despues de la muerte?" o " es el espacio finito pero ilimtiado - o al rebes-). Que co ño...seria mejor que todo eso, al menos esa memoria si serviria para algo en la vida! ( en la mia desdelugo)

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7841
Re: Mis experiencias con el BUS CAN
« Respuesta #715 en: 14 de Enero de 2010, 15:49:29 »
Aquí pueden descargar la memoria de mi proyecto:

memoria pdf


Ahí se explica lo necesario sobre la normativa OBD, aunque no viene nada del código del PIC.

PD: Espero que les sea de ayuda, me ha llevado mucho tiempo hacer este proyecto y su memoria.


Hola a todos.

Estoy empezando ahora un proyecto consistente en realizar lecturas y escrituras del CAN-Bus con un PIC. Parece ser que hace cosa de unos 4 meses un miembro del foro colgó una memoria sobre un proyecto que tenía mucho que ver con esto. He intentado acceder a ella a través del link pero ya no se encuentra disponible...
Sería posible que algún miembro que disponga del documento lo volviera a colgar para que pudiera echarle un vistazo.

Muchísimas gracias de antemano.

Un cordial saludo.

No lo se, prueba de escribirle a Teleko un mensaje personal a ver si el lo saco o si es un server que borra archivos de cierto tiempo sin actividad...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7841
Re: Mis experiencias con el BUS CAN
« Respuesta #716 en: 21 de Enero de 2010, 15:11:19 »
Dejame organizarme y subire toda esa informacion aqui.
El codigo es de Microchip, asi que solo voy a subir el hex, para evitar lios con ellos, igual en su pagina esta el codigo fuente, para C18.

Pongo este esquema para cumplir con mi promesa.



Es segun el esquema de Microchip parecida (no igual) aunque funciona con su software y firmware original.


Penguin:

Mira este esquema y comparalo con el tuyo, yo encuentro que hay algunas diferencias (no muchas) y que seria muy bueno que usaras los pines de interrupcion y marcadores de bufferes llenos, tanto de recepcion como de transmicion.
Ocuparas mas lineas del PIC18F4550, pero seguramente vas a simplificar tus librerias al utilizarlos.

Espero que sirva...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

penguin

  • Visitante
Re: Mis experiencias con el BUS CAN
« Respuesta #717 en: 22 de Enero de 2010, 15:25:01 »

pretendo hacer una libreria nueva ya que usar ka que tenia por HW da problemas que nadie sabemos resolver. Bueno lo mas facil es lo tipico, spi_write, spi_read....y paro ahí porque ya con esas me da problemas.
Si miramos datasheet vemos esto :


o sea, para escribir " 3 escrituras" y para leer " escrituras"
que las hago de la siguiente forma( la funciones) :
Código: C
  1. void write_MCP2510(int direccion, int dato){
  2.  
  3.    output_low(PIN_A5);
  4.    spi_write(0x02);     // orden esribir
  5.    spi_write(direccion);     // direccion
  6.    spi_write(dato);     //  dato
  7.    output_high(PIN_A5);
  8.  

Para la de lectura, tengo varias opciones
1)
Código: C
  1. int read_returns_Data_MCP2510(int direccion){
  2.    int lectura;
  3.    output_low(PIN_A5);
  4.    spi_write(0x03);      // orden leer
  5.    spi_write(direccion);
  6.    lectura=spi_read(direccion);
  7.    output_high(PIN_A5);
  8.    return (lectura);
  9.  
2)
Código: C
  1. read_returns_Data_MCP2510(int direccion){
  2.    output_low(PIN_A5);
  3.    spi_write(0x03);      // orden leer
  4.    spi_write(direccion);
  5.    output_high(PIN_A5);  
  6.  

3)
Código: C
  1. int read_returns_Data_MCP2510(int direccion){
  2.    int lectura;
  3.    output_low(PIN_A5);
  4.    spi_write(0x03);      // orden leer
  5.    spi_write(direccion);
  6.    lectura=spi_read(); // no haria falta porque ya se ma mandado desde el spi_write
  7.    output_high(PIN_A5);
  8.    return (lectura);
  9.     }
  10.  

Uso mas bien esta ultima tercera, pero el osciloscopio solo me sale una cosa que no mando en asboluto, deberia leer unicamente del pin del MCP SO el dato que escribo.
Si me remitis al datasheet... lo tengo ya mas que sobao, la cuestion es saber en que me pierdo. Quizas el problema que tenia con la modificacion de la libreria can-mcp2510 venia de este mismo problema tambien.


leiendo el help del ccs, veo que spi_write lo que hace es escribir dato, e inmediatamente saca un dato por SO ( PIC) esta parte me pierde... si yo no quiero que saque nada...Es como si spi read fuera para poder guardar la lectura en una variable. Supongo que todo el problema viene por ahi, yo quiero usar mi propia libreria de escritura, usando spi_write().
alguien ve que sucede ahi extraño ?

penguin

  • Visitante
Re: Mis experiencias con el BUS CAN
« Respuesta #718 en: 22 de Enero de 2010, 15:30:53 »
ah perdona MGLSOFT, no he hecho referencia a tu ultimo post desde el mio. Bueno, de momento no usaré esos pines... y si me es posible hacerlo por soft, o sea, desde el registro ( q ahora no me acuerdo cual es...) específico donde te dice las interrupciones acerca de buffer lleno  lo hare, mas que nada porque el trabajo ya lo tengo hecho.
Como he dicho antes, estoy haciendo una librería nueva de momento para transmision que es mas facil. Aunque ya tengo problemas con lo mas basico, el read, como puedes ver. Espero que las demás que ya tengo hechas el "cuerpo" quitando reads y writes esté bien ( aunque read  y write sea la panacea de todas las funciones se puede decir)

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7841
Re: Mis experiencias con el BUS CAN
« Respuesta #719 en: 22 de Enero de 2010, 15:38:01 »
Yo lo veo correcto el tercer ejemplo de read.
Creo que estas muy preocupado por el software y no te preocupaste aun por el hardware.
Deberias hacer una rutina (metida en el mismo Main() actual, con todas las declaraciones de hardware actuales, que se ocupe de probar pin por pin de los comprendidos en el Bus SPI y probar que cada uno hace lo propio, es decir que pueda activarse y descativarse correctamente cada uno, cuanto mas velocidad puedas darle al proceso mejor.
Una buena opcion es toggle_bit()...

Prueba tu hardware solo comentando las lineas del main que ejecutan el programa actual, una vez hachas las pruebas descomentas tu viejo programa y comentas el segmento de programa nuevo.

Haz esas pruebas y nos comentas, con cada bit de salida ocupado en el bus SPI con el MCP2515.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything