Autor Tema: Mis experiencias con el BUS CAN  (Leído 608344 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 #1125 en: 12 de Octubre de 2011, 08:45:28 »
Los únicos registros que no son aconsejables de cambiar son los que hacen a la selección de velocidad del Bus.
El resto se puede re-configurar a gusto sin problemas, en todo caso si quedan mal configurados tendrás problemas para comunicarte o perderás comunicación con algunos nodos, pero de ahí no pasa.
Posiblemente antes de re-configurar los registros sea necesario desactivar el modulo can y luego volver a activarlo, solo por prolijidad.

Incluso la velocidad debería poder configurarse, sino como explicas que hoy existen módulos que detectan la velocidad del Bus y se auto programan a esa velocidad??
Pero ese es un tema muy fino, no digo que sea imposible para nosotros, pero por lo menos bastante complejo.
En esos buses el único que no permite autobaud es el nodo que oficia de Maestro del bus, a ese hay que configurarlo manualmente.

En todos los elementos que conozco la velocidad por defecto es de 125 KBPS, si usas librerías de Microchip, CCS, Mikroe u otras veras que todas configuran el bus asi.
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 #1126 en: 14 de Octubre de 2011, 17:01:11 »
bueno, despues de 2 largos dias haciendo el software pc y el software del pic al fin lo he conseguido, unicamente me queda implementarlo para CAN y ponerle unas cosillas mas como verificacion de datos.
Ya he hecho pruebas y graba perfectamente la .hex, la verdad es que ha sido un lio, porque este pic se programa por sectores de 64bytes, pero despues de muchas pruebas y lios ya lo hace correctamente.

aqui la placa que se encargara de la programacion por CAN, pc->usart->CAN ademas para que no quede tan sencilla le metere una memoria SPI para la deteccion y almacenamiento de errores, asi se podra consultar los errores en comunicacion, y en las placas que les he puesto deteccion de errores.


Aqui el software (no veas que trabajito aprender el C++.NET), intente en C# pero demasiado lioso como para ponerme ahora a volverlo a aprender.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7841
Re: Mis experiencias con el BUS CAN
« Respuesta #1127 en: 14 de Octubre de 2011, 17:05:21 »
EHH!!

Estas haciendo un bootloader Can ??

Me interesa, me interesa, de los pies a la cabeza !!!   :-/ :-/ :-/
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 #1128 en: 14 de Octubre de 2011, 17:14:58 »
asi es, te imaginas, programar 5 pics (5 placas) con un solo click de raton?? xD usando unicamente un rs232, o en un futuro pienso ponerle el ft232 para USB.

No es dificil, una vez he entendido como funciona un bootloader, como se programa la flash, y etc... Unicamente es implementarlo para que los datos se lean por CAN en vez de por USART.

Aun asi, me ha sido dificil aprender a programar la flash, porque no he encontrado ningun tutorial, ni ningun ejemplo claro, a base de leerme el datasheet mil veces, y de ver los bootloaders de microchip he sacado algo claro. Al igual que leer el .hex, no es tan sencillo, el  primer byte despues de cada : es el tamaño, los 2 bytes siguientes la direccion de memoria, el siguiente el tipo (memoria, desplazamiento...)

Lo unico que no he encontrado son LOS FUSES, no se donde se guardan porque en el .hex no los he encontrado, en otros .hex viejos he visto que se direcciona a la memoria 300000+ y luego se graba los fuses, pero en este .hex no viene nada de eso.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7841
Re: Mis experiencias con el BUS CAN
« Respuesta #1129 en: 14 de Octubre de 2011, 18:58:49 »
Hay una nota de aplicación de Microchip de un bootloader Can, pero no entiendo como diferencia una placa en el bus...
Si hay que desconectarlo, vale la pena ??
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 #1130 en: 14 de Octubre de 2011, 19:40:06 »
Eso ya es tu cabeza la que debe hacerlo  :lol:

Para diferenciarlo pues le pones un SID especifico por cada placa, mi sistema trabaja de la siguiente manera, los 4 bits altos indican una funcion, y los restantes indican una subfuncion.

Ejemplo para entenderlo mejor:

0xF = bootloader
0x01 = placa 1
0x00 = placa 0
0x02 = placa 2

la placa que viste en la foto con el max232 enviaria el SID 0xF01 para programar la placa 1, 0xF02 para la placa 2...., cada placa tiene su filtro (aunque tambien puedes poner un if(SID==0xF01)) la placa 1 solo lee el 0xF01 en caso de que se quiera programar la 2 se enviaria 0xF02 por lo cual las demas placas ignorarian esa peticion y solo la reconoceria la placa 2.

Ahora los datos, por ejemplo el D0 indica si es una trama de datos, o una trama de funcion, es decir, si mando 'W', es para que se escriba la flash, si mando 'R' esa placa me envia los datos que pido... Aparte tambien lo puedes hacer por orden.

placa232 envia 'B' SID=0xF01, placa 1 se configura en modo bootloader y envia 'O' para confirmar que ha pasado a ese estado.
placa232 envia 'A' + direccion, para indicar la direccion a escribir, placa 1 le responde 'F' para confirmar que ha recibido la direccion... Y asi consecutivamente hasta que se programe.

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7841
Re: Mis experiencias con el BUS CAN
« Respuesta #1131 en: 14 de Octubre de 2011, 21:41:36 »
Supongo que al final haces resetear el micro, una vez programado, asi carga el nuevo firmware, no??
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 #1132 en: 14 de Octubre de 2011, 22:04:13 »
no es necesario hacerlo, lo unico que no se puede es acceder a la memoria la cual esta siendo programada, bueno si se puede pero son todos NOP. Aun asi cuando cargas un nuevo firmware es para añadir o corregir algo, por lo cual lo ideal es resetearlo para que se cargen nuevos parametros, funciones...

Para ello le tengo puesto que al final de la programacion envie una 'X', y este hace un _asm RESET _endasm, lo que es un reset por software.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Mis experiencias con el BUS CAN
« Respuesta #1133 en: 17 de Octubre de 2011, 11:40:44 »
Bueno ya esta terminado, solo me queda probar xD es que estoy esperando unos conectores rj11 ya que los que pedi eran 4p4c y no sirven para los cables normales de telefono, por lo cual me pille unos cuantos 6p4c, unos cuantos conectores, y la herramienta para hacerme mi propio cable, y no quiero conectarlo hasta tenerlo para no hacer chapuzas xD

Pero resumo como va mi bootloader can para que os hagais una idea:

*pc envia modo bootloader->rs232->can envia el mensaje con el SID correcto.
*placa desactiva el modulo can y lo reconfigura para solo recibir datos de bootloader (filtro)->ademas responde cuando ha terminado de configurar el modulo
*rs232 envia direccion a grabar->placa can le responde
*rs232 envia datos mediante can->placa le responde cuando reciba todos los datos
*rs232 envia verificacion->placa le devuelve todos los datos que ha recibido->rs232 compara los datos con los reales->si esta OK envia escribir
*vuelve al paso de envio de direccion, hasta que termina de enviar todos los datos.
*rs232 le envia un dato para que se resetee, reset y completo.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6759
Re: Mis experiencias con el BUS CAN
« Respuesta #1134 en: 17 de Octubre de 2011, 11:49:45 »
Hola, una consulta, la verificación se hace con los datos recibidos o con los datos leídos desde la memoria de programa? Los bootloader de Microchip (el que estudie) realizan la recepción de datos (Como es por USB y éste tiene su CRC no controlan el CheckSum), graban y después leen la memoria de programa para la verificación.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Mis experiencias con el BUS CAN
« Respuesta #1135 en: 17 de Octubre de 2011, 12:31:37 »
con los de la memoria recibida, yo pienso que si los datos se reciben correctamente luego en el flash tambien se escribiran tal y como estan en el buffer, he pensado como tu dices a leer los datos de la flash una vez escritos y compararlos, pero es mas probable que se reciban los datos erroneamente que se escriban erroneamente. Aun asi no es dificil implementar la lectura de la flash para la verificacion, unicamente seria leer, guardar en un buffer, y enviarlos para compararlos.

Aunque tambien, si sabemos que los datos del buffer estan bien (comparados correctamente) unicamente es cuestion de hacer una comparacion del buffer con la flash, si esta bien, adelante, si no que envie error de grabacion.

Desconectado Juarmeve

  • PIC10
  • *
  • Mensajes: 2
Re: Mis experiencias con el BUS CAN
« Respuesta #1136 en: 26 de Octubre de 2011, 11:40:57 »
Hola a todos! Estuve leyendo el foro y esta muy bueno. Felicitaciones, se nota que saben mucho sobre el tema.
Estoy empezando con el CAN, estoy usando MikroC para programar el PIC 18F4680. No entiendo el tema de las banderas CAN_CONFIG_FLAGS . Si alguien podria explicarme por favor.
Por ejemplo en la seccion de ayuda de mikroC hay un ejemplo de utilizacion de las banderas  CAN_CONFIG_FLAGS que lo utiliza con la libreria CANInitialize. Que hace ahi? Entiendo mas o menos los parametros SJW, BRP, PHSEG1,PHSEG2,PROPSEG pero no las banderas.

init = _CAN_CONFIG_SAMPLE_THRICE &
       _CAN_CONFIG_PHSEG2_PRG_ON &
       _CAN_CONFIG_STD_MSG       &
       _CAN_CONFIG_DBL_BUFFER_ON &
       _CAN_CONFIG_VALID_XTD_MSG &
       _CAN_CONFIG_LINE_FILTER_OFF;

CANInitialize(1, 1, 3, 3, 1, init);   // initialize CAN

Agradeceria si alguien pudiese ayudarme.

Saludos a todos.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Mis experiencias con el BUS CAN
« Respuesta #1137 en: 26 de Octubre de 2011, 12:04:36 »
eso es para la configuracion de velocidad del CAN, muestreo...

Desconectado Juarmeve

  • PIC10
  • *
  • Mensajes: 2
Re: Mis experiencias con el BUS CAN
« Respuesta #1138 en: 26 de Octubre de 2011, 14:10:38 »
eso es para la configuracion de velocidad del CAN, muestreo...
Podrias ser mas especifico por favor. Cual es la funcion de cada una de las banderas citadas en le mensaje anterior?

Gracias

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Mis experiencias con el BUS CAN
« Respuesta #1139 en: 26 de Octubre de 2011, 14:27:17 »
_CAN_CONFIG_SAMPLE_THRICE =
_CAN_CONFIG_PHSEG2_PRG_ON
_CAN_CONFIG_STD_MSG
_CAN_CONFIG_DBL_BUFFER_ON = doble buffer on
_CAN_CONFIG_VALID_XTD_MSG = solo aceptar mensajes extendidos validos
_CAN_CONFIG_LINE_FILTER_OFF= filtros desactivados

mas no te puedo ayudar porque para ello deberias entender bien la configuracion.
Aqui tienes mas info:
http://www.joinville.ifsc.edu.br/~nivaldo/Microcontroladores/ling_c/mikroc_manual.pdf


Ahi puedes ver que significa cada uno, y ademas ver que bit modifica cada funcion, con el datasheet delante puedes ver que es cada cosa.