TP N 7 : Programmation en C

Documents pareils
AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

Le langage C. Séance n 4

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Séverine Marien Maxime Ringard. 2 ème année GEII. Régulateur de charge pour station de recharge photovoltaïque

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

PIC EVAL Dev Board PIC18F97J60

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

! analyse du fonctionnement

Flowcode - Mode d'emploi

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Sélection du contrôleur

La programmation des PIC en C. Les fonctions, les interruptions.

1. PRESENTATION DU PROJET

Réglages du module de sauvegarde de Biblionet (Monoposte)

ANALYSE TRAMEs LIAISON SERIE

Conférence sur les microcontroleurs.

Projet audio. Analyse des Signaux ELE2700

Configuration de TCPIPconfig.h

Débuter avec PsoC ou PsoC niveau 0

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Initiation à LabView : Les exemples d applications :

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Découvrez Windows NetMeeting

Samsung Auto Backup Guide de démarrage rapide

wxwidgets dans un environnement Microsoft Windows

Traitement de données

Spécialité Professionnelle. Patrick Boulandet

MANUEL D UTILISATION PRO-FACE

MICROCONTROLEURS PIC PROGRAMMATION EN C. V. Chollet - cours-pic-13b - 09/12/2012 Page 1 sur 44

Réalisation d un réseau de capteurs de température sans fil basé sur le protocole ZigBee

Comment faire un Mailing A partir d une feuille Calc

Securexam Consignes pour l EFU Les 2, 3 et 4 juin 2015

Carte Relais GSM (Manuel Utilisateur)

Guide pour le bon fonctionnement des applications académiques avec Internet Explorer 7.x

Carte ARDUINO UNO Microcontrôleur ATMega328

Encryptions, compression et partitionnement des données

Gestion de photos avec Picasa

Integration à un domaine AD SOMMAIRE

Eclipse atelier Java

PROCEDURE ESX & DHCP LINUX

Outils pour la pratique

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Isadora. Photo jpeg qualité 50% %, 320X240. Prérequis

Configuration sous Microsoft Outlook

Etudier l influence de différents paramètres sur un phénomène physique Communiquer et argumenter en utilisant un vocabulaire scientifique adapté

:...2 I.6. :... 2 I.7. :... 2 I.8. :...3 I.9. :... 3 I.10. :... 3 II. 4 II.1.

Installation d'un Active Directory et DNS sous Windows Server 2008

Comment insérer une image de fond?

Veuillez noter que vous devez changer de Code d Accès Internet tous les 60 jours pour des raisons de sécurité.

Installation et utilisation de Cobian Backup 8

IV- Comment fonctionne un ordinateur?

FORMATION MULTIMÉDIA LVE

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Introduction à Eclipse

Fiche technique CPU 314SC/DPM (314-6CG13)

Crédit Agricole en ligne

Configuration du modem D-Link ADSL2+

Configurer un réseau domestique. Partager ses fichiers, ses dossiers et ses imprimantes sur tous ses PC.

Cours 1 : Qu est-ce que la programmation?

QUESTION 1 {2 points}

3 : créer de nouveaux onglets dans Netvibes Cliquer sur le bouton «+» et renommer le nouvel onglet (par exemple Encyclopédies en ligne)

Manuel d utilisation de la messagerie.

< Atelier 1 /> Démarrer une application web

Algorithmique et Programmation, IMA

GUIDE D UTILISATION 1

Fiche technique CPU 315SN/PN (315-4PN33)

Sommaire. 2. L accès aux modules. 1. Aspects techniques. 1.1 Le matériel requis 2

Support pour les langues s écrivant de droite à gauche

Poker. A rendre pour le 25 avril

Créer un fichier PDF/A DÉPÔT ÉLECTRONIQUE

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Manuel d utilisation du module Liste de cadeaux PRO par Alize Web

Développement d une application Android pour l Association des Paralysés de France

Programmation C++ (débutant)/instructions for, while et do...while

Cours pratique Excel. Dans chacune des feuilles, les donnés sont déjà entrées afin de gagner du temps.

