Ben oui, mais quelle durée ces pauses, donne le code avec les pauses, sans "multitâches", ça ira plus vite.
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Ce que je veux moi c'est faire clignoter le néon tout en continuant de recevoir les info en RF en temps réel. Avec ce code on est obligé d'attendre la fin des pauses pour recommencer à recevoir les infos. Et d'ailleurs, si rfin est bloqué, ça ne clignote même plus... :/
Ce code est permet de commander un seul néon, mais il devra pouvoir le faire pour deux, alors imaginez si je veux faire clignoter les deux...
MerciCode:; initialisation high B.1 ; led montrant le mise en marche du ?C pwmout pwmdiv4, b.4, 99, 0 ; 2500Hz at 50% @ 4MHz main: gosub reception : gosub Choix1 ; commande des neons en consequence goto main ;***************************Labels********************************** reception: low b.1 rfin C.3,b0,b1,b2,b3,b4,b5,b6,b7 ; acquisition des informations high b.1 ; montre la reception des informations return Choix1:; encadre le rapport du canal1 pour determiner le mode de fonctionnement demande if b0>=0 and b0<25 then ; eteint canal1 ; high c.4 : low c.1 : gosub eteint1 ; eteint1 elseif b0>=25 and b0<50 then ; allume canal1 ; low c.4 : high c.1 : gosub allume1 elseif b0>=50 and b0<75 then gosub rapide1 elseif b0>=75 and b0<100 then gosub lent1 endif return ; labels des differents mode eteint1: ; eteint le neon 1 Pwmduty b.4, 0 return allume1: ; allume le neon 1 Pwmduty b.4, 199 return rapide1: Pwmduty b.4, 199 pause 100 Pwmduty b.4, 0 pause 100 return lent1: Pwmduty b.4, 199 pause 400 Pwmduty b.4, 0 pause 650 return
Avec un clignotement aussi rapide, la solution prévue ne fonctionne pas.
Pour avoir une vue d'ensemble du problème:
Deux néons, avec 4 états pour chaque: éteint, allumé, clignotement lent et rapide.
Il y a aura combien d'états au final?
Plus des leds pour visualiser l'état.
Un problème vient de la fréquence de cadencement de la réception bloquante de rfin.
Un cadencement rapide de l'émetteur ne devrait pas trop gêner le clignotement
Quelle est la fréquence des modifs de modes?
Je ferai des essais dès que possible.
Pour d'avantage d'idées, sur les questions picaxes:
http://www.picaxeforum.co.uk/forumdi...XE-francophone
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
C'est parfaitement résumé !
Les modes ne changerons pas rapidement, selon la musique je pense qu'il peut se dérouler 5 sec entre deux changement de mode.
Je ne comprends pas ? Si jamais les commandes envoyées par l'émetteur sont rapides tu pense que ça ne posera pas de problèmes avec les pauses ?
On parle avec les tâches parallèle là ou avec ce code ?
Je reste sur ce code pour l'instant. rfin n'est par très compatible avec le pseudo mulit.
Si le cadencement de l'émetteur est rapide, disons 50ms, et que le cycle de clignotement à 100ms du fluo est assez long disons 1s avant le return pour consulter rfin. Le temps de latence est au plus de 50ms, soit on retourne pour un nouveau cycle de 1s, soit on change de mode. Dans les deux cas, la consultation de rfin devrait être faiblement perceptible à l'oeil .
Dans tous les cas, le mode de transmission que j'ai donné plus haut doit être plus rapide que les tests if elseif..avec encadrement, beaucoup de test inutiles. En transmettant 0,1,2 (calculés dans l'émetteur) et avec un gosub calculé, en réception, il n'y a aucun test ...A vérifier tout de même.
On peut aussi augmenter la vitesse du récepteur à 16 MHz, elle est ramenée automatiquement à 4 MHz pour rfin uniquement. A vérifier aussi
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Ah oui, mais les deux peuvent clignoter en même temps ?
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...
Ce serai bien, mais je les ferai clignoter en même temps je pense.
Bonjour,
Après quelques tâtonnements, il semblerait qu'il soit possible d'arriver à un résultat correspondant au CDC avec un seul picaxe 14M2, avec un pseudo multitâches.
A essayer, a moins que la solution ne soit plus d'actualité....(et il faut le dire).
L'émetteur de test: deux possibilités de tests: le cycle sur 4 choix identiques pour les deux fluos ; éteints, allumés, clignotement rapide,clignotement lent.
L'autre possibilité: la génération de cycles aléatoires sur les deux fluos simulant la réalité
Envoi d'une émission toutes les 50 ms
Code:;EMETTEUR fluo ;MM 12072016 start0: #picaxe 14M2 symbol TX=B.1 ;sortie vers module émetteur symbol altern=pinC.3 Do if altern=0 then for b4=0 to 3 b2=b4 b3=b4 pause 3000 next else ;altern=1 random w13 ;w13 = (b27,b26) ;nombre "aléatoire" 2 octets b2=b27//4 ;b2 de 0 à 3 b3=b26//4 ;b3 de 0 à 3 pause 3000 endif loop start1: do rfout TX,(b2,b3,b4,b5,b6,b4,b5,b6) pause 50 loop
Le récepteur:
Le cycle de lecture de rfin est de 220ms, d'autres valeurs ne donnent pas de fonctionnement fluide (périodicité entre les pauses E/R, le "multitâches", ou autres ?)
Dans ces conditions, on obtient toutes les configurations possibles de fonctionnement sur les deux fluos (enfin, ici des leds)
Code:; Récepteur fluo ; MM 12072016 #picaxe 14M2 start0: ; parametrage des entrees/sorties dirsB=%010110 dirsC=%010111 inputtype %001000000000 ; passe la broche C.3 mode TDS symbol cpt=b9 ; initialisation high B.1 ; led montrant le mise en marche du µC pwmout pwmdiv4, B.2, 99, 0 ; 2500Hz at 0% @ 4MHz neon 1 eteint pwmout pwmdiv4, B.4, 99, 0 ; 2500Hz at 0% @ 4MHz neon 2 eteint Do ;Boucle principale high B.1 rfin C.3,b1,b2,b3,b4,b5,b6,b7,b8 ; acquisition des informations low B.1 ; montre la reception des informations pause 220 ;valeur sensible loop start1: do on b1 gosub choix11, choix12,choix13,choix14 loop start2: do on b2 gosub choix21, choix22,choix23,choix24 loop ;************* les choix ********************** choix11: ;fluo1 éteint b1=0 do high C.4 : low C.2 : low C.1 : low C.0 pwmduty B.2, 0 loop while b1=0 return choix12: ;fluo1 allumé b1=1 do low C.4 : high C.2 : low C.1 : low C.0 pwmduty B.2, 199 ; allume canal 1 loop while b1=1 return choix13: ;fluo1 cligno rapide b1=2 low c.4 : low c.2 : high c.1 : low c.0 cpt=0 do Pwmduty B.2, 199 inc cpt pause 10 loop while b1=2 and cpt<10 cpt=0 do Pwmduty B.2, 0 inc cpt pause 10 loop while b1=2 and cpt<10 return choix14: ;fluo1 cligno lent b1=3 low c.4 : low c.2 : low c.1 :high C.0 cpt=0 do Pwmduty B.2, 199 inc cpt pause 10 loop while cpt<40 and b1=3 cpt=0 do Pwmduty B.2, 0 inc cpt pause 10 loop while cpt<65 and b1=3 return choix21: ;fluo2 éteint b2=0 do pwmduty B.4, 0 loop while b2=0 return choix22: ;fluo2 allumé b2=1 do pwmduty B.4, 199 loop while b2=1 return choix23: ;fluo2 cligno rapide b2=2 cpt=0 do Pwmduty B.4, 199 inc cpt pause 10 loop while cpt<10 and b2=2 cpt=0 do Pwmduty B.4, 0 inc cpt pause 10 loop while cpt<10 and b2=2 return choix24: ;fluo2 cligno lent b2=3 cpt=0 do Pwmduty B.4, 199 inc cpt pause 10 loop while cpt<40 and b2=3 cpt=0 do Pwmduty B.4, 0 inc cpt pause 10 loop while cpt<65 and b2=3 return
MM
Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...