Comment interpréter le sens de rotation d’un commutateur rotatif numérique avec un PIC (5 / 5 étapes)

Étape 5: logiciels

je n’ai pas utilisé construit en interruptions PIC base pro. J’ai utilisé quelques fichiers que j’ai inclus dans mon code de Darrel Taylor au lecteur la routine. C’est où un crédit énorme à Darrel appartient ! Les fichiers sont gratuits. Il suffit de visiter son site Web pour plus d’informations, autres applications et pour télécharger les fichiers. Vous pouvez sauter cette partie si vous n’utilisez pas un PIC avec les interruptions Darrel Taylor. Viens de configurer les interruptions que nécessaire sur la plate-forme que vous utilisez.

Pour obtenir la Darrel Taylor (DT) interruptions mises en place il sont deux choses à faire :

1.) Include le DT_INTS-14.bas et ReEnterPBP.bas les fichiers dans votre code.

2.) copiez et collez ceci dans votre code.

ASM
Macro INT_LIST ; IntSource, étiquette, Type, ResetFlag ?
INT_Handler RBC_INT, oui _ISR, PBP,
endm
INT_CREATE
ENDASM

Insérer des tabulations et des espaces comme le graphisme à la fin de l’Instructable donc vous pouvez voir les choses un peu plus facile dans votre code. Vous aurez besoin de le modifier légèrement pour s’adapter à vos besoins. Sous Label, remplacez ISR par le nom de la sous-routine qui est votre ISR. N’oubliez pas le trait de soulignement ! Vous en avez besoin !

Pour obtenir les interruptions de travail, il y a deux choses plus à faire :

1.) écrire la sûreté. Vous écrirez cela tout comme vous deviez écrire une sous-routine PBP, sauf que vous devrez ajouter @ INT_RETURN à la fin de la sous-routine au lieu de retour. Cela accusera l’interruption et l’exécution du programme de retour à où elle s’était arrêtée dans la boucle principale.

À l’intérieur de l’ISR, vous devez désactiver l’indicateur d’interruption alors que votre programme ne se coince pas dans une interruption récursive. Simplement en lisant que PORTB est tout qui doit être fait pour effacer l’indicateur d’interruption sur le PIC16F877A. Chaque microcontrôleur différent a une façon différente des drapeaux de l’interruption de la société. Consultez la fiche technique votre microcontrôleur.

2.) lorsque vous atteignez le point dans votre code que vous souhaitez activer l’interruption, utilisez cette ligne de code :

@ INT_ENABLE RBC_INT

Lorsque vous souhaitez désactiver l’interruption il suffit d’utiliser :

@ INT_DISABLE RBC_INT

Il y a beaucoup de choses dans ce que j’ai couvert juste donc je vais résumer rapidement. Jusqu’ici, votre programme doit ressembler à ceci :

; Aucun besoin mis en place ou de code

INCLURE « DT_INTS-14.bas »
INCLURE « ReEnterPBP.bas »

ASM
Macro INT_LIST ; IntSource, étiquette, Type, ResetFlag ?
INT_Handler RBC_INT, _myISR, PBP, oui
endm
INT_CREATE
ENDASM

; Tout autre besoin mis en place ou de code

@ INT_ENABLE RBC_INT
; Code qui doit savoir quel chemin tourne le bouton
@ INT_DISABLE RBC_INT

; Autre code

FIN ; Fin du programme

myISR :
Ici le code ISR
@ INT_RETURN

(Interrompre gestionnaire Set Up Table)

Je pense que c’est là que toute personne qui n’utilise pas un PIC ou DT interruptions peuvent se joindre à nouveau. Maintenant, nous devons réellement écrire l’ISR pour le microcontrôleur sache quel sens tourne le bouton. Se rappeler de la section théorie de logiciels que nous pouvons en déduire le sens de rotation si nous savons l’entrée qui a provoqué l’interruption, sa nouvelle valeur et la valeur de l’autre entrée. Voici le pseudo-code :

Lire PORTB dans une variable gratter pour effacer l’indicateur d’interruption
Vérifier si A provoqué l’interruption.
Si elle est vraie,
Comparer A et b.
Vérifier s’il est différent, si différent,
C’était une rotation vers la droite
Autre chose,
C’était vers la gauche
Endif

Vérifier si B causé l’interruption.
Si elle est vraie,
Comparer A et B
Vérifier s’il est différent, si même,
C’était une rotation vers la droite
Autre chose,
C’était vers la gauche
Endif