Gestion des utilisateurs : Active Directory

Prise en main. Prise en main - 0

IPMailSMS Module d envoi d & SMS pour CITECT

!" #$$%& Disque dur 2.5 pouces Firewire Apple MacOS FR V2.4 - Page 1/17

Volet de visualisation

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Mise en route de Cobian Backup

ÉCOLE POLYTECHNIQUE DE MONTRÉAL. Département de Génie Électrique. La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700

Partie Agir : Défis du XXI ème siècle CHAP 20-ACT EXP Convertisseur Analogique Numérique (CAN)

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var - E mail : bij@agasc.fr / Tel : CONSIGNE N 1 :

AutoBackup 4. Sauvegarde de la totalité des données personnelles ASSOCIATION INFORMATIQUE POUR TOUS - VIEILLEVIGNE Gilbert LECOCQ

Logiciel PICAXE Programming Editor

BIRT (Business Intelligence and Reporting Tools)

Logiciels de gestion FAC. Analyste AgExpert. Guide de démarrage rapide 2014

Approche Contract First

Notice d'utilisation Site Internet administrable à distance

Installation et compilation de gnurbs sous Windows

La Clé informatique. Formation Excel XP Aide-mémoire

GUIDE DU NOUVEL UTILISATEUR

GUIDE «TELECHARGER LA CLE PUBLIQUE DE SON CERTIFICAT» 1. DEFINITION ET UTILISATION DE LA CLE PUBLIQUE P2

Transcription:

TP N 7 : Programmation en C A. Introduction : Nous allons utiliser l environnement de développement MPLAB de chez Microchip B. MPLAB : Lancer le programme MPLAB : Faire Project -> Project Wizard : JFA 2015 Page 1 /24 TP7

Vous obtenez alors la fenêtre suivante : Sélectionner la référence exacte du PIC qui est sur votre Carte (ici Pic18F45K20) JFA 2015 Page 2 /24 TP7

Choisissez ou gardez le programme CCS C Compiler. Créez et sélectionnez un répertoire de sauvegarde de votre projet. JFA 2015 Page 3 /24 TP7

Faire suivant Si vous avez déjà un fichier source en langage C, vous pouvez l insérer. JFA 2015 Page 4 /24 TP7

Terminez la création du projet Voilà votre espace de travail : JFA 2015 Page 5 /24 TP7

On va maintenant créer le fichier code source en C Choisissez le même répertoire que le projet et donnez le même nom au fichier que le projet. JFA 2015 Page 6 /24 TP7

Vous pouvez maintenant entrer votre programme dans cette fenêtre. Tapez alors le programme ci-dessous : JFA 2015 Page 7 /24 TP7

Compiler votre programme an cliquant sur l icône «Build All» JFA 2015 Page 8 /24 TP7

Et vérifiez qu il n y a pas d erreurs dans la fenêtre «Output» Mode «Programmer» Si vous voulez seulement programmer votre carte Pic, effectuez les opérations ci-dessous, sinon passer à la connexion en mode «Debugger». Sélectionnez PicKit 3 comme programmer. Une fenêtre pop-up vous demande de vérifier la connexion et les valeurs d alimentions de votre carte. JFA 2015 Page 9 /24 TP7

Faire ok. Et sélectionnez le menu Programmer -> Settings, et dans l onglet «Power» Sélectionnez 3,25 V comme tension d alimentation en glissant le curseur ou en tapant la valeur dans la case. Et cochez la case «Power target circuit from PicKit3», ce qui permet d alimenter la carte avec le PicKit 3 si le courant consommé n est pas trop important! Et vérifiez l onglet «Status» et le cadre «Voltage» pour vérifier que vous avez la bonne tension! JFA 2015 Page 10 /24 TP7

Mode «Debbuger» Si vous voulez programmer et débuguer votre carte Pic, effectuez les opérations ci-dessous. Sélectionnez PicKit 3 comme debugger. Si vous étiez en mode «Programmer» une fenêtre vous indique que vous devez choisir le mode «Programmer», soit le mode «Debugger». On choisit alors le mode «Debugger»! JFA 2015 Page 11 /24 TP7

