Bueno, aunque esto no es un PIC, dentro lleva uno y no se donde narices poner el tema asi que lo dejo aqui
NOTA:todo lo dicho aqui esta contrastado con microchip casi todo.
Me he peleado desde hace un tiempo con este IC:
Voy a intentar poner aquí todos los problemas que me he ido encontrando en su hoja de datos, que seria mejor quemarla y hacerla completamente nueva, ya que pocas cosas están bien.
Para empezar, y lo mas importante, OLVIDAR LAS INSTRUCCIONES DE AUTOCALIBRACIÓN, ya que no funcionan puedes cumplir todo lo que te piden pero no va a funcionar. para calibrarlo debes hacer tu las cuentas y cargar directamente los registros de ganancia, factor de potencia, rango etc. pero recalco, no usar las instrucciones de autocalibración ya que siempre recibiras un NACK.
2º: muchos ejemplos están mal por ejemplo:
eso no es un 0x42 para que funcione y te devuelva un 0x06 debes cambiar el 0x42 por 0x43
Tambien resulta que estas dos cuentas dan resultados distintos
bien el documento te explica que para optener el checksum, debes de sumar todos los bytes, incluido cabecera, numero de bytes y los datos y quedarte con la parte baja que entre en un char.
bien pues eso es valido solo para la comunicacion dualwire.
Cuando trabajas en single wire, el checksum(no lo pone por ningun sitio pero te lo digo yo) lo que debes hacer para calcular el checksum es lo siguiente:
-sumas 3 veces primer byte de cabecera 0xAB ( de los otros dos te olvidas):
-sumas todos los bytes de datos y te quedas con el modulo 256 de la suma ( lo que entre en un char)
-Se invierten los bit, por ejemplo si tenemos 0x23(100011) tendremos 0x1C(011100)
- ya esto se le suma 1
así calculas el checksum en single wire, y claro como los de microchip piensan que tenemos superpoderes mentales pues no te lo dicen, para que llores haciendo sumas intentando adivinarlo, lo peor es ver que te estan llegando los datos bien y el checksum no y darte de cabezazos a ver que pasa
lo ultimo no es un fallo pero es algo que tampoco dice el datasheet, para la calibracion y la medida la intensida que hagas circular debe de estar un rato encendida, ya que si la enciendes y calibras directamente, te mide 0, esto es por el tiempo de medición que tiene el MCP39F501. Es un tiempo pequeño pero por ejemplo si desde el micro haces que circule la intensidad y calibras inmediatamente, pues te da error.
Creo que no se me olvida nada, espero que ha alguien le ayude a no querer pegarse un tiro con la hoja de datos
un saludo