Hola de nuevo,
En la nota de aplicacion
AN1094 de Microchip, en el Apendice B, dice que el MPLAB ( lo que yo uso) trabaja con Intel HEX32 Format (INHX32).
Busque por la red como funcionaba este formato y conseguí descifrarlo (a excepción de lo que me ha explicado nocturno) en este post.
El problema que tengo ahora : No se como tengo que enviar los datos del PC al dsPIC y que el bootloader de ingenia los reconozca y los grabe.
Según el
datasheet de ingenia, en la pagina 9 dice como tienes que enviarle los datoa:
- 0x02 : comando (8 bits)
- Address H (8 bits)
- Address M (8 bits)
- Address L (8 bits)
- Número de bytes (8 bits)
- N bytes (8 bits)
- CRC (8 bits) <---- aqui tengo el problema.
Según dicen ellos textualmente : "The frame ends with a CRC that is computed as the 256 module of all the data value addition"
Mi ingles no es muy bueno, pero creo entender que debo sumar el valor de todos los datos (solo los datos) y luego hacer el modulo 256 (esto no lo tengo claro) y creo que es lo que ha explicado antes nuestro amigo nocturno.
Al principio hice los siguiente, sumar el valor de todos los datos (resultado 24 bits / 32 bits) y quedarme con la parte baja. No funciona.
Luego he probado a hacer lo que ha comentado Nocturno, tampoco funciona.
Sigue devolviendo un NACK (error en el CRC)
Los datos del HEX ya los he sacado e interpretado, ahora los quiero enviar por USB/Ethernet o lo que sea, ya que mi intención es que funcione por donde queramos, con solo poner un chip a la salida de la uart del dsPIC que transforme la señal a usb o ethernet (esta parte la tengo y funciona a la perfección).
¿La pregunta: Como debo enviarle los datos al bootloader de INGENIA?
Lo que yo creo:
Datos del .HEX
(aprovechando el ejemplo de nocturno)
:100200002f812000609f2000000188000000000076
Cadena al bootloader: (hexadecimal) según el datasheet de INGENIA
02 00 02 00 10 00 2f 81 20 00 60 96 20 00 00 01 88 00 00 00 00 76
Resultado del envio (recepción de NACK)
Creo que me he explicado
Gracias a todos por vuestros esfuerzos