Sur un X2 il faut utiliser les entrées interruption hard qui se font sur changement d'état, front montant ou descendant! (hint)
Oui , mais je préfère éviter les interruption si c'est possible, c'est bien ce que tu préconise ? car dans tous les cas , je veux voir ma liaison Rf donc ma led doit s'allumer quelques ms . En fait ca m'arrange et ainsi plus besoin d'interruption .
Sinon je retombe sur un OS . Le même qu'avec mes recherches sur le multi-maitre . c'est bizarre ; Le problème ce situe au niveau de l'i2c du 20X2. Les valeurs que je vais cherché ou que j'envoie ne correspond a rien ; peut être mon analyseur logique que j'utilise mal !!!
J'ai le start et le stop et rien au milieu ??? je commence a désespérer !
Ce programme dans son déroulement , fonctionne trés bien . il n'est pas ajusté et optimisé , j'essaye juste de tout faire fonctionné ensemble .
l'organigramme du 28X2 est ainsi :
j'attend le Rfin, une fois recu , j'ecris dans les données dans son scratchpad, pour que le 20X2 vienne les cherchés . J'allume la led pour voir le clignotement et ainsi confirmé que mon RFin n'est pas bloqué ;
Code:
[color=Blue]do
low A.0
RFin C.1[/color][color=Black],[/color][color=Purple]b0[/color][color=Black],[/color][color=Purple]b1[/color][color=Black],[/color][color=Purple]b2[/color][color=Black],[/color][color=Purple]b3[/color][color=Black],[/color][color=Purple]b4[/color][color=Black],[/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b6[/color][color=Black],[/color][color=Purple]b7 [/color][color=Green]' Recoit les donnees du RX[/color]
[color=Blue]High A.0
put [/color][color=Navy]0[/color][color=Black],[/color][color=Purple]b0[/color][color=Black],[/color][color=Purple]b1[/color][color=Black],[/color][color=Purple]b2[/color][color=Black],[/color][color=Purple]b3[/color][color=Black],[/color][color=Purple]b4[/color][color=Black],[/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b6[/color][color=Black],[/color][color=Purple]b7 [/color][color=Green]' Enregistrement des donnees dans le scratchpad[/color]
[color=Blue]loop[/color]
celui du 20X2
J'attend que la broche C.5 passe a un 1 ( relié par une R de 1K a la broche de la led du 28X2) . pas de mise a jour du RFin je compte . si le compteur deborde , c'est qu'il y perte de com, j'arrete le VHL .
Quand la broche C.5 passe à 1 donc j'ai recu un RFin .
j'attend 3 ms le temps de l'ecriture dans le scratchpad ( de la part du 28X2) , et je vais checher les données dans le scratchpad du 28X2
je met a jour
je re-attend un ordre .
Code:
[color=Navy]#PICAXE [/color][color=Black]20X2[/color]
[color=Green]'#################################################################################
'########################## Programme 20X2 Slave #############################
'#################################################################################
'######################## Configuration des I/O ########################
'b0 a b7 pour les communications[/color]
[color=Blue]Symbol [/color][color=Purple]compteur_com [/color][color=DarkCyan]= [/color][color=Purple]b10[/color]
[color=Blue]Symbol [/color][color=Purple]flag_interrupt [/color][color=DarkCyan]= [/color][color=Purple]b11[/color]
[color=Blue]Symbol led_jaune [/color][color=DarkCyan]= [/color][color=Blue]C.0
Symbol led_rouge [/color][color=DarkCyan]= [/color][color=Blue]C.2[/color]
[color=Green]'########################### Initialisation ########################[/color]
[color=Blue]setfreq m8
hi2csetup i2cmaster[/color][color=Black], [/color][color=Navy]%11000010[/color][color=Black], [/color][color=Blue]i2cfast_8[/color][color=Black], [/color][color=Blue]i2cbyte [/color][color=Green]' met le 20X2 en mode maitre et le SD20 zsclave[/color]
[color=Purple]compteur_com [/color][color=DarkCyan]= [/color][color=Navy]255 [/color][color=Green]' bloque le compteur au demarrage
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################[/color]
[color=Blue]do
do [/color][color=Green]' Boucle d'attente d'une MAJ
[/color][color=Purple]compteur_com [/color][color=DarkCyan]= [/color][color=Purple]compteur_com [/color][color=DarkCyan]+ [/color][color=Navy]1 [/color][color=DarkCyan]max [/color][color=Navy]255 [/color][color=Green]'incremente le compteur
[/color][color=Blue]if [/color][color=Purple]compteur_com [/color][color=DarkCyan]>= [/color][color=Navy]254 [/color][color=Blue]then [/color][color=Green]' a ajuster suivant le timing d'une boucle
[/color][color=Blue]gosub [/color][color=Black]arret [/color][color=Green]' perte de com donc ,arret du VHL
[/color][color=Blue]endif
loop while [/color][color=Purple]pinC.5 [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]' On reboucle tant qu'on a pas mis a jour[/color]
[color=Purple]compteur_com [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]' RAZ du compteur de communication car on a recu une com[/color]
[color=Blue]pause [/color][color=Navy]3[/color]
[color=Blue]high led_jaune
hi2cin [PLAIN][[/PLAIN][/color][color=Navy]%10100000[/color][color=Blue][PLAIN]][/PLAIN][/color][color=Black],[/color][color=Navy]0[/color][color=Black],[/color][color=Blue]([/color][color=Purple]b0[/color][color=Black],[/color][color=Purple]b1[/color][color=Black],[/color][color=Purple]b2[/color][color=Black],[/color][color=Purple]b3[/color][color=Black],[/color][color=Purple]b4[/color][color=Black],[/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b6[/color][color=Black],[/color][color=Purple]b7[/color][color=Blue]) [/color][color=Green]' Recuperation des données sur le 28X2 [/color]
[color=Blue]low led_jaune
pause [/color][color=Navy]20 [/color][color=Green]' simulation du temps de calcul et gestion des TOR[/color]
[color=Blue]hi2cout [PLAIN][[/PLAIN][/color][color=Navy]%11000010[/color][color=Blue][PLAIN]][/PLAIN][/color][color=Black],[/color][color=Navy]17[/color][color=Black],[/color][color=Blue]([/color][color=Purple]b3[/color][color=Black],[/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b7[/color][color=Blue]) [/color][color=Green]' Envoi des donnees au SD20 pour MAJ[/color]
[color=Blue]loop[/color]
[color=Green]'#################################################################################
'########################## Programme Secondaire ###########################
'#################################################################################[/color]
[color=Black]arret:[/color]
[color=Blue]do
high led_rouge
loop while [/color][color=Purple]PinC.5 [/color][color=DarkCyan]= [/color][color=Navy]0[/color]
[color=Blue]low led_rouge
return[/color]
maintenant voici un screen de l'analyseur .
La courbe rouge indique le hi2cin ........ .
on voit donc sur la ligne i2C , le départ et le stop mais rien au milieu ??? alors qu'il devrait etre censé récupéré les 8 octets dans le scratchpad du 28X2 ?
et cela est pareil durant le hi2Cout qui devrait écrire sur le SD20 . j'ai le start et le stop rien au milieu . je devrais au moins avoir des zeros non ?