Découverte et Programmation de la carte Microchip curiosity Nano kit

Introduction

La carte Microchip curiosity Nano kit a été développée par Microchip dans le but de débuter dans le monde des microsystèmes. Elle possède les mêmes fonctionnalités que les autres microcoprocesseurs que Microchip, néanmoins elle a des bornes facile d’accès pour y brancher un composant depuis une breadboard ou une plaque pcb par exemple.

 De plus elle possède une led d’alimentation qui s’allume quand la carte est alimentée et clignote quand un programme est téléversé dans celle-ci.

Enfin vous retouverez une led et un bouton poussoir intégré à la carte afin que vous puissez tester si votre programme fonctionne bien. Nous avons allumé cette led à la fin du cours sur MPLAB X IDE afin de voir si les intallations que l’on avait précédement avait fonctionné.

Quel microprocesseur est inclus dans le kit ?

La carte curiosity nano kit à pour base un microprocesseur PIC18F57Q43. C’est un microprocesseur 8 bits.

Voici quelques caractéristiaue du microprocesseur :

  • 6 controleurs DMA (Direct Access Memory)
  • Mode running, idle et sleep
  • Interruption vectorisé avec priorité haute et basse

Comment programmer la carte ?

Vous pouvez programmer la carte Microchip curiosity nano kit en langage C ou langage assembleur. On a fait des cours sur le site sur le langage C dédié au système embarqué.

 Pour faire la liaison entre notre programme et la carte nous utiliserons de MPLAB X IDE et le compilateur associé de chez Microchip. On a fait un cours sur ces deux logiciels et comment les installer.

Pour vous faire une analogie le logiciel Arduino IDE permet de programmer la carte arduino autant que MPLAB X IDE permet de programmer des cartes Microchip.

Carte Microchip PIC18F57Q43 Nano curiosity kit

Dans cette partie on va voir un peu plus de détails sur cette carte et son fonctionnement. Nous avons divisé cette partie en deux : d’abord les composants qui sont sur la carte afin d’en apprendre plus sur celle-ci. La deuxième partie sur les différentes bornes de la carte curiosity afin de savoir quel composants vous pouvez contrôler avec, combien il y a de broche entrée/sortie ou de masse par exemple.

A) Les composants de la carte Microchip

Dans cette partie on va voir les différents composants de la carte Microchip.

Voici un schéma de la carte :

  • Connecteur micro USB : Permet d’alimenter la carte et de d’uploader votre programme dessus.
  • Alimentation/ Status LED : LED qui s’allume quand le carte est mise sous tension. Elle permet de savoir que la carte est bien alimenté. Cette même LED clignote quand un programme se téléverse sur la carte afin de vous prévenir que le programme s’est bien téléversé.
  • Débogueur : C’est  un logiciel qui aide un développeur à analyser les bugs d’un programme et de vérifier que chaque fonction fait le travail que l’on attend d’elle.
  • 32.768 kHz quartz : C’est un composant électronique qui oscille à une fréquence stable lorsqu’il est stimulé électriquement et donc est utilisé pour l’horloge du système.
  • PIC18F57Q43 : Microprocesseur de la carte qui permet d’éxécuter votre programme.
  • LED (LED0) : LED intégré à la carte qui peut-être allumé avec le programme.
  • Bouton poussoir (SW0) : Bouton poussoir que vous pouvez contrôler avec le programme comme une entrée ou une sortie pour allumer la led intégrée par exemple.

B) Les broches de la carte Microchip

On va maintenant les différentes broches que propose la carte Microchip curiosity nano kit. Le nom sur ces broches vont vous être très utile pour programmer vos composants afin de savoir sur quel broche on travail.

 

Comme vous pouvez voir, il y a beaucoup de broches sur une carte Microchip curiosity nano kit. Certaine ont en plus des spécificités comme une liaison UART ou support l’analogique ou le pwm. C’est pour cela que l’on a séparé l’image en catégorie :

