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

Documents pareils