Table des matières
Transcription
Table des matières
Activité_ATMEGA_mise_en_oeuvre Table des matières 1Mise en œuvre matérielle de la carte Domoweb.........................................................................................................................................2 2Logiciel AVRStudio....................................................................................................................................................................................2 2.1Utilisation d'un projet existant.............................................................................................................................................................2 2.2Compilation.........................................................................................................................................................................................2 2.3Programmation de l'ATMEGA 32 ......................................................................................................................................................4 3Analyse du programme source en langage C:.............................................................................................................................................4 3.1Commentaires:.....................................................................................................................................................................................4 3.2Variables globales................................................................................................................................................................................4 3.3Structure d'un programme en C:..........................................................................................................................................................5 3.3.1Structure générale de tout programme en C destiné au micro-contrôleur ATMEGA 32.............................................................5 3.3.2programme lcd.c..........................................................................................................................................................................5 3.4Librairie lcd2x16.................................................................................................................................................................................5 4Réalisation d'une horloge............................................................................................................................................................................6 4.1Sauvegarder un fichier source sous un nouveau nom.........................................................................................................................6 4.2Choisir un fichier .c comme fichier source (Source File)...................................................................................................................6 4.3Programme ldc_horloge1....................................................................................................................................................................6 5Exercices.....................................................................................................................................................................................................7 5.1Question de cours................................................................................................................................................................................7 5.2Décomptage.........................................................................................................................................................................................7 5.3Nombres pairs de 1000 à 2000............................................................................................................................................................7 Fiche pédagogique Objectifs pédagogiques 3.1 Réalisation d'un prototype Connaissances visées • Implémentation d'un programme dans un composant programmable Prérequis • Utiliser l'explorateur de windows pour se déplacer dans une arborescence • Créer un répertoire • Copier le contenu d'un répertoire à un emplacement donné Matériel • Carte "domoweb" • programmateur AVRISP mkll Logiciel AVRStudio Évaluation webographie RT_04/10/11C:\Dropbox\@STI2D_SIN\Activité_ATMEGA_mise_en_oeuvre.odt 1/8 Activité_ATMEGA_mise_en_oeuvre 1 Mise en œuvre matérielle de la carte Domoweb La carte Domoweb, alimentée en 5v, contient un micro contrôleur ATMEGA 32 qui peut commander un écran LCD de 2lignes de 16 caractères ainsi qu'un circuit EZL50M (non utilisé dans cette activité, il permet de dialoguer sur un réseau Ethernet). Pour fonctionner le micro-contrôleur doit recevoir un programme appelé programme objet. Ce programme objet est généré à l'aide du logiciel AVRStudio. Il est ensuite implanté dans le micro-contrôleur à l'aide du programmateur AVRISP mkll relié coté PC à un port USB et coté Domoweb au connecteur ISP. Dans cette activité, nous réaliserons une application simple permettant d'afficher différents messages sur l'écran lcd. Connecteur RJ45 (Ethernet) Programmateur AVRISP mkll Connecteur: Adaptateur secteur/ 5vcc EZL50M Connecteur ISP ATMEGA 32 LED interne LED externe écran LCD 2x16caractères ﬦAlimenter la carte Domowew et la relier au PC par l'intermédiaire du programmateur AVRISP mkll 2 Logiciel AVRStudio 2.1 Utilisation d'un projet existant Dans un premier temps , nous allons utiliser un projet déjà existant et tester son effet. ﬦCréer dans votre répertoire "Mes documents" un dossier ATMEL ﬦCopier dans ce dossier le dossier domoweb situé dans: commun:\travail\@STI2D_SIN\ATMEL ﬦPour ouvrir le projet, il suffit maintenant de cliquer sur le fichier AVR.aps de votre dossier domoweb La fenêtre de AVR Studio s'ouvre alors (voir page suivante). ﬦFermer la fenêtre "Message". 2.2 Compilation La fenêtre de visualisation des fichiers contient un programme en langage C appelé lcd.c. Ce programme (appelé source) n'est pas utilisable par le micro-contrôleur nous allons donc à partir de ce programme générer un programme: AVR.hex (appelé objet) utilisable par le micro-contrôleur. Cette opération s'appelle une compilation (Build en anglais). Pour compiler le programme source: ﬦVérifier dans la fenêtre AVR GCC (à gauche) que le nom du fichier dans le répertoire Source Files est bien le nom du fichier que nous voulons compiler. ﬦCliquer sur (ou appuyer F7), après quelques secondes, le message "Buid succeeeded with 0 Warnings..." doit s'afficher dans la fenêtre "Build". Si ca n'est pas le cas, il faut se déplacer dans la fenêtre Build et cliquer sur la première ligne commençant par un point rouge ( ) pour faire apparaître dans la fenêtre du programme source un index bleu( )face à la ligne du programme qui comporte une erreur. On peut alors corriger cette erreur puis recompiler, puis corriger les autres erreurs et recompiler jusqu'à obtenir à la compilation le message "Buid succeeeded with 0 Warnings..." RT_04/10/11C:\Dropbox\@STI2D_SIN\Activité_ATMEGA_mise_en_oeuvre.odt 2/8 Activité_ATMEGA_mise_en_oeuvre Fenêtre "AVR GCC" Permet d'accéder aux différents fichiers du projet Fenêtre de visualisation des fichiers Fenêtre "Build" indiquant les erreurs de compilation Fenêtre "Message" (peut être fermée pour gagner de l'espace) rt _04/10/11 C:\Dropbox\@STI2D_SIN\Activité_ATMEGA_mise_en_oeuvre.odt 3/8 Activité_ATMEGA_mise_en_oeuvre 2.3 Programmation de l'ATMEGA 32 Nous allons maintenant programmer la mémoire flash du micro-contrôleur ATMEGA 32 avec le programme objet réalisé précédemment. (...\domoweb\default\AVR.hex) ﬦVérifier que la carte Domoweb est bien alimentée et connectée au PC par l'intermédiaire d'un programmateur AVRISP mkll présentant ses deux LED vertes allumées. ﬦCliquer alors sur , la fenêtre suivante doit alors s'ouvrir: □ Cliquer ensuite sur ce bouton pour chercher le chemin et le nom du fichier objet (dans notre exemple: ...\domoweb\default\AVR.hex)* □ Cliquer enfin sur le bouton Program: Pendant la programmation, la LED externe passe rouge et la LED interne clignote vert N° de série du programmateur *Remarque: le programme objet est toujours situé dans le répertoire default de notre projet et s'appelle toujours AVR.hex ﬦObserver maintenant l'écran lcd et noter son aspect: 3 Analyse du programme source en langage C: 3.1 Commentaires: Une portion de programme commençant par /* et finissant par */ est considérée par le compilateur comme un commentaire qui sert à rendre le programme source plus clair, mais n'a aucun effet sur le programme objet. On peut aussi commenter la fin d'une ligne en insérant // (tout ce qui suit // est un commentaire. Si l'on veut supprimer provisoirement une ligne sans être obligé de l'effacer, il suffit d'insérer // en début de ligne. Remarque: avec AVRStudio, les commentaires sont en vert. ﬦSur le programme lcd.c (page suivante), colorier en vert les commentaires 3.2 Variables globales Il existes différent types de variables numériques: exemple type Taille en octet unsigned char 1 unsigned int 2 Plage de valeurs acceptée 0 0 à à -3.4*10-38 à ﬦCombien existe-t-il de variables dans le programme lcd.c (page suivante)? float 4 RT_04/10/11C:\Dropbox\@STI2D_SIN\Activité_ATMEGA_mise_en_oeuvre.odt 255 65535 3.4*1038 4/8 Activité_ATMEGA_mise_en_oeuvre 3.3 Structure d'un programme en C: 3.3.1 Structure générale de tout programme en C destiné au micro-contrôleur ATMEGA 32 #define F_CPU 8000000UL #include <avr/io.h> ... int main(void) { ... // indique la fréquence de l'horloge au compilateur // librairie contenant la définition des registres // variables globales // segment de programme qui ne sera effectué qu'une seule fois while (1) { ... } // segment de programme qui s'effectue indéfiniment en boucle } ﬦCombien existe-t-il d'instruction (ligne de programme) qui ne sont effectuées qu'une seule fois dans le programme lcd.c ? ﬦCombien existe-t-il d'instruction qui sont effectuées en boucle dans le programme lcd.c ? 3.3.2 programme lcd.c 3.4 Librairie lcd2x16 la librairie lcd2x16 contient des fonctions destinées à commande l'afficheur lcd. ﬦPour connaître l'utilisation des fonctions de la librairie lcd2x16, cliquer dans la fenêtre AVR GCC sur le fichier lcd2x16.h situé dans le répertoire External Dependencies. Ce fichier comporte en début, un commentaire expliquant l'usage des différentes fonctions disponibles. Par exemple la fonction InitLCD(); a pour effet d'initialiser l'écran lcd. Il est indispensable de l'effectuer une fois avant d'utiliser les fonctions d'affichage. La fonction CursLCD(l,c); positionne le curseur à la ligne l et la colonne c. (l= 0 à 1 et c = 0 à 15). ﬦModifier le programme lcd.c de façon à obtenir l'affichage suivant: S T i l I 2 D e s 2 t 0 1 1 - 2 0 1 2 0 9 : 3 5 : 0 0 *09, 35 et 00 correspondent à des variables: h, m et s de type unsigned char. Les reste de l'affichage sera considéré comme des chaines de caractères. RT_04/10/11C:\Dropbox\@STI2D_SIN\Activité_ATMEGA_mise_en_oeuvre.odt 5/8 Activité_ATMEGA_mise_en_oeuvre 4 Réalisation d'une horloge Nous allons écrire un nouveau programme source. Afin de gagner du temps et d'éviter les erreurs de frappe nous utiliserons comme point de départ le programme lcd.c que nous sauverons sous un nouveau nom 4.1 Sauvegarder un fichier source sous un nouveau nom ﬦSauvergarder le programme lcd.c sous le nom lcd_horloge1.c dans le répertoire domoweb, en utilisant:File Save As... 4.2 Choisir un fichier .c comme fichier source (Source File) ﬦDans la fenêtre AVR GCC (à gauche) cliquer sur le de Source File, cliquer alors avec le bouton droit sur le fichier source actuel (lcd.c) et cliquer enfin sur : l'ancien fichier source disparaît. Cliquer maintenant avec le bouton droit sur et choisir dans le menu déroulant. Double cliquer enfin sur le nom du nouveau fichier fichier source (lcd_horloge1.c). 4.3 Programme ldc_horloge1 ﬦModifier le fichier de façon à obtenir ceci: ﬦTester ce programme et noter vos observations: Pour un défilement correct des secondes il faut faire le test suivant: si s atteint la valeur 60, on remet s à 0 et on incrémente les minutes ﬦInsérer dans le programme, juste après la ligne s++ le segment de programme suivant, tester et noter vos observation // incrémentation de s ﬦProposer un programme complet réalisant une horloge ﬦProposer un programme (calendrier.c) fournissant l'année, le mois, le jour, l'heure , la minute et la seconde. RT_04/10/11C:\Dropbox\@STI2D_SIN\Activité_ATMEGA_mise_en_oeuvre.odt 6/8 Activité_ATMEGA_mise_en_oeuvre 5 Exercices 5.1 Questions de cours a Que signifie compiler? b Quelles sont les valeur mini et maxi d'une variable de type unsigned char 5.2 Décomptage a Quel est l'aspect de l'écran lcd correspondant à l'exécution de ce programme? b Proposer une modification du programme pour que le nombre de seconde s'affiche à la place des tirets c Proposer une modification du programme pour que le décomptage s'arrête à 0 5.3 Nombres pairs de 1000 à 2000 a Proposer un programme produisant l'affichage suivant: L e s p a i n r s o m b r e s n t o s x x x x xxxx= 1000 puis 1002, etc jusqu'à 2000 en boucle (chaque nombre restant affiché une demi seconde) RT_04/10/11C:\Dropbox\@STI2D_SIN\Activité_ATMEGA_mise_en_oeuvre.odt 7/8 Activité_ATMEGA_mise_en_oeuvre 6 1STI2D contrôle n°3: ATMEGA mis en œuvre (le 7-10-2011) 6.1 Questions de cours a Un programme source est …. b Un programme objet est ... 6.2 Table du 7 a Compléter dans le programme ci dessous, les pointillés par des commentaires b Quel est l'aspect de l'écran lcd correspondant à l'exécution de ce programme? 6.3 Décalage horaire a Proposer un programme produisant l'affichage suivant: P a r i s : x x H S e o u l : y y H xx= 00; 01; ..; 23; 00; 01; ... (chaque nombre restant affiché 3 secondes) yy= heure de Séoul Il y a sept heures de décalage entre Paris et Séoul : quand il est 8h à Paris , il est 15h à Séoul RT_04/10/11C:\Dropbox\@STI2D_SIN\Activité_ATMEGA_mise_en_oeuvre.odt 8/8