Nom des broches : Dans cette catégorie vous retrouverez les broches pilotables en entrée et en sortie qui commence par un R. Les broches en noir s’appelle GND et corresponds à la masse.

Liaison des broches : Corresponds à la liaison utilisée par la broche pour communiqué avec les composants extérieurs

Broches gérant l’analogique : Ce sont les broches qui peuvent gérer l’analogique. L’analogique correponds à une tension entre 0V et 5v. Ceci est très utile pour lire la valeur d’un capteur par exemple. Néanmoins le microsystème ne peut lire que des valeurs numériques, la broche analogique doit être convertie par un convertisseur analogique numérique pour être traité par le microprocesseur.

Broche PWM : Broche permettant de faire pulse width modulation, qui va vous permettre de faire tourner un moteur à courant continu par exemple.

Création d'un projet MPLAB X IDE

Dans ce cours on part du principe que vous avez déjà installé MPLAB X IDE et que vous avez lu notre cours dessus et que donc vous savez comment créer un projet pour la carte curiosity nano kit. Vous pouvez retrouver ce cours ici pour apprendre à crée un projet sur MPLAB X IDE et à allumer la micro led de la carte Microchip.

On va donc commencer directement avec l’allumage d’une led.

Allumer une LED

Dans le cours sur MPLAB on a vu comment allumer la led interne de la carte Microchip.  Ici on va voir comment allumer une led externe sur la carte Microchip.

Pour brancher la led, on a chosit la broche RF6 de la carte microchip. Toute les broches commençant par R peuvent être choisit.

Voici le circuit avec la led :

On va maintenant voir comment programmer cette Led pour l’allumer. Tout le programme que l’on va écrire va se trouver dans le void main() de notre projet.

Voici le programme :

#include "system/system.h"

#define LED_ROUGE LATFbits.LATF6

int main(void) {
    TRISFbits.TRISF6=0;// declare la led rouge en sortie
    while(1) {
        LED_ROUGE=1; // On allume la led
    }    
}

On va maintenant décripter comment fonctionne ce programme:

 

Pour programmer le circuit on va utiliser plusieurs registres : 

  • La première chose à faire est d’associé le nom de notre led ( ici LED_Rouge) à la broche à laquelle elle est branchée à l’aide d’une Macro. Pour pouvoir  appeler le nom de notre broche, on a utiliser le registre LAT.  En l’occurance on veut la broche RF6, on utilisera le registre LATFbits et la broche LTF6 du registre :
#define LED_ROUGE LATFbits.LATF6

Le define doit être placé avant la fonction main.

Comment adapter le registre à sa broche ?

Si on avait choisit une autre broche, comme RB3 par exemple, il va falloir adapter le registre LATBbits.LATB3.

On va maintenant déclarer notre broche comme une sortie numérique. Pour cela on utilise le registre TRIS qui permet de déclarer notre broche comme une sortie ou une entrée numérique.

Comme on veut contrôler led, on doit déclarer notre broche en sortie, donc avec un TRIS qui est égale à 0. On  a donc ceci pour notre broche RF6. Contrairement au define de la LED, le TRIS doit faire partie du main, à déclarer avant le while (1) :

TRISFbits.TRISF6=0;// declare la led rouge en sortie

Si on veut utiliser une autre broche, comme RB3, le TRIS sera TRISBbits.TRISB3.

Comment initiaiser notre registre TRIS ?

Pour savoir si on initialize notre TRIS à 1 ou 0, on doit se poser la question si on veut contrôler notre composant ou bien recevoir une valeur de notre composant comme la valeur d’un capteur ou d’un bouton poussoir. Tris à 0 correspond à une sortie et inversement.

Si on veut utiliser une autre broche, comme RB3, le TRIS sera TRISBbits.TRISB3.

La dernière chose à faire est d’allumer la led rouge en écrivant ceci dans le while (1) :

LED_ROUGE=1; // On allume la led