Retour d’interruption

Comment savoir si un changement sur A ou B a causé l’interruption ? Découvrir la nouvelle valeur de l’entrée a changé et l’autre entrée (inchangée) est facile, car on peut les lire à l’intérieur de la sûreté. Nous devons savoir ce que l’état de chacun un était avant l’exécution est envoyée à la sûreté. Cela arrive dans la routine principale. La routine principale s’assoit et attend une variable byte que nous avons appelé CWflag pour avoir la valeur 1 ou remis à 0 par la sûreté. Après que chacun a reconnu le changement du bouton ou si il n’y a aucune activité de bouton, la variable est définie à 5 pour indiquer un état d’inactivité. Si le drapeau est réglé ou est désactivé, la routine principale immédiatement incrémente ou décrémente la valeur de consigne pression appropriée basée sur la rotation et puis définit la variable CWflag retour à 5 parce que le bouton est maintenant inactif à nouveau. Comme la routine principale vérifie la CWflag, qu’elle documente également l’état des valeurs A et B commutateur rotatif. C’est vraiment simple et ressemble à ceci :

oldA = A
oldB = B

Il y a vraiment rien de super compliqué ici. Il suffit d’inclure ces deux lignes au début de la boucle qui vérifie la CWflag pour la rotation. Nous sommes juste mettre à jour les valeurs logiques des entrées de la molette à l’intérieur de la boucle d’incrémentation/décrémentation dans la routine principale afin que nous puissions voir quelle entrée causé l’interruption lorsque l’ISR est exécutée. Voici le code de l’ISR :

ABchange :
zéro = PORTB ' lecture PORTB pour effacer interrupt flag

"Si A cause de l’interruption, recherchez B sens de rotation
OldA IF! = A puis
"Si A et B sont différents, c’est la rotation vers la droite
IF A! = B ALORS
GOTO CW
« Sinon, c’est la rotation dans le sens anti-horaire
D’AUTRE
GOTO CCW
ENDIF
ENDIF

« Si B provoque l’interruption, aller A pour sens de rotation
OldB IF! = B alors
"Si A et B sont les mêmes, c’est la rotation vers la droite
IF A == B PUIS
GOTO CW
« Sinon, c’était contre rotation dans le sens horaire
D’AUTRE
GOTO CCW
ENDIF
ENDIF

CW :
CWflag = 1
@ INT_RETURN

CCW :
CWflag = 0
@ INT_RETURN

J’ai inclus le code ISR dans un fichier AB_ISR.bas car les onglets dans le code ne s’affichent pas comme ils le devraient.

Maintenant, parce que l’ISR a les anciennes valeurs pour les entrées A et B, il peut déterminer quelle entrée causé l’interruption, le compare à l’autre entrée (inchangée) et déterminer le sens de rotation. Tout la routine principale a à faire est de vérifier la CWflag pour voir quelle direction le bouton a mis (si elle fonctionne) et incrément ou décrémenter un point contre, ensemble ou tout ce que vous aimez ou avez besoin.

J’espère que cela aide et n’a pas été trop compliqué. Ce type d’interface est particulièrement utile si votre système utilise déjà des interruptions puisqu’il s’agit qu’une interruption de plus à ajouter. Profitez !

Articles Liés

Compléter une horloge numérique avec détecteur de présence (RTC - alarme - PIR - Point de rosée température - humidité -)

Compléter une horloge numérique avec détecteur de présence (RTC - alarme - PIR - Point de rosée température - humidité -)

SalutJ'ai déjà fait quelques projets de pendules à lecture digitale avec Arduino, y compris les écrans LED et LCD, mais celui-ci est plus spécial car j'ai introduit une nouvelle fonctionnalité avec un capteur de mouvement (PIR).Voir la vidéoPrincipal
Comment interfacer des écrans numériques avec votre PC

Comment interfacer des écrans numériques avec votre PC

cette instructable vous montre comment faire pour lire les informations de votre jauge de température, chauffe-eau, température de barbecue, machine de coke, minuterie de lessive, etc. à partir de votre PC. Alors que les capteurs plus modernes ont au
Comment interpréter les résultats de laboratoire diabétiques (diabète rendu simple)

Comment interpréter les résultats de laboratoire diabétiques (diabète rendu simple)

ce n'est pas votre typique instructable car il ne vous montre pas comment faire quelque chose ou de fixer quelque chose. Au lieu de cela, cette instructable est conçue pour informer les gens qui n'ont pas une bonne compréhension sur le texte qui suit
Comment interpréter votre corps de signaux que vous êtes enceinte très tôt, avant d’acheter un Test de grossesse

