Estoy trabajando en un proyecto que utiliza un microcontrolador PIC18F26K22 y se está comportando de manera extraña.
Básicamente, a veces si usted "rebota" en la línea de reinicio (tengo un botón en él, y simplemente toco el violín), se reiniciará y algunas de las interrupciones no será funcional (en este caso, la interrupción de EUSART RX).
El botón de reinicio tiene un condensador de rebote a tierra y una resistencia de extracción (10n / 10K respectivamente).
He intentado agregar un poco de limpieza preventiva a la sección de inicio de la fuente, pero no ha ayudado. En este punto, tengo un watchdog manual que detecta la falta de tráfico en serie y desencadena manualmente otro reinicio de la CPU, momento en el que todo comienza a funcionar correctamente.
Mi suposición era que todos los registros en el chip se restablecieron a su estado de "encendido" cuando se activó un reinicio (excepto quizás el registro RCON), pero el hecho de que puedo activar de manera confiable un comportamiento extraño simplemente reiniciando el chip varias veces rápidamente me hace pensar que esto no es cierto.
¿La corrupción de registros activada por el reinicio repetido es algo común (o incluso existente) con los PIC? Estoy familiarizado con los AVRs.
Editar: consideré el cambio de rebote, pero la documentación para los estados de entrada de MCLR:
Estos dispositivos tienen un filtro de ruido en la ruta de restablecimiento de MCLR que detecta e ignora las pequeñas pulsos.
Mi suposición aquí fue que los impulsos de restablecimiento más cortos que el ancho mínimo (2 uS, para esta parte) se ignorarán.
Edición adicional: De hecho, he mirado la línea MCLR con un alcance. Es libre de rebotes y satisface completamente el tiempo mínimo de espera (el período más corto que vi fue de ~ 50 milisegundos, el tiempo mínimo de espera es de 2 microsegundos). No es un rebote de MCLR.