Étape 6: programmation
Le codage pour cela est assez simple. Il y a seulement quatre méthodes pour écrire. Nous aurons tous la négociation de signaux I2C de la bibliothèque de I2C que nous générerons avec le configurateur de Code de Microchip.
- initWiiCam() ; Nécessaire seulement une fois pour configurer la caméra
- readWiiCam() ; Demande à la caméra pour la position de la balise
- updatePan() ; Met à jour la casserole si nécessaire de centrer le phare sur l’axe des X
- updateTilt() ; Met à jour l’inclinaison si nécessaire de centrer le phare sur l’axe Y
Installer MPLABX
Nous allons donc commencer. Tout d’abord, téléchargez et installez MPLABX à puce : http://www.microchip.com/pagehandler/en-us/family/...
Créez un projet
Une fois l’installation terminée, lancez-le et cliquez sur fichier > nouveau projet
Cela vous mènera à travers un Assistant pour configurer notre projet.
- Choisissez projet
- Catégories : Micropuce intégrée
- : Projets Standalone
- Sélectionnez le périphérique
- Famille : Milieu de gamme 8-bit MCU (PIC12/16/MCP)
- Dispositif : PIC16F1503
- Sélectionnez en-tête
- -En-tête : Aucun (ou AC244051 * si vous l’avez et veulent l’utiliser)
* Si vous utilisez un en-tête de débogage, vous devez générer le projet pour le débogage pour programmer l’en-tête
- -En-tête : Aucun (ou AC244051 * si vous l’avez et veulent l’utiliser)
- Sélectionnez l’outil
- PICkit3 ou outil compatible
- Sélectionnez le compilateur
- XC8
- Sélectionnez le projet et le dossier
- Nom : tout ce que vous voulez (ex. IR_Tracking_Turret)
- Dossier : par défaut
- Codage : ISO-8859-1
- Localisation : par défaut
Bon, le projet créé. Maintenant nous allons générer des fichiers source.
Configurateur de Microchip Code (MCC)
Il s’agit d’un bel outil à MPLABX qui vous permet de sélectionner et de configurer les périphériques comme les horloges, les générateurs PWM et communication I2C. Une fois votre projet créé allez dans Outils > Embedded > Microchip Code Configuratior
Un écran apparaîtra avec le brochage des puce et NIP affectations sur les périphériques de droite et sélectionnés et disponibles sur la gauche. Au centre supérieur de he, il y aura un bouton [générer du Code]. En cliquant sur elle va générer le code et la configuration que vous sélectionnez dans le tableau. Il n’y a aucun fichier de code source encore, MCC vous demandera si vous voulez générer un fichier main.c - Cliquez sur Oui. Nous aurons besoin les périphériques suivants configurés pour notre application :
- TMR1 - 16-bit timer
- TMR2 - 8-bit timer
- PWM2 - PWM sur broche 7
- PWM3 - PWM sur broche 11
- MSSP - maître I2C, SDA sur broche 9, SCL sur la broche 10
Dans la liste en bas à droite, recherchez et double-cliquez les périphériques ci-dessus pour ajouter les à la liste des périphériques sélectionnés en haut à gauche. Une fois que vous les avez tous, nous allons générer un code de support périphérique.
Système
- Sélectionnez horloge système : INTOSC
- Sélection de fréquence > horloge interne : 16MHz_HF
- CONFIG1 > fonction broche MCLR sélectionnez [MCLRE OFF]
TMR1
- Source de l’horloge : FOSC/4
- Prédiviseur : minuterie de 1:8
- Période : 100 ms
- Activer les interruptions : vérifier
- Taux de fonction de rappel : 30 x (3P) - délai d’attente pour recentrer la tourelle
TMR2
- Prédiviseur: 1: 64
- Période de minuterie : 4ms
- Démarrer la minuterie après initialisation : vérifier
- Activez le Timer Interrupt : vérifier
- Taux de fonction de rappel: 5 fois (20 ms) - pour la conduite des servos, plupart des servos collaborera également avec une période de 12ms.
PWM2, PWM3
- Activez PWM : vérifier
- Activer la sortie Pin PWM : vérifier
- Polarité PWM : Inversé (période 4ms)
MSSP::I2C
- MASTER Enable I2C : vérifié
- Activer la sortie de Bus SM: vérifié
- Slew Rate Control : Grande vitesse SDA
- Indisponibilité : 100 ns
- Fréquence d’horloge I2C : 400KHz
- Adresse de l’esclave: 7 bits
- Taille du tampon de lecture : 10 - selon le nombre d’octets vous attendez en retour de l’appareil on parle, dans ce cas, pour la configuration la plus simple, le camerawill de Pixart retourner 10 octets.
- Écrire la taille de mémoire tampon: 2 - nous allons parler à la caméra de Pixart 2 octets à la fois.
Ajoutez votre propre
Maintenant la plupart du code pour le projet est généré, mais nous avons encore de déclarer certaines variables et les constantes et ajouter du code supplémentaire, dont quatre les méthodes mentionnées ci-dessus.
main.c
Trouvez cette ligne :
Ajoutez le code suivant sous l’il
Activer les interruptions et ajoutez le code suivant à la fonction principale :
TMR2.c
Servos utilisent une impulsion de.5 à 2,5 ms dans une période de 20 ms pour déterminer leur position de la cible. Notre configuration donne TImer2 un 4ms période, ce qui est excellent pour ce qui nous donne beaucoup de précision au sein de cet usage de la période, mais trop court pour servo. Donc, nous utilisons une fonction de rappel qui s’exécute à chaque fois 5e Timer2 déborde. Nous gardons PWM désactivé jusqu'à la 5e passe, ce qui nous donne une période de 20 ms avec une durée d’impulsion de précision supérieur. Cela nous donne un mouvement dans le suivi et la meilleure réponse aux petits mouvements. Descendre aux fonctions Interrupt Service Routine (ISR) et de rappel et modifiez-les à regarder comme suit.
TMR1.c
J’ai juste ajouté ceci à recentrer la tourelle si il ne voit rien pendant 3 secondes. Nous devons déclarer la variable CountCallBack comme mondial. Trouvez cette ligne :
Ajouter ligne ths situé en dessous :
Maintenant descendre aux fonctions Interrupt Service Routine (ISR) et de rappel et modifiez-les à regarder comme suit.
TMR1.h
Trouvez cette ligne
Ajoutez cette ligne située en dessous
Maintenant, tout le code est en place et w peut construire et programmer l’appareil.
Nettoyer et construire le projet, puis Make et programmateur. Le PIC est prêt à brancher dans la prise sur le circuit imprimé.