Así que he estado abordando este problema con la integración de la funcionalidad I2C en mi código, que se documenta aquí en StackOverflow: enlace
TLDR: I2C plib no funcionó porque PIC12 no es un PIC18, lo resolví copiando las fuentes y cambiando los registros relevantes, con la esperanza de que funcionara ...
... y ahora me he topado con otro escollo. Cuando el programa intenta abrir una conexión I2C, aparentemente permanece atascado en el método StartI2C()
que establece SSPCON2bits.SEN
high y, como está comentado en las fuentes copiadas, espera que "se elimine automáticamente por el hardware". Estoy ejecutando esto en el simulador de MPLABX y aquí es donde está atascado, tengo un PICkit3, pero me dice que no puede interrumpir ningún punto, por lo que es inútil para realmente depurar la pieza, así que asumo lo que está sucediendo en el simulador es exactamente lo que está sucediendo en la parte (que es una suposición pobre, pero no tengo nada más en lo que confiar en este momento).
Entonces supongo que hay dos preguntas aquí, ¿el código portado debe ser compatible como está escrito ya que fue escrito para el módulo MSSP que probablemente se copie en muchas de sus partes?
y
Si se supone que el hardware borra el SSPCON2bits.SEN
bit automáticamente, ¿por qué no se borra?
Todo el código relevante relacionado con mis envoltorios y la configuración se encuentran en la pregunta vinculada de StackOverflow. Todos los códigos relevantes relacionados con los controladores I2C de Microchip se encuentran en cualquier instalación de MPLABX con XC8 bajo /path/to/xc8/install/directory/version/sources/pic18/plib/i2c/i2c_*.c
con el archivo de encabezado dentro de /path/to/xc8/install/directory/version/include/plib/i2c.h
.
ACTUALIZACIÓN: Todo el código
-
i2c.h - Código de microchip modificado para PIC12LF1552
- pastebin.com/wLUJ0xpH
-
i2c.c - Código de microchip modificado para PIC12LF1552
- pastebin.com/CTEyZETf
-
plur_i2c.h - Mi archivo de cabecera para envolver las funciones I2C de Microchip
- pastebin.com/HvphrFC8
-
plur_i2c.c - Mi archivo fuente para envolver las funciones I2C de Microchip
- pastebin.com/F95Kjrzj
-
main.c - Cuerpo principal del código que se ejecutará (no está completo)
- pastebin.com/NyTkP2pU