Étape 3: logiciel
Le lien du logiciel est répertorié ci-dessous. Alors qu’il est visé pour le 12F683, il est facilement porté à d’autres versions de la photo. Vous devrez modifier la ligne qui identifie la version PIC (liste =) et le fichier INCLUDE, mais ceux sont les changements intuitives. La ligne __CONFIG devez également peaufiner tout simplement parce qu’un ou deux des étiquettes utilisées soient orthographiés différemment dans certains des fichiers INCLUDE. Assurez-vous juste que la photo que vous utilisez a la capacité de modulation (PWM) de largeur impulsion.
Il y a deux façons différentes pour générer la forme d’onde dont nous avons besoin. Une méthode qui est commune sur l’internet utilise une série de PON pour produire le signal 38 kHz et définir le rapport cyclique. Que la méthode fonctionne parce qu’une impulsion 38 kHz prend un peu plus que 26us donc il est assez facile à faire que l’utilisation de l’horloge de 4 MHz interne de PIC (cycle 1us par instruction). L’autre méthode courante consiste à utiliser quelque chose qui produit un flux d’impulsions 38 kHz, puis utilisez le PIC pour les impulsions de la porte pour une quantité suffisante de temps. Que pourrait être fait en utilisant quelque chose comme une minuterie 555 pour générer les impulsions mais beaucoup de photos ont la capacité de génération d’impulsion construite en. Ce que je fais allusion est la fonction PWM que nous avons utilisé dans l’épisode 9 de contrôler la vitesse d’un moteur à courant continu. Pour notre application de IR, cependant, nous permettrons le générateur PWM pour s’exécuter à un cycle fixe au lieu de changer le rapport cyclique, comme nous l’avons fait pour le contrôleur de vitesse du moteur.
Encore une fois, nous l’avons vu dans l’épisode 9, le PIC fournit un code dédié pour la sortie PWM. Pour porte les impulsions sur cette broche tous que nous avons à faire est de changer la définition de l’axe entre une entrée et une sortie. Pour fermer la porte, nous changeons simplement la définition de broche arrière sur une entrée. Cela peut être fait à la volée dans le logiciel. Lors du démarrage d’une transmission, nous voulons assurer que nous sommes synchronisés avec les impulsions afin de nous garder un œil sur l’indicateur de débordement Timer2. TIMER2 est dédié à la fonction PWM, donc il définit l’indicateur de débordement à un taux de 38 kHz. Alors, tout ce que nous devons faire est de compter le nombre de dépassements selon l’heure, nous devons laisser la porte ouverte. Par exemple, la partie 560us de l’onde de NEC est égale à environ 21 impulsions. Nous comptons également des débordements pendant le temps de portail fermé. Tout cela pourrait être fait en utilisant un autre timer et interruptions mais la solution de facilité consiste à simplement tuer le temps je regarde l’indicateur de débordement dans le logiciel. C’est ok car il n’ya vraiment pas autre chose que nous devons faire lors de la sortie de la forme d’onde de l’IR.
Dans cet exemple, j’ai codé en dur l’IR adresse pour être 00 FF et a donné des valeurs arbitraires pour les commandes de deux commutateur. Vous pouvez modifier ceux selon vos propres besoins. Le commutateur logique de gestion est très simple et ressemble à une valeur faible sur la broche GPIO appropriée. Lorsqu’il en détecte une routine du gestionnaire d’interrupteur est appelée. Chaque gestionnaire de commutateur retarde 50ms et vérifie ensuite la broche GPIO à nouveau. C’est pour tenir compte des rebondissements de contacts de l’interrupteur. Après que la commande IR est transmise, nous vérifions la broche GPIO pour une sortie de l’interrupteur. Lorsqu’une publication est détectée nous retarder encore de 50ms tenir compte des rebondissements de contacts possible.
Eh bien, c’est tout pour l’épisode 11 de « Fun avec PIC Assemblée ». Restez à l’écoute des autres épisodes.