J’utilise un PIC 12F1572 pour envoyer une trame de commande d'un module HC-12 à l’aide de boutons M / A câblés en Pull Up et détectés par l'interruption IOC vers un autre module HC-12 qui doit assurer la mise en marche ou l’arrêt d’un relais.
Je constate que l’interruption se déclenche de façon aléatoire à périodicité variable entre une à trois fois par jour sans raison apparente.
Pour être certain que c’est bien la trame ‘’CMDM’’ qui est émise par l’Uart j’ai mis la liaison série sous surveillance.
C'est bien l'interruption IOC sur l'entrée RA4 qui se déclenche avec Pull Up internes ou externes.
Pour le moment j’ai viré l’interruption IOC, je lis les boutons par la fonction Button et plus de problème.
Etant curieux, j’aimerai bien comprendre ce qui c’est passé et où se trouve mon éventuelle erreur.
Extrait du code en Mikrobasic:
Code : Tout sélectionner
Sub procedure interrupt
if IOCAF.4 = 1 then 'Bouton marche
DemM = 1 ‘Mém bouton marche appuyé
IOCAF.4 = 0 'RAZ interrupt flag
end if
if IOCAF.5 = 1 then 'Bouton arrêt
DemA = 1 ‘Mém bouton arrêt appuyé
IOCAF.5 = 0 'RAZ interrupt flag
end if
end sub
____________________________________________________
Main :
IOCAN = $30 ' RA4 et RA5 interrupt on falling edge
INTCON.IOCIE = 1 ‘ IOC enable
____________________________________________________
while (TRUE)
if DemM = 1 then
DemM = 0
Uart1_Write_Text("CMDMFI") ' Envoi commande CMDM (Marche) (FI = délimiteur)
end if