sur le projet Chaudiere de Babar64
je decouvre ce probleme :Aleas de reconnaissance sur l'etat d'un Switch particulier par rapport à la detection d'un appui de touche (SW0 ..SW4)
permettant un aiguillage vers des menus , aiguillages conditionnés aussi par la duree d'appui sur le BP (switch)
lien
schema
J' ai refait un autre projet simplifié pour montrer ce probleme
18F27K42_xc8_test_INT0_5_BP_Uart1_2022-07.X (package et *.hex dans le zip joint)
AUCUN probleme sur SW0,SW1,SW3,SW4 , probleme uniquement sur SW2
par ailleurs j'ai fait un autre test simple , en mode pooling du portB .. AUCUN probleme sur SW2 (RB3)
J' ecarte donc un probleme Hardware.
le suivi sur terminal montre bien les aleas sur SW2 ....
or la valeur de k represente bien l'état correct de SW2
c'est donc l'image issue de IOCBF qui est altérée ... est censé representé le bit qui est passé à Zero...
IOCBN=0b00111111; // detection front descendant sauf RB6 RB7 affecté à ICSP
Projet MPLABX : 18F27K42_xc8_test_IT_Uart1
Version : 2023-0716
Compile le Jul 16 2023 a 11:26:09 UTC
avec version XC8 : 2360
Verif. chronometre SMT1_Init(4); (500Khz) résolution+-2µS avec delay 1000mS
# Duree = 999
Via UART1 sur Port Virtuel sur Terminak YAT COM35 115200bds
Test Interrupt INT0 sur 5 BP PORT B b1=SW0,b2=SW1,b3=SW2,b4=SW3, b5=SW4
via un OU à diodes sur PIN RB0
TMR0 initialise sur 10 sec , en mode pooling !
00000
00001
00002
*# 00003
Duree = 1300 mS , BP=0X01, Menu=0 k=0X0001 SW0
00004
00005
*# 00006
Duree = 1900 mS , BP=0X02, Menu=1 k=0X0002 SW1
SW1 Menu 1
SW1 Toogle Change Mode CONFORT / ECO
mode : Ec et MOD_frc desactive
10 sec ecoulée ..
00007
*# 00008
Duree = 1800 mS , BP=0X0C, Menu=0 k=0X000 <----- BAD
00009
00010
00011
00012
*# 00013
Duree = 2000 mS , BP=0X02, Menu=1 k=0X0002 SW1
SW1 Menu 1
SW1 Toogle Change Mode CONFORT / ECO
mode : Cf et MOD_frc desactive
10 sec ecoulée ..
00014
00015
00016
*# 00017
Duree = 1600 mS , BP=0X04, Menu=2 k=0X0004 SW2 <------ OK
SW2 Menu 2
SW2 Incr consigne forcee CFT : 19.50
*# 00018
Duree = 1600 mS , BP=0X08, Menu=3 k=0X0008 SW3
SW3 Menu 3
SW3 Decr consigne forcee CFT : 19.00
10 sec ecoulée ..
00019
*# 00020
Duree = 2200 mS , BP=0X10, Menu=4 k=0X0010 SW4
SW4 Menu 4
00021
00022
00023
00024
00025
10 sec ecoulée ..
00026
00027
00028
*# 00029
Duree = 1500 mS , BP=0X0C, Menu=0 k=0X0004 <----- BAD
00030
00031
*# 00032
Duree = 1500 mS , BP=0X0C, Menu=0 k=0X0004 <----- BAD
10 sec ecoulée ..
00033
00034
*# 00035
Duree = 1600 mS , BP=0X0C, Menu=0 k=0X0004 <----- BAD
00036
*# 00037
Duree = 1500 mS , BP=0X04, Menu=2 k=0X0004 SW2 <------ OK
SW2 Menu 2
SW2 Incr consigne forcee CFT : 19.50
00038
*#
10 sec ecoulée ..
00039
Duree = 1200 mS , BP=0X04, Menu=2 k=0X0004 SW2 <------ OK
SW2 Menu 2
SW2 Incr consigne forcee CFT : 20.00
00040
00041
Je conçois bien que je n'utilise pas ici, les interrupt individuelles (non validée car IOCIE=0)
mais INT0 puisque RB0 reçoit le front descendant de n'importe quel switch parmi SW0..SW4
Il y a un grumaux dans la Francine ...Pas assez clair , ce diagramme
Quid de l'entrée Q2 ?
le Flag IOCBFx , monté si detection front descendant sur RB3, devrait etre une sortie ?


pas la valise en carton !)