Comment interpréter votre corps de signaux que vous êtes enceinte très tôt, avant d’acheter un Test de grossesse

Il n'est pas tout à fait à cette époque du mois, mais votre corps vous dit que quelque chose ne va pas. Heureusement, identifier les signes de grossesse dès le début est simple, et quelques signes majeurs indique qu'un test de grossesse est à l'horiz
Comment réparer « windows ne peuvent pas vérifier la signature numérique de ce fichier » avec winload.exe

Comment réparer « windows ne peuvent pas vérifier la signature numérique de ce fichier » avec winload.exe

mon école craptop est mort parce que j'ai supprimé les fichiers bootmgr du lecteur c, j'ai pensé qu'ils étaient les restes d'un programme. ils étaient toujours dans ma corbeille après que je l'ai fixé alors j'ai mis leur retour où ils se trouvaient.J
Comment faire des meubles de commande numérique par ordinateur

Comment faire des meubles de commande numérique par ordinateur

Le but de l'Instructable doit montrer au spectateur comment concevoir des meubles à couper à l'aide d'une machine à commande numérique par ordinateur (CNC). Meubles de commande numérique par ordinateur peuvent être conçus pour utiliser fournitures mi
Comment participer au concours de Photo numérique jours

Comment participer au concours de Photo numérique jours

grande photographie exige que tous les types de créativité et pas seulement en composition. Techniques, des astuces et gadgets maison débrouillards peuvent également vous aider obtenir la photo parfaite. Presque tout le monde a un secret de photograp
Comment faire pour obtenir des images de votre appareil photo numérique sur votre Mac

Comment faire pour obtenir des images de votre appareil photo numérique sur votre Mac

ici, nous apprendrons comment faire pour transférer des images de votre appareil photo numérique ou votre téléphone à votre ordinateur Macintosh, afin de pouvoir travailler avec eux comme fichiers d'images numériques.Étape 1: Connectez l'appareil à v
Comment faire un tutoruil avec votre appareil photo numérique bricolage

Comment faire un tutoruil avec votre appareil photo numérique bricolage

ce instuctable vous montrera comment faire un jeu tutoralÉtape 1: preperiration pour appareil photo et mon tutoriel http://www.youtube.com/watch?v=XPPL2C8geUUVidéo de comment faire sur mon appareil photoHeres mon tutorielÉtape 2: Enregistrement untin
Comment mod un bon sens commande de servo rc

Comment mod un bon sens commande de servo rc

dans ce instructable je vais vous montrer comment mod un bon sens de rc plumes servo pour rotation continue.les choses dont vous avez besoin pour cela "sont en mesure1. un couteau X-acto2. un tournevis de bijoux (ou juste un petit tournevis)3. coupe
Comment fêter Ayudha pooja (uniquement pour les technos)

Comment fêter Ayudha pooja (uniquement pour les technos)

Ayudha Puja est partie intégrante du Navratri festival, une fête hindoue qui est traditionnellement célébrée en Inde. Il est aussi appelé « Astra Puja », synonyme de Ayudha Puja. En termes simples, cela signifie « Culte des instruments ».donc dans ce
Comment arrêter le hoquet

Comment arrêter le hoquet

cette instructable vous montre comment arrêter le hoquet en 2 étapes rapides et faciles. Espérons qu'il vous plaira!!!Étape 1: Étape 1 Tenir votre nez et votre souffle.Étape 2: Étape 2 Avaler 3 fois. Si cela ne fonctionne pas, essayez à nouveau. N'ét
Comment arrêter un vélo avec dérapage minime.

Comment arrêter un vélo avec dérapage minime.

Voici un instructable sur comment arrêter un vélo avec dérapage minime. Im pas responsable de tout dommage causé.Étape 1: rupture Au lieu de bloquer les freins arrière, tirer doucement sur le break avant.Étape 2: Obtenir le Lift faire un minuscule en
Comment interprètes utilisent des tactiques inhabituelles pour influer sur les résultats de la négociation

Comment interprètes utilisent des tactiques inhabituelles pour influer sur les résultats de la négociation

Dans l'histoire, beaucoup de préoccupations quant à la capacité et l'exactitude des interprètes dans la reproduction des traductions dans une langue cible. Affaires judiciaires de la Cour même verdict dépendent fortement de ces traductions, et beauco