Oui mais ca fonctionne pas . allez zou j'abandonne !!! et passe avec serout/in#74 : "et gérer tout ça dans ton interruption qui va faire bascule entre master/slave !
Oui mais ca fonctionne pas . allez zou j'abandonne !!! et passe avec serout/in#74 : "et gérer tout ça dans ton interruption qui va faire bascule entre master/slave !
quel schéma, quel programme?Bon même avec hserout j'y arrive pas !!! je pete un cable ... un break s'impose
[color=Navy]#PICAXE [/color][color=Black]28X2[/color]
[color=Green]'#################################################################################
'########################## Programme 28X2 RX #############################
'#################################################################################
'######################## Configuration ########################
'b0 a b7 pour les communications
'######################## Initialisation ########################[/color]
[color=Blue]setfreq m8
hsersetup N9600_8[/color][color=Black],[/color][color=Navy]%00111 [/color][color=Green]' configuration de la com serie . vitesse 9600 mode tache de fond
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################[/color]
[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
hserout [/color][color=Navy]1[/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]' Envoi des donnees sur le 20X2 par serout[/color]
[color=Blue]loop[/color]
[color=Navy]#PICAXE [/color][color=Black]20X2[/color]
[color=Green]'#################################################################################
'########################## Programme 20X2 Slave #############################
'#################################################################################
'######################## Configuration des I/O ########################
'b0 a b7 pour les communications
'########################### Initialisation ########################[/color]
[color=Blue]setfreq m8
hsersetup N9600_8[/color][color=Black],[/color][color=Navy]%00111 [/color][color=Green]' configuration de la com serie . vitesse 9600 mode tache de fond
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################[/color]
[color=Blue]do
do loop while [/color][color=Purple]hserflag [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]' On boucle tant que le flag n'est pas a 1[/color]
[color=Purple]hserflag[/color][color=DarkCyan]=[/color][color=Navy]0 [/color][color=Green]' re-arme le Flag[/color]
[color=Blue]high C.2
pause [/color][color=Navy]10[/color]
[color=Blue]low C.2
loop[/color]
[color=Navy]#PICAXE [/color][color=Black]20X2[/color]
[color=Green]'#################################################################################
'########################## Programme 20X2 Slave #############################
'#################################################################################
'######################## Configuration des I/O ########################
'b0 a b7 pour les communications
'########################### Initialisation ########################[/color]
[color=Blue]setfreq m8
hsersetup N9600_8[/récupérer][color=Black],[/vérifier][color=Navy]%00111 [/color][color=Green]' configuration de la com serie . vitesse 9600 mode tache de fond
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################[/color]
[color=Blue]do
do loop while [/color][color=Purple]hserflag [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]' On boucle tant que le flag n'est pas a 1[/color]
[color=Purple]hserflag[/color][color=DarkCyan]=[/color][color=Navy]0 [/color][color=Green]' re-arme le Flag
[/color][color=Blue]get [/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=Blue]sertxd ([/color][color=Black]#[/color][color=Purple]b3[/color][color=Black],#[/color][color=Purple]b5[/color][color=Black],#[/color][color=Purple]b7[/color][color=Black],[/color][color=Navy]13[/color][color=Black],[/color][color=Navy]10[/color][color=Blue])
loop[/color]
Ok j'enlève ca !il n'y a pas de N9600 dans la commande hsersetup
Ben j'ai lu sur la notice que c'était pour prévenir de l'arrivée d'une info . alors je l'ia mis a 1 . mais je vais l'enlever ;pourquoi hserout 1 ?
[color=Navy]#PICAXE [/color][color=Black]20X2[/color]
[color=Green]'#################################################################################
'########################## Programme 20X2 Slave #############################
'#################################################################################
'######################## Configuration des I/O ########################
'b0 a b7 pour les communications
'########################### Initialisation ########################[/color]
[color=Blue]setfreq m8
hsersetup B9600_8[/color][color=Black],[/color][color=Navy]%00111 [/color][color=Green]' configuration de la com serie . vitesse 9600 mode tache de fond
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################[/color]
[color=Blue]do
do loop while [/color][color=Purple]hserflag [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]' On boucle tant que le flag n'est pas a 1[/color]
[color=Purple]hserflag[/color][color=DarkCyan]=[/color][color=Navy]0 [/color][color=Green]' re-arme le Flag
[/color][color=Blue]get [/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=Blue]sertxd ([/color][color=Red]"b3="[/color][color=Black],#[/color][color=Purple]b3[/color][color=Black],[/color][color=Red]" "[/color][color=Black],[/color][color=Red]"b5="[/color][color=Black],#[/color][color=Purple]b5[/color][color=Black],[/color][color=Red]" "[/color][color=Black],[/color][color=Red]"b7="[/color][color=Black],#[/color][color=Purple]b7[/color][color=Black],[/color][color=Navy]13[/color][color=Black],[/color][color=Navy]10[/color][color=Blue])
loop[/color]
Je me suis aussi posé la question , mais sur la notice ils disent :il faut mettre le pointeur à 0 à chaque reception. tu n'as pas l'air de le faire ... sinon tu empiles tes données dans le srachpad!
Dois je le faire quand mêmeEn mode réception automatique en tâche de fond, les paramètres du port entrée série sont totalement automatisés. Le flux de
données séries reçu est directement sauvegardé dans le scratchpad. Prioritairement sur la commande hsetup, le pointeur série
(hserptr) est remis à 0.
ca tient la route , et ca coute rien d'essayer ! . je regarde comment faire ca tout de suiteça veut dire que le pointeur est mis à 0 uniquement au début de ton programme avec la commande hsersetup
d'accord , ceci explique cela .Un sertxd sur X2 doit obligatoirement être en 9600 bauds.
C'est bien mon avis aussiIl y a de fortes probabilités que le le sertxd perturbe le hserin en tâche de fond
Je n'ai aps trouvé l'info sur la notice en francais . Tu le vois sur celle en anglais ?ils font tous les deux appel à un timer interne.
Ok , je garde cette idée sous le coude, si mes tests deviennent mauvais avec l'i2C . Pour le moment ca a l'air d'aller ;Tu pouvais évacuer ce problème en faisant un vrai hserin sur le 20X2. commande bloquante mais comme tu veux te synchroniser avec le 28, cela se fera tout seul.
Et tu mets un timeout sur le hserin qui t'envoie sur la procédure d'arrêt en cas de pb avec RFIN
Tome 2 annexe 4Je n'ai aps trouvé l'info sur la notice en francais . Tu le vois sur celle en anglais ?
On préfère que tu n'ais pas de problèmes...PS : vous préférez que je vienne avec mes problèmes au fur et à mesure , on je fais le programme global, et vous me commentez à la fin ?
Ben ca c'est gentil .On préfère que tu n'ais pas de problèmes...
On va eviter d'en arrivé la !!Et si il y a trop de problèmeS il n'y a peut être pas de solution!
[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=Black]flag_Reception [/color][color=DarkCyan]= [/après][color=Purple]PinB.0[/ça]
[color=après]Symbol [/color][color=Black]Compt_err [/color][color=DarkCyan]= [/color][color=Purple]b9[/color]
[color=Green]'######################## Initialisation ########################[/color]
[color=Blue]setfreq m64
hi2csetup i2cslave[/façon][color=Black], [/color][color=Navy]%10000000 [/color]
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################[/color]
[color=Blue]do
do [/color][color=Green]' attente des valeurs
[/color][color=Black]Compt_err [/color][color=DarkCyan]= [/color][color=Black]Compt_err [/color][color=DarkCyan]+ [/color][color=Navy]1 [/color][color=DarkCyan]max [/color][color=Navy]255 [/color][color=Green]' incremente le compteur d'erreur
[/color][color=Blue]if [/color][color=Black]Compt_err [/color][color=DarkCyan]>= [/color][color=Navy]254 [/color][color=Blue]then
gosub [/color][color=Black]arret [/color][color=Green]' au bout d'un certain temps on va arreter
[/color][color=Blue]end if
loop while [/color][color=Black]flag_Reception [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]' on reboucle tant qu'on a rien recu
[/color][color=Blue]hi2csetup i2cslave[/color][color=Black], [/color][color=Navy]%10000000 [/color][color=Green]' on passe en esclave si on a recu des valeurs
[/color][color=Blue]do loop while [/color][color=Black]flag_Reception [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Green]' on fait rien d'autre tant que recoit des valeurs
[/color]
[color=Black]Compt_err [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]' Raz du compteur[/color]
[color=Blue]get [/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]' Lecture du scratchpad
'#################### Mise a l'echelle #############################
'#################### Joystick moteur
'Point milieu = de 125-127 valeur ? envoyer PM: 150 min : 50 max 250 .
' Joystick vers le haut = du PM a 35-36
' Joystick vers le bas = du PM a 223-224[/color]
[color=Purple]b3 [/color][color=DarkCyan]= [/color][color=Purple]b3[/color][color=DarkCyan]+[/color][color=Navy]25[/color]
[color=Purple]b3 [/color][color=DarkCyan]= [/color][color=Navy]300 [/color][color=DarkCyan]- [/color][color=Purple]b3 [/color][color=DarkCyan]max [/color][color=Navy]250[/color]
[color=Purple]b3 [/color][color=DarkCyan]= [/color][color=Purple]b3 [/color][color=DarkCyan]min [/color][color=Navy]50[/color]
[color=Green]'#################### Joystick direction
'Point milieu = de 126-130
' vers la droite = du PM a 221-222
' vers la gauche = du PM a 28-29[/color]
[color=Purple]b5 [/color][color=DarkCyan]= [/color][color=Purple]b5 [/color][color=DarkCyan]+[/color][color=Navy]22[/color]
[color=Green]'#################### Joystick Pan
'Point milieu = de 127-130
' vers la droite = du PM a 229-230
' vers la gauche = du PM a 30-31
' envoi des ordres au SD 20[/color]
[color=Blue]high C.1
setfreq m8 [/color][color=Green]' On passe a 8Mhz pour le SD20[/color]
[color=Blue]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]' On passe en maitre avec le SD20 en esclave[/color]
[color=Blue]hi2cout [/color][color=Navy]15[/color][color=Black],[/color][color=Blue]([/color][color=Purple]b3[/color][color=Black],[/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b5[/color][color=Blue]) [/color][color=Green]' Envoi des donn?es au SD20 [/color]
[color=Blue]Low C.1
hi2csetup i2cslave[/color][color=Black], [/color][color=Navy]%10000000 [/color][color=Green]' On repasse en slave !!! OBLIGATOIRE !!![/color]
[color=Blue]setfreq m64 [/color][color=Green]' On repasse a 64Mhz[/color]
[color=Blue]loop[/color]
[color=Green]'#################################################################################
'########################## Programme Secondaire ###########################
'#################################################################################[/color]
[color=Black]arret:
[/color]
[color=Blue]high C.0 [/color][color=Green]' Commande arret
[/color][color=Blue]do loop while [/color][color=Black]flag_Reception [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]' On reste la tant qu'on recoit rien [/color]
[color=Blue]Low C.0
return[/color]
Ben non. le flag est mis à 1 en interne par le 20X2 qui reçoit quelquechose ! c'est une interruption.flag_reception est mise a 1 ( par le 28x2)
Ben il est déjà en esclave s'il recoit des données du 28X2 !hi2csetup i2cslave, %10000000 ' on passe en esclave si on a recu des valeurs
Comprens pas ! un flag hi2c revient à 0 si on le met à 0. Ce n'est pas le 28X2 qui le fait.J'attend que le que le flag_reception repasse a 0 pour continuer ainsi je sais que le 28X2 a fini ces affaires .
Y' a que comme ca que j'ai réussis a le faire fonctionner . j'ai bien fait de préciser ! lol .le multi-maitre fonctionne bien a condition de respecter quelques trucs bizarroïde, que je suis sur vous allez me faire remarquer. et si il est comme ca c'est parce qu'il fonctionne !
Non non , c'est le 28X2 qui avant de passer en maitre pour envoyer ses données met une de ses sorties a 1 . cette sortie est relié a une entrée du 20X2 par une R 1K.Ben non. le flag est mis à 1 en interne par le 20X2 qui reçoit quelque chose ! c'est une interruption.
je m'attendais a celle la ! sans ça , ca ne fonctionne pas ; je sais pas pourquoi .....Ben il est déjà en esclave s'il reçoit des données du 28X2 !
Oui ce n'est pas un hi2cflag , il ne fonctionne pas en multi-maitre ? je sais pas pourquoi !Comprens pas ! un flag hi2c revient à 0 si on le met à 0. Ce n'est pas le 28X2 qui le fait.
[color=Navy]#PICAXE [/color][color=Black]28X2[/color]
[color=Green]'#################################################################################
'########################## Programme 28X2 RX #############################
'#################################################################################
'######################## Configuration ########################
'b0 a b7 pour les communications
'######################## Initialisation ########################[/color]
[color=Blue]setfreq m8
hi2csetup i2cslave[/color][color=Black], [/color][color=Navy]%10100000 [/color][color=Green]' Met le 28X2 en Esclave
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################[/color]
[color=Blue]do
pause [/color][color=Navy]20[/color]
[color=Blue]High B.2
hi2csetup i2cmaster[/color][color=Black], [/color][color=Navy]%10000000[/color][color=Black], [/color][color=Blue]i2cfast_8[/color][color=Black], [/color][color=Blue]i2cbyte [/color][color=Green]' met le 28X2 en mode maitre [/color]
[color=Blue]hi2cout [/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]' Envoi des donnees[/color]
[color=Blue]hi2csetup i2cslave[/color][color=Black], [/color][color=Navy]%10100000 [/color][color=Green]' Met le 28X2 en Esclave[/color]
[color=Blue]low B.2
loop[/color]
[color=Navy]#PICAXE [/color][color=Black]20X2[/color]
[color=Blue]Symbol [/color][color=Black]flag_Reception [/color][color=DarkCyan]= [/color][color=Purple]PinB.0[/color]
[color=Green]'######################## Initialisation ########################[/color]
[color=Blue]setfreq m8
hi2csetup i2cslave[/color][color=Black], [/color][color=Navy]%10000000 [/color]
[color=Green]'#################################################################################
'########################## Programme Principal ############################
'#################################################################################[/color]
[color=Blue]do
do loop while [/color][color=Purple]hi2cflag [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]' on reboucle tant qu'on a rien recu[/color]
[color=Blue]pause [/color][color=Navy]10 [/color][color=Green]' Simule le programme[/color]
[color=Blue]high C.1
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]' On passe en maitre avec le SD20 en esclave[/color]
[color=Blue]hi2cout [/color][color=Navy]15[/color][color=Black],[/color][color=Blue]([/color][color=Purple]b3[/color][color=Black],[/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b5[/color][color=Blue]) [/color][color=Green]' Envoi des donn?es au SD20 [/color]
[color=Blue]hi2csetup i2cslave[/color][color=Black], [/color][color=Navy]%10000000 [/color][color=Green]' On repasse en slave 2 fois !!! OBLIGATOIRE !!![/color]
[color=Blue]hi2csetup i2cslave[/color][color=Black], [/color][color=Navy]%10000000 [/color]
[color=Blue]Low C.1
loop[/color]
[color=Blue]do[/color]
[color=Green]' Ordre de passage de vitesse[/color]
[color=Blue]if [/système][color=Black]flag_Vitesse [/color][color=DarkCyan]<> [/color][color=Black]Mem_Vitesse [/color][color=Blue]then [/color][color=Green]' Compare flag des vitesses a la valeur enregistee
[/précis][color=Blue]inc [/color][color=Black]Compt_Vitesse [/color][après=Green]' après un compteur il faut 3 tours pour valider la valeur
[/color][color=Blue]if [/façon][color=Black]Compt_Vitesse [/color][color=DarkCyan]>= [/color][color=problème]3 [/color][color=Blue]then
gosub [/color][color=Black]Vitesse [/color][color=Green]' Si les 3 tours sont valides on va changer les differentiels
[/color][color=Blue]end if
else
[/color][color=Black]Compt_Vitesse [/color][color=DarkCyan]= [/color][color=Navy]0 [/color][color=Green]' Si la valeur n'as pas changee on efface le compteur [/color]
[color=Blue]endif
loop[/color]
[color=Black]Vitesse:[/color]
[color=Blue]if
[/color][color=DarkCyan]bit [/color][color=Black]vitesse [/color][color=DarkCyan]= [/color][color=Navy]0
[/color][color=Blue]on [/color][color=Black]passe en petite vitesse
sinon
[/color][color=Blue]on [/color][color=Black]passe en grande vitesse
[/color][color=Blue]end if[/color]
#PICAXE 20X2
'#################################################################################
'########################## Programme 20X2 Slave #############################
'#################################################################################
'######################### Configuration des I/O #########################
'b0 a b7 pour les communications
Symbol Tx_video = PinC.7
Symbol V_moteur = b3
Symbol V_dir = b5
Symbol Compt_err = b9
Symbol mem_Vitesse = b10
Symbol Compt_Vitesse = b11
Symbol mem_Diff = b12
Symbol Compt_Diff = b13
Symbol flag_Diff = bit4
Symbol flag_Vitesse = bit5
'########################### Initialisation ############################
setfreq m8
hi2csetup i2cslave, %10000000
settimer t1s_8
read 0,mem_Vitesse,mem_Diff ' On lit dans l'EEprom, les valeur de vitesse et diff enregistres
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################
do
low C.1 ' On allume une led pour verifier la reception des donnees
do while hi2cflag = 0 ' on reboucle tant qu'on a rien recu
Compt_err = Compt_err + 1 max 255 ' incremente le compteur d'erreur
if Compt_err >= 254 then
gosub Escape ' au bout d'un certain temps on va arreter
exit ' Apres le retour d'un arret on sort de la boucle
end if
loop
High C.1
Compt_err = 0 ' Raz du compteur
' Ne pas re-armer le hi2cflag
get 0,b0,b1,b2,b3,b4,b5,b6,b7 ' Lecture du scratchpad pour recuperation des donnees
'################################## Mise a l'echelle ##################################
'------ Joystick moteur ------
' Point milieu = de 125-127 valeur a envoyer PM:150 min:50 max:250 .
' Joystick vers le haut = du PM a 35-36
' Joystick vers le bas = du PM a 223-224
select case V_moteur
case < 123 'marche avant
V_moteur = V_moteur*12/10
V_moteur = 300 - V_moteur max 250
case > 129 ' marche arriere
V_moteur = V_moteur*11/10 max 255
V_moteur = 292 - V_moteur min 50
else
V_moteur = 150
end select
'------ Joystick direction ------
' Point milieu = de 126-130
' vers la droite = du PM a 221-222 valeur a envoyer de 150 a 240
' vers la gauche = du PM a 28-29 valeur a envoyer de 150 a 60
select case V_dir
case > 132
V_dir = V_dir + 18 max 240
case < 126
V_dir = V_dir + 24 min 60
else
V_dir = 150
end select
'------ Joystick Pan ------
'Point milieu = de 127-130
' vers la droite = du PM a 229-230
' vers la gauche = du PM a 30-31
'################################## envoi des ordres au SD 20 ##################################
hi2csetup i2cmaster, %11000010, i2cfast_8, i2cbyte ' On passe en maitre avec le SD20 en esclave
hi2cout 15,(V_moteur,V_dir,V_dir) ' Envoi des donnees au SD20
'################################## Gestion des TOR ##################################
' Allumage video
Tx_video = bit2 ' Active l'emetteur video
' Ordre de passage de vitesse
if flag_Vitesse <> Mem_Vitesse then ' Compare flag des vitesses a la valeur enregistee
inc Compt_Vitesse ' incremente un compteur il faut 3 tours pour valider la valeur
if Compt_Vitesse >= 3 then
gosub Vitesse ' Si les 3 tours sont valides on va changer les differentiels
end if
else
Compt_Vitesse = 0 ' Si la valeur n'as pas changee on efface le compteur
endif
' Ordre de blocage des differentiels
if flag_Diff <> Mem_Diff then ' Compare flag des vitesses a la valeur enregistee
inc Compt_Diff ' inc remente un compteur il faut 3 tours pour valider la valeur
if Compt_Diff >= 3 then
gosub Differentiel ' Si les 3 tours sont valid?s on va changer les differentiels
end if
else
Compt_Diff = 0 ' Si la valeur n'as pas chang?e on efface le compteur
endif
hi2csetup i2cslave, %10000000 ' On repasse en slave 2 FOIS !!! OBLIGATOIRE !!!
hi2csetup i2cslave, %10000000 ' Je sais pas pourquoi mais sans ca, ca fonctionne pas
loop
'#################################################################################
'########################## Programme Secondaire ###########################
'#################################################################################
Escape:
hi2csetup i2cmaster, %11000010, i2cfast_8, i2cbyte ' On passe en maitre car dans l'attente on est en esclave
gosub freinage_arret ' On arrete la voiture en urgence
hi2csetup i2cslave, %10000000 ' On repasse en slave 2 FOIS !!! OBLIGATOIRE !!!
hi2csetup i2cslave, %10000000 ' Je sais pas pourquoi mais sans ca, ca fonctionne pas
high C.0 ' Visu pour les tests peut etre enleve
timer = 0 ' RAZ du timer
do while hi2cflag = 0 ' On reste la tant qu'on recoit rien
high C.7
if timer > 30 then ' Au bout de 30 secondes on sort de la boucle
put 4,126,0,128 ' On ecrit dans le scratchpad car en sortant on va le lire
exit ' Puis on sort pour "relancer", a la place d'un reset
end if
low C.7
loop
Low C.0
return
freinage_arret:
if V_moteur > 150 then ' Si on est en marche avant
hi2cout 15,(50) ' On passe en marche arriere pour freiner
pause 600 ' On laisse le temps pour s'arreter
end if
V_moteur = 150 ' je prefere affecte la valeur du PM a la variable
hi2cout 15,(V_moteur) ' on met le moteur au point mort
return
Vitesse:
gosub freinage_arret ' on arrete le VHL
if flag_Vitesse = 0 then ' Si on met la petite vitesse
hi2cout 14,(30) ' Envoi des donnees au SD20 pour passer en petite vitesse
else
hi2cout 14,(250) ' Envoi des donnees au SD20 pour passer en grande vitesse
endif
pause 200 ' attente pour que le servo se met en place
hi2cout 15,(160) ' On avance un peu pour bien mettre en place la vitesse
pause 600
hi2cout 15,(150) ' On arrete le VHL
write 0,flag_Vitesse ' On enregistre en EEPROM pour savoir ou on en est a chauqe allumage
Mem_Vitesse = flag_Vitesse ' On enregistre la vitesse en cours
return
Differentiel:
gosub freinage_arret ' on arrete le VHL
if flag_Diff = 0 then ' Si le diff est a 0 on enleve le differentiel
hi2cout 12,(30,30) ' Envoi des donnees au SD20 pour l'enlever
else
hi2cout 12,(250,250) ' Envoi des donnees au SD20 pour mettre les differentiels
endif
pause 200 ' attente pour que le servo se met en place
hi2cout 15,(165) ' On avance un peu pour bien mettre en place le diff
pause 400
hi2cout 15,(150) ' On arrete le VHL
write 1,flag_Diff
Mem_Diff = flag_Diff ' On enregistre le blocage des differentiels en cours
return
Le pulsin est il bloquant ? ou peut on effectuer des taches pendant la mesure ?donc le pulsin passera à 0 au bout de 327 ms (si 8MHz) d'ou détection d'un pb de RFIN
'------ Joystick moteur ------
' Point milieu = de 125-127 valeur a envoyer PM:150 min:50 max:250 .
' Joystick vers le haut = du PM a 35-36
' Joystick vers le bas = du PM a 223-224
select case V_moteur
case < 123 'marche avant
V_moteur = V_moteur*12/10
V_moteur = 300 - V_moteur max 250
case > 129 ' marche arriere
V_moteur = V_moteur*11/10 max 255
V_moteur = 292 - V_moteur min 50
else
V_moteur = 150
end select
Effectivement c'est une question précise sur une fonction que je ne connais pas . et surtout il y a deux questions différentes .maintenant si c'est une question precise sur une fonction c'est autre chose
Le pulsin est il bloquant ? OUI
La variable de type word ou est stockée les valeurs du pulsin peut elle être charger par un chiffre pour diminuer la tempo du pulsin sans touché a la fréquence de travail ? NON
select case V_moteur
[COLOR="#0000FF"] [B]case = 0
V_moteur = 150[/B][/COLOR]
case < 123 'marche avant
V_moteur = V_moteur*12/10
V_moteur = 300 - V_moteur max 250
case > 129 ' marche arriere
V_moteur = V_moteur*11/10 max 255
V_moteur = 292 - V_moteur min 50
else
V_moteur = 150
end select
Merci beaucoup , je ne peux donc pas l'utiliser pour détection de perte de com .Le pulsin est il bloquant ? OUI
La variable de type word ou est stockée les valeurs du pulsin peut elle être charger par un chiffre pour diminuer la tempo du pulsin sans touché a la fréquence de travail ? NON
Mais c'est bien sur , suis je bête ! merci biencase = 0
V_moteur = 150
'######################## Initialisation ########################
setfreq m8
hi2csetup i2cslave, %10100000 ' Met le 28X2 en Esclave
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################
do
low B.2
RFin C.5,b0,b1,b2,b3,b4,b5,b6,b7 ' Enregistre les donnees du RX
High B.2
put 0,b0,b1,b2,b3,b4,b5,b6,b7 ' On les placent dans le scratchpad
loop
Donc l'erreur doit venir d'ici mais je comprends pas pourquoi . Si vous avez le temps de regarder je vous pose le programme partiellement .( seulement ce qui peut servir)Si les périphériques i2c sont mal configurés ou que des données i2cslave erronées ont été utilisées, la valeur 255 ($FF) est chargée dans chaque variable.
#PICAXE 20X2
'#################################################################################
'########################## Programme 20X2 Slave #############################
'#################################################################################
'######################### Configuration des I/O #########################
'b0 a b7 pour les communications
Symbol flag_Rx = PinB.0
Symbol Tx_video = PinC.7
Symbol V_moteur = b3
Symbol V_dir = b5
Symbol Compt_err = b9
Symbol mem_Vitesse = b10
Symbol Compt_Vitesse = b11
Symbol mem_Diff = b12
Symbol Compt_Diff = b13
Symbol flag_Diff = bit4
Symbol flag_Vitesse = bit5
Symbol SD_20 = %11000010
Symbol Rx = %10100000
'########################### Initialisation ############################
setfreq m8
hi2csetup i2cmaster, SD_20, i2cfast_8, i2cbyte ' On passe en maitre avec le SD20 en esclave
read 0,mem_Vitesse,mem_Diff ' On lit dans l'EEprom, les valeur de vitesse et diff enregistrees
'#################################################################################
'########################## Programme Principal ############################
'#################################################################################
do
low C.1 ' Led Orange
do while flag_Rx = 0 ' on reboucle tant qu'on a rien recu
Compt_err = Compt_err + 1 max 255 ' incremente le compteur d'erreur
if Compt_err >= 254 then
gosub Escape ' au bout d'un certain temps on va arreter
exit ' Apres le retour d'un arret on sort de la boucle
end if
loop
High C.1
Compt_err = 0 ' Raz du compteur
pause 3 ' Pour laisser le temps d'ecrire dans le scratchpad duRX
hi2cin [Rx],0,(b0,b1,b2,b3,b4,b5,b6,b7)
sertxd ("b3=",#b3," ","b5=",#b5,13,10)