PieM
Senior Member
http://www.picaxeforum.co.uk/showthread.php?24891-Temps-d-ex%E9cutions-sur-PicaxeOu peut on trouver le temps des instructions
http://www.picaxeforum.co.uk/showthread.php?24891-Temps-d-ex%E9cutions-sur-PicaxeOu peut on trouver le temps des instructions
Euh...... la je ne vois pas comment tu peux faire !!! .Ca ne prendra que le temps d'une addition, d'un checksum et d'un test du timer
do
'####################################################################################################
' Commande moteur
'####################################################################################################
if b1>120 and b1<130 then 'Si b1 entre 120 et130 signifie au point milieu , donc a l'arret
pwmout pwmdiv64, B.1, 124, 0 ' rapport cyclique a 0
end if
if b1>129 then
low sens
b1= b1-130*4 'mise a l'echelle pour 130 à 250 de b1 et commande pwm de 0 à 480(pour 500)
pwmout pwmdiv64, B.1, 124, b1 'envoi du pwm sur le moteur
end if
if b1<121 then
high sens 'echange du relais pour la marche arriere
b1 = 120-b1*4 'mise a l'chelle pour 120 à 0 de b1 et commande pwm de 0 à 480(pour 500)
pwmout pwmdiv64, B.1, 124, b1 'envoi du pwm sur le moteur
end if
pinC.0 = bit0
pinC.1 = bit1
PinC.2 = bit2
pinC.3 = bit3
pinC.4 = bit4
RFin B.7,b0,b1,b2,b3,b4,b5,b6,b7 'envoi des données
loop
#PICAXE 20M2
dirsC = %00000001 'declare C.0 comme sortie
dirsB = %10010000 'declare B.4 et B.7 en sortie
symbol BUZ=C.0
symbol TX = B.4
symbol DONNEE = B.7
symbol Klax = pinC.6
symbol Phare= pinB.5
symbol Gyro= pinB.6
symbol sirene= pinB.1
symbol chgt= pinB.3
b5 = 0 'Non utilisé
b6 = 0 'Non utilisé
b7 = 0 'Non utilisé
b9 = 0 'compteur
setfreq m32 'Mets la freq à 32Mhz pour tout le programme, RFout se met a 4 mzh puis repasse à 32Mhz
high TX 'allume le TX
do
readadc C.3,b1 'Av/ar voiture
readadc C.2,b2 'Dr/ga voiture
readadc B.0,b3 'Ha/ba caméra
readadc B.2,b4 'Dr/Ga caméra
bit0 = Klax
bit1 = Phare
bit2 = sirene
bit3 = gyro
bit4 =chgt
w13 = b0+b1+b2+b3+b4 'additionne toute les valeurs analogiques + Tor
if w13 = w12 then 'compare la nouvelle valeur w13 avec l'ancienne stockée dans w12, si c'est la même rien n'as touché
inc b9 'incrememente la variable b9
if b9 > 20 then gosub absent 'quand la variable b9 arrive a 20 20 fois la meme valeur go to sub absent
else
b9 = 0 'remise a zéro si y'as changement de valeur
end if
w12 = w13 'enregistrement de w13 dans w12 pour la comparaison
low BUZ 'apres un tour eteins le BUZZER
if b8<>b0 then 'si changement d'un etat allume le BUZ
high BUZ
end if
b8=b0 'recopie la valeur b0 dans b8
rfout DONNEE,(b0,b1,b2,b3,b4,b5,b6,b7) 'envoi des données par RF
loop
'#########################################################################################################
' sous programme d'attente
'#########################################################################################################
absent:
time = 0 'Mise a zero du timer
low TX ' extinction du TX puisque pas eu de commande pendant 20 tours
do 'Lance une boucle pour verifier si rien n'as changé
if time > 10 then ' verifie le timer pour faire bipper toutes les 10 secondes
for b10 = 0 to 5 '5 bip rapide toutes les 10 secondes
high BUZ
pause 50
low BUZ
pause 50
next
time = 0 'remise du time a 0 pourrelancer les 10 secondes
end if
readadc C.3,b1 'Re-enregistre les valeurs analogiques et TORs
readadc C.2,b2
readadc B.0,b3
readadc B.2,b4
bit0 = Klax
bit1 = Phare
bit2 = sirene
bit3 = gyro
bit4 =chgt
w13 = b0+b1+b2+b3+b4 'additionne les valeurs pour comparaison
if w12 <> w13 then ' compare les valeurs si y'as eu un changement
high TX 're-allume le tx
b9 = 0 'remet le compteur a 0
return 'et repart dnas le programme principale
end if
w12 = w13 'enregistre w13 dans w12 pour compraison
loop
Effectivement, c'est bgeaucoup plus simple , je pense a des trucs super compliqués des fois ....... merci Georges je vais faire ta methode !!!Tu fais la somme des huit octets de RFOUT.
Dès que cette somme change, tu remets ton timer à 0.
Tu testes régulièrement le timer.
C'est tout.
Ok ben j'ai du pain sur la planche. je vais aller voir sur la toile des fois que j'arriverais a glanner quelques infos par ci par laUne seule méthode : Les tests.
Lol.Bigre, ce n'est plus un émetteur, c'est une boite à musique !
OuiJe sais que c'est difficile !
Tiens ca j'y avais pas encore pensé ....... ca sent le mur tout ca !!!il vaudrait mieux avoir la démarche de se demander ce qui se passe coté réception en cas de perte du signal ...
Tu, lis parfois la doc et ce qu'on t'écrit ?J'avoue ne pas trop comprendre !!! plus je diminue la periode a l'initialisation plus la voiture va vite avec un tout petit peu de "gaz".
Oui oui PieM , crois moi, je lis tout . Par contre je ne comprends pas tout !!!! .Tu, lis parfois la doc et ce qu'on t'écrit ?
'####################################################################################################
' Commande moteur
'####################################################################################################
select case b1
b1<130 then 'Si b1 entre 120 et130 signifie au point milieu , donc a l'arret
pwmduty B.1,0
b1>129 then 'En avant
'low sens
b1= b1-130*4+50 'mise a l'échelle pour 130 à 250 de b1 et commande pwm de 0 à 500 / minimum 50
b1<121 then 'En arriere
'high sens
b1= 120-b1*4 'mise a l'echelle pour 130 à 250 de b1 et commande pwm de 0 à 500
pwmduty B.1, b1 'envoi du pwm sur le moteur
euh...... j'ai fais au plus simple, pour la partie test . Si ça se trouve j'ai fais une boulette comme d'hab.Je suppose que la partie "hard" fonctionne comme il faut, hein, nottament au niveau du MOS)
Oui c'est la première valeur que j'ai essayé . tu veux dire par 1000Hz la valeur 124 pour la période ?Tu as essayé, à 1000 Hz ?
Pour etre sur de ne pas fairede betise ! Jutilise la fonction pwmOut wizard de PE . Je dois bien mettre frequence ben 2000Hz par contre horloge c'est bien 32Mhz . Duty a 20% .Fais un test à 2000Hz, et baisse progressivement (tu cales le duty à 20%, par exemple, tu baisses et tu vois quand ça te semble le mieux).
Mais si, faut juste que je sois sur que je fasse des test pendant 2 heures , alors que je me gourre totalement . Ca m'arrengerait lol !!!Désolé, je n'ai pas de méthode miracle, là.
Trés bonne idée ca , de faire un programme qui change tout seul ..... il faut juste bien suivre ou on en est, je vais rajouter un petit allumage de LED , pour bien compter savoir a quelle valeur se situe la periode et le duty .serfreq m32
for b1 = 254 to 65 step -20 'variation de 490 à 1900Hz
w1 = b1
pwmout pwmdiv64, B.1, b1, w1
pause 8000
next
serfreq m32
for b1 = 254 to 65 step -20 'variation de 490 à 1900Hz
lowLED
w1 = b1
pwmout pwmdiv64, B.1, b1, w1
pause 8000
high LED
pause 1000
next
Malheuresement je n'en suis pas encore la ; Je n'ai jamais connecter un PICAXE a un PC pour visualiser. Je crois que c'est ce que fais le debug mais je me trompe peut etre ?Je serais même pas comment le brancherFais un debug ou un sertxd et tu surveilles b1
Ben si, le nombre de boucle avec le pas je serais ou j'en suis ; A pire je n'ai compter jusqu'a 10 . de 254 à 65 par pas de 20. Je pense que ce seras beaucoup plus simple pour moi, mais pas tres ortodoxe certes . Je fais avec mes petits moyensil n'y a rien à compter ...
*Fais moi plaisir, vire le moteur, et mets une lampe (12v, qq watts), pour voir.
bonsoir GM39,le mode esclave i2c n'est accessible qu'avec les X2
Si vous utilisez un seul périphérique i2c esclave commandé par un Picaxe maître, cela nécessite une seule commande hi2csetup dans le
programme. Après l’initialisation par le hi2csetup, il est possible d’accéder à l’esclave i2c avec les commandes hi2cin et hi2cout.