fonction count (simulation )

alainav1

Senior Member
Bonjour,
j'ai ecrit ce programme
#picaxe 08M2 'nom du picaxe utilisé
dirsc=%000000000

debut:
w13=0
'compter le nombre d'impulsions sur c.3 pendant 1 minute
count c.3,60000,w13
'transfere w13 dans w14
w12= w13
goto debut

je pensais que chaque d'impulsion présent sur c.3 serait ajouter à W13
et aprés une minute la valeur serait transféré dans w12
j'appuie sur c.3 pendant le deroulement du programme
la simulation passe rapidement sur la ligne count c.3,60000,w13 et rien n'est comptablisé ?
(je pensait que la ligne count c.3,60000,w13 resterait affiché une minute (au coefficient de similation pret)
qu'en pensez vous ?
cordialement
Alain
 

PieM

Senior Member
Bonjour,

Non pas possible de simuler. la seule chose c'est de rentrer manuellement une valeur pour w13 dans la fenêtre Generic de PE5.
Count est fait pour du comptage d'évènement rapides, et c'est une instruction bloquante.

Mais j'avoue ne pas comprendre la finalité d'un comptage pendant 60 secondes pour avoir une valeur maxi limitée à 65535.
Pendant 60 secondes le programme est bloqué sans rien pouvoir faire d'autre, sur un comptage d'un évènement qui arrive avec une période moyenne de l'ordre de la ms!

essayer un compteur, en mettant l'entrée sur interruption ...
 

alainav1

Senior Member
ok je vais regarder comment utiliser les interruption
si vous avez des lien qui expliquent sur picaxe ça je suis preneur
Cordialement
Alain
 

chimere322

Senior Member
Bonjour alainav1,

Je suis ton topic avec intérêt et je crois savoir qu'il est en corrélations avec cet autre topic: http://forums.futura-sciences.com/electronique/656600-conception-dun-cadence-metre.html

A mon sens je pense qu'il s'agit tout simplement d'un compteur incrémental sur une période d'une minute avec affichage du nombre d'impulsion sur un lcd avec un bouton start et un bouton reset. pour le reste soit en filaire ou autre ; mais l'intervenant n'a pas donné de nouvelle depuis. Par contre c'est très intéressant pour notre culture personnel et je pense que MGU pourrait si il le désire nous aiguiller sur ce sujet de comptage temporisé sur une période donnée. Je pense que le principe et le même avec des BP ou tous capteurs en tout ou rien voir même avec des sondes de contact.
 

alainav1

Senior Member
effectivement c'est cette question qui m'a fait intervenir
je maitrise (autant que faire ce peu ) les interruptions sur les PIC 16F
mais je souhaite en savoir plus la façon de les traiter avec les picaxe
le lien donné par jojojo doit me permettre d'utiliser l'interruption sur picaxe (je n'ai fait qu'un survol rapide mais cela me semble clair )
cordialement
Alain
 

MGU

Senior Member
Bonjour,

Dans l'exemple de jojojo, la boucle principale attend l'interruption.
L'interruption est déclenchée par le niveau (haut ou bas) défini par la commande.
Pour compter des impulsions, il ne faut pas réactiver l'interruption tant que le niveau n'a pas repris la valeur d'origine sinon, on compte des impulsions pendant toute la largeur de l'impulsion

MM
 

MGU

Senior Member
Code:
#picaxe 08M2

W13=0

setint %00000010,%00000010     ;interruption sur C1 niveau haut
Do loop                     ;boucle attente


interrupt:
inc w13       ;incrémentation w13
do loop while pinC.1=1       ;attente retour niveau bas
setint %00000010,%00000010     ;réactivation interruption
return
 

alainav1

Senior Member
merci pour ce petit exemple de mise en ouvre
c'est ce principe que j'utilise sur les pic 16F
j'ajoute aussi une petite tempo pour eviter de comptabiliser les rebonds
Cordialement
Alain
 

jojojo

Senior Member
A propos de rebonds, un petit truc, encore. Sur des pulses très bref (<90µs) l'interrupt software du picaxe fonctionne encore, mais avec un signal bien PROPRE.
Donc, dans ce cas de figure, utiliser une entrée en mode Trigger, ou, un trigger extérieur (je préfère).
 

PieM

Senior Member
Sur contacts mécaniques, un petit condo en // est conseillé pour éviter les infos de rebond.
Il y a aussi l'instruction button du picaxe.
 

alainav1

Senior Member
tout dépend de l'usage et la precision demandée
par exemple on peut detecter un changement de niveau attendre un "certain temps " verifié que le signal reste stable (si on a detecté un front montant on verifie que le signal reste haut par exemple)
si on peut tout traiter sans circuit exterieur c'est mieux .
ci joint j'ai trouvé ça par exemple (montages anti rebonds )
http://ks27442.kimsufi.com/telechargements/signaux.pdf
cordialement
Alain
 

alainav1

Senior Member
L'interrupt software du picaxe ne detecte PAS les fronts !
ok j'ai bien compris on detecte un niveau
quand je doit détecter un front
je memorise l'etat de l'entée dans une variable
puis je concidere que c'est un front (montant ou descendant ) quand la scrutation est l'inverse de la mémorisation
ce nouvel etat devient le nouvel etat numerisé etc

exemple de principe pour detecter un front montant
lire l'etat de l'entrée
si entrée=0 alors etat =0 sinon etat =1

debut

si entrée =1 et si etat =0 alors
gosub traitement frontmontant
etat=1
fin de si

si entrée =0 alors
etat=0
endif
goto debut
 
Top