Étape 3: logiciel
Les liens de logiciels sont répertoriées ci-dessous. J’ai inclus ceux pour le 12F683 et le 16F688. Les différences résident surtout dans quelques noms de registre ainsi que les différences attendues dans la version PIC (liste =) et la ligne du fichier INCLUDE et la ligne __CONFIG.
Tel que mentionné précédemment, la ligne de base de logiciels est celle que nous avons utilisé dans l’épisode 7 pour les périodes de long sommeil. En outre, le code d’écriture EEPROM de l’épisode 6 a été ajouté. Dans la version 12F683 la ligne « BCF EECON1, EEPGD » est commentée parce qu’elle ne s’applique qu’à la 16F688. Cette ligne n’est pas utilisée dans le code de 12F683 car le bit EEPGD n’est pas présent dans le registre EECON1. Le 12F683 autorise uniquement l’écriture EEPROM et non de mémoire programme. La majeure partie du reste du nouveau code traite de l’installation de convertisseur A/N et l’utilisation. Une fois les registres appropriés sont mis en place dans le code d’initialisation, la conversion nécessite seulement une paire de drapeaux à définir. Que tout est fait dans le gestionnaire d’interruption quand le PIC se réveille. Vous pouvez aussi voir les points où la puissance est activée ou désactivée pour le capteur de température et le potentiomètre de Vref. Il y a aussi une boucle sans fin dans la dernière partie de la routine d’initialisation si la broche Enable décrite à l’étape de matériel n’est pas fondée. L’EEPROM qui empêche l’écrasement lorsqu’il est assis dans le programmeur Pickit3.
Une nouvelle tournure dans le code est l’utilisation d’une table de choix élargi à une adresse spécifiée pour convertir les valeurs de A/D en valeurs de température. Lorsque vous utilisez des tables de choix comme ça vous avez besoin pour vous assurer que la limite de table n’est pas franchir une limite de la page. Pages sont définis comme tous les 256 octets (100 hex) de départ. Dans cet exemple, nous commençons volontairement le code de table de recherche à une limite de page haut (700 en hexadécimal). Afin de calculer l’adresse de l’appel pour ce code, nous copions les bits supérieurs de l’adresse de la table Registre PCLATH. Les bits de l’adresse puis s’habituer par la PIC lors du calcul de l’emplacement du code lookup table. C’est quelque chose que vous ne devez s’inquiéter lorsque vous utilisez un langage de haut niveau comme le C, car le compilateur ajoute automatiquement les instructions nécessaires pour vous. C’est aussi quelque chose que vous ne normalement besoin de s’inquiéter lors de l’utilisation de microcontrôleurs ou microprocesseurs qui ont une capacité complète adresse de 16 bits.
Il y a deux autres choses à noter concernant la table de choix. Puisque nous limitons nos afficheurs de température à deux chiffres pour plus de commodité, les chiffres de 100 à 109 degrés utilisent ASCII « A » pour l’équivalent décimal « 10 ». L’autre chose à garder à l’esprit est que chaque entrée de la table prend deux octets de mémoire. Un octet est pour l’instruction RETLW et un octet de la valeur retournée. Pour garder à notre limite de page de 255 octets, nous ne pouvons pas dépasser 127 entrées.
OK, donc, nous recevons tout construit et en cours d’exécution mais comment obtenons-nous les données enregistrées sur le PIC ? Avec le 16F688, nous pourrions ajouter une interface série ou même le Bluetooth décrit dans un épisode précédent. Pour ce projet nous garder les choses simples et il suffit d’utiliser les fonctionnalités de notre programmeur Pickit3 et le X de MPLAB IDE. Nous connaissons déjà le bouton pour télécharger (programme) le logiciel dans le PIC, mais juste à côté de ce bouton est l’un pour le téléchargement de la photo. Si vous cliquez sur la flèche à côté de ce bouton, vous pouvez voir les options pour quelles parties du mémoire que vous souhaitez récupérer. L’option du bas est pour l’EEPROM. Lorsque vous cliquez sur ce, il apparaîtra une fenêtre qui permet de déterminer le nom et la destination du fichier hex. Le fichier qui est créé peut être lu à l’aide du bloc-notes de Windows et est formaté comme ceci :
: 020000040000FA
: C 10420000730073007200720072007200720072001
: 104210007200720072007200720072007100710010
|
|
|
: 00000001FF
Les valeurs de données réelles enregistrées début sur la ligne 2. Il y a un total de 32 lignes de données avec 8 valeurs sur chaque ligne. La première valeur sur chaque ligne commence à la position 8. Les entrées de données sont enregistrées en tant que valeurs 16 bits, mais les deux zéros ne sont pas applicables, car l’EEPROM est seules 8 bits large. Les quatre derniers chiffres sur chaque ligne de données sont une somme de contrôle et peuvent être ignorés. La table de choix dans le logiciel définit spécifiquement les valeurs avec la connaissance que le fichier hex va convertir en ASCII. Dans l’exemple ci-dessus, les températures enregistrées sur la première ligne sont 73, 72, 73, 72, etc.. Eh bien, c’est tout pour l’épisode 8 de « Fun avec PIC Assembly ». Restez à l’écoute des autres épisodes.