Une fenêtre popup vous demande de vérifier la connexion et les valeurs d alimentions de votre carte. Faire ok. Et sélectionnez le menu Debugger -> Settings, JFA 2015 Page 12 /24 TP7

et dans l onglet «Power» JFA 2015 Page 13 /24 TP7

Sélectionnez 3,25 V comme tension d alimentation en glissant le curseur ou en tapant la valeur dans la case. Et cochez la case «Power target circuit from PicKit3», ce qui permet d alimenter la carte avec le pickit 3 si le courant consommé n est pas trop important! Et vérifiez l onglet «Status» et le cadre «Voltage» pour vérifier que vous avez la bonne tension! Et il demande confirmation que vous êtes bien sûr! et dans l onglet «Program Memory», vous pouvez cocher les cases «Program after successful Build» et «Run after successful program», ce qui va effectuer automatiquement la programmation, et l exécution du programme si tout est correct! Sinon vous pouvez cliquer sur l icône Program pour programmer votre carte avec le programme compilé, JFA 2015 Page 14 /24 TP7

Et vous pouvez lancer l execution de votre programme : et vérifier sur la carte que cela fonctionne! JFA 2015 Page 15 /24 TP7

C. CCS : Le langage CCS est un langage C adapté aux microcontrôleurs et Pics. C est donc en langage qui contient tous les mots clés du C plus des mots clés particuliers pour les microcontrôleurs. I. Port du microcontrôleur : Tout microcontrôleur contient des broches qui peuvent envoyer ou recueillir des informations. Ces broches sont organisées en blocs de 8 pour former un PORT et ceux-ci sont repérés par une lettre A, B, C, D, E,. On peut trouver plusieurs types d entrées sorties sur le microcontrôleur. Elles peuvent être logiques, analogiques, de type timers, de type bus, et ils peuvent avoir des spécificités de connections. II. Pour les entrées-sorties logiques (I/O) : Ces ports logiques sont appelées entrées-sorties. Car on peut les programmer indépendamment soit en entrée, soit en sortie. Pour lire ou écrire des niveaux logiques, il va falloir effectuer deux opérations : 1 ) Configuration de la direction du port : Avant de pouvoir utiliser un bit (ou tout) du port, il va falloir configurer la direction voulue pour le bit (ou port). Donc programmer la broche en entrée ou en sortie! C est l opération SET_TRIS_x () qui va se charger de cette configuration. Cherchez dans la documentation CCS la fonction de la commande SET_TRIS_x () et déterminez que fait la commande suivante : JFA 2015 Page 16 /24 TP7

SET_TRIS_B (0xAA); // B,B,B,B sont des sorties, // B,B,B,B sont des entrées. 2 ) Lecture ou écriture du port : Maintenant que la direction du port est configurée, il nous reste maintenant à lire ou à écrire dans ce port : a. Ecriture du port : Il existe plusieurs commandes CCS pour écrire des données sur le port : La commande : output_x( ) Cherchez dans la documentation CCS la fonction de la commande output_x( ) et déterminez ce que fait la commande suivante, avec la configuration de port précédente : OUTPUT_B (0x15) ; // B, B, B, B sont à 1, // B, B, B, B sont à 0. // B, B, B, B sont à X, La commande : output_bit( ) Cherchez dans la documentation CCS la fonction de la commande output_bit( ) et déterminez ce que fait la commande suivante, avec la configuration de port précédente : OUTPUT_BIT (PIN_B0, 0) ; OUTPUT_BIT (PIN_B2, 1) ; OUTPUT_BIT (PIN_B4, 1) ; OUTPUT_BIT (PIN_B6, 0) ; // B, B, B, B sont à 1, // B, B, B, B sont à 0. // B, B, B, B sont à X, La commande : output_high( ) Cherchez dans la documentation CCS la fonction de la commande output_high( ) et déterminez l équivalent de la commande suivante : OUTPUT_B (0x15) ; et avec la configuration de port précédente, avec les commandes : JFA 2015 Page 17 /24 TP7

OUTPUT_HIGH (, ); OUTPUT_HIGH (, ); OUTPUT_HIGH (, ); OUTPUT_HIGH (, ); // B, B, B, B sont à 1, // B, B, B, B sont à 0. // B, B, B, B sont à X, La commande : output_low( ) Cherchez dans la documentation CCS la fonction de la commande output_low( ) et déterminez l équivalent de la commande suivante : OUTPUT_B (0x15) ; et avec la configuration de port précédente, avec les commandes : OUTPUT_LOW (, ); OUTPUT_LOW (, ); OUTPUT_LOW (, ); OUTPUT_LOW (, ); // B, B, B, B sont à 1, // B, B, B, B sont à 0. // B, B, B, B sont à X, La commande : output_toggle( ) Cherchez dans la documentation CCS la fonction de la commande output_toggle( ) et déterminez l équivalent de l inverse de la commande suivante : OUTPUT_B (0x15) ; et avec la configuration de port précédente, avec les commandes : OUTPUT_TOGGLE (, ); OUTPUT_TOGGLE (, ); OUTPUT_TOGGLE (, ); OUTPUT_TOGGLE (, ); // B, B, B, B sont à 1, // B, B, B, B sont à 0. JFA 2015 Page 18 /24 TP7

// B, B, B, B sont à X, b. Lecture du port : Il existe plusieurs commandes CCS pour lire les données du port : La commande : input( ) Cherchez dans la documentation CCS la fonction de la commande input( ) et déterminez ce que font les commandes suivantes si le port A vaut 0x55 : Valeur0 = INPUT(PIN_A0) ; Valeur1 = INPUT(PIN_A1) ; Valeur2 = INPUT(PIN_A2) ; Valeur3 = INPUT(PIN_A3) ; Valeur4 = INPUT(PIN_A4) ; Valeur5 = INPUT(PIN_A5) ; Valeur6 = INPUT(PIN_A6) ; Valeur7 = INPUT(PIN_A7) ; La commande : input_change ( ) Cherchez dans la documentation CCS la fonction de la commande input_change( ) et déterminez ce que font les commandes suivantes si le port A valait 0x50 et vaut maintenant 0x55 : Valeur0 = INPUT_CHANGE (PIN_A0) ; Valeur1 = INPUT_CHANGE (PIN_A1) ; Valeur2 = INPUT_CHANGE (PIN_A2) ; Valeur3 = INPUT_CHANGE (PIN_A3) ; Valeur4 = INPUT_CHANGE (PIN_A4) ; Valeur5 = INPUT_CHANGE (PIN_A5) ; Valeur6 = INPUT_CHANGE (PIN_A6) ; Valeur7 = INPUT_CHANGE (PIN_A7) ; La commande : input_x ( ) Cherchez dans la documentation CCS la fonction de la commande input_x( ) et déterminez ce que fait la commande suivante si le port A vaut 0x55 : Valeur = INPUT_A ( ) ; JFA 2015 Page 19 /24 TP7

III. Pour les délais : Les délais d attente les plus simples peuvent être obtenus avec les commandes suivantes. Pour cela il faut utiliser la commande #USE DELAY pour spécifier au compilateur la vitesse d horloge du microcontrôleur (valeur du quartz) utilisée pour qu il adapte correctement les commandes delay : La commande : delay_us ( ) Cherchez dans la documentation CCS la fonction de la commande delay_us( ) et déterminez ce que fait la commande suivante : DELAY_US (5000) ; IV. Synthèse : La commande : delay_ms ( ) Cherchez dans la documentation CCS la fonction de la commande delay_ms( ) et déterminez ce que fait la commande suivante : DELAY_MS (2000) ; Pour vérifier que vous avez bien compris les commandes précédentes, analyser le programme cidessous et déterminer sa fonction : //------------ Programme prog1.c --------------------------- // // Auteur : JFA // Version: 1.0 //----------------------------------------------------------- #include <16F876A.H> // fichier Header #fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP // Déclaration des adresses des ports E/S #byte PORTB = 6 // Fréquence du quartz #use delay (clock=20000000) // adresse du PORT B // Fréquence du quartz 20MHz // Affectation des entrées et sorties de type bit #define Led1 PIN_B1 #define Led2 PIN_B2 #define Led3 PIN_B3 #define Led4 PIN_B4 //----------Programme principal --------------------------------- void main (void) { JFA 2015 Page 20 /24 TP7

PORTA=0x00; set_tris_a(0b11111111); PORTB=0x00; set_tris_b(0b00000000); do { output_high(led1) ; delay_ms(1000); output_low(led1) ; delay_ms(1000); output_bit(led2,1) ; delay_ms(1000); output_bit(led2,0) ; delay_ms(1000); output_b(0x04) ; delay_ms(1000); output_b(0x00) ; delay_ms(1000); output_toggle(led4) ; delay_ms(1000); output_toggle(led4) ; delay_ms(1000); } while (! input(pin_a1) ) ; } JFA 2015 Page 21 /24 TP7

V. Pour les entrées-sorties analogiques (ADC) : Ces ports analogiques sont appelés AN. Ils peuvent être répartis sur plusieurs ports. Pour lire ou écrire des niveaux analogiques, il va falloir effectuer plusieurs opérations dans le bon ordre : 1 ) Configuration de l ADC : La commande : setup_adc_port(valeur) Cherchez dans la documentation CCS la fonction de la commande setup_adc_port(valeur) et déterminez les options «valeurs» disponibles, et déterminer que fait la commande suivante : setup_adc_port (ALL_ANALOG ); 2 ) Configuration du mode de l ADC : La commande : setup_adc(mode) Cherchez dans la documentation CCS la fonction de la commande setup_adc(mode) et déterminez les options «mode» disponibles, et déterminer que fait la commande suivante : setup_adc(adc_clock_internal); 3 ) Choix du convertisseur : La commande : set_adc_channel(valeur) Cherchez dans la documentation CCS la fonction de la commande set_adc_channel(valeur) et déterminez les options «valeur» disponibles, et déterminer que fait la commande suivante : set_adc_channel(0) ; Quelle commande faut-il mettre absolument après? JFA 2015 Page 22 /24 TP7

4 ) Lecture de la valeur : La commande : read_adc (mode) Cherchez dans la documentation CCS la fonction de la commande read_adc (mode), et déterminez les options «mode» disponibles, et déterminer que fait la commande suivante : read_adc(adc_start_only); delay_us(10) ; value=read_adc(adc_read_only); Quelle est la contrainte à respecter sur la variable valeur? 5 ) Durée de conversion : La conversion d une tension analogique en numérique n est pas instantanée et peut prendre un peu de temps à l échelle de l horloge du microcontrôleur! De plus sur certains convertisseurs, le temps de conversion dépend de la valeur de la tension à convertir. Plus la tension est élevée, plus la conversion est longue. Donc il faut soit attendre un temps maximum, soit attendre la fin de la conversion avant d aller chercher la valeur convertie. La commande : adc_done( ) Cherchez dans la documentation CCS la fonction de la commande adc_done( ), et déterminer que fait la commande suivante : int1 done = adc_done(); while(!done) { done = adc_done(); } VI. Synthèse : Pour vérifier que vous avez bien compris les commandes précédentes, analyser le programme cidessous et déterminer sa fonction : /* * File: main.c * * Created on January 25, 2013, 18:09 PM */ #include <18F45K20.h> //Déclaration des registre et de la configuration #fuses FOSC,NOWDT,NOPROTECT,NOLVP,NOPUT #use delay(clock=20000000) //quartz à 20MHZ void main(void) { int value; JFA 2015 Page 23 /24 TP7

setup_adc(adc_clock_div_32); setup_adc_ports( ALL_ANALOG ); set_adc_channel(0); delay_ms(100); while ( true ) { value = read_adc(); output_d(value); delay_ms( 100 ); } } JFA 2015 Page 24 /24 TP7