Contacts
Enseignant: Jérôme Collin, responsable (local M-4013, poste 5060)
Support technique supplémentaire: Laurent Tremblay (local M-4011, poste 7181)
Chargés de laboratoire: Section 1: Stefan Cotargasanu (Lundi AM)
Raphaël Tremblay (Mercredi PM)
Section 2: Ely Cheikh Abass (Mardi PM)
Manel Keddam (Jeudi AM)
Section 3: Tristan Rioux (Lundi PM)
Charles De Lafontaine (Jeudi PM)
Section 4: Paul Petibon (Mardi AM)
Julien Bourque (Vendredi AM)
Section 5: Sunnee Chevalier (Mercredi AM)
Meriam Ben Rabia (Vendredi PM)
Section 6: Ghali Chraibi (Mardi soir)
Xavier Caron (Jeudi soir)

Programmation des microcontrôleurs AVR


La première question à se poser est: qu'est-ce qu'un microcontrôleur? Un microcontrôleur est un microprocesseur qui contient en plus des éléments électroniques supplémentaires utiles au contrôle de systèmes comme des minuteries (timers en anglais), des interfaces série, des convertisseurs analogiques/numériques, etc... L'ajout de ces éléments évite aux concepteurs de systèmes d'avoir à les introduire eux-mêmes dans leurs circuits. Ainsi, avec une seule puce microcontrôleur, on peut arriver à éliminer des composantes qu'il faudrait ajouter sur le circuit imprimé si l'on avait recours à un microprocesseur qui n'a pas de périphériques intégrés.


Un microcontrôleur est donc plus gros qu'un microprocesseur? Oui et non. Oui au sens où il contient des éléments supplémentaires. Par contre, on peut aussi répondre non puisque les microcontrôleurs sont en général moins performants que les microprocesseurs. Cette raison vient du fait que les microprocesseurs sont utilisés dans des systèmes où il y a de grandes exigences de traitement d'information. Les dernières consoles de jeux ou les PC les plus récents doivent satisfaire des utilisateurs toujours plus exigeants et en recherche de performance. Les microcontrôleurs sont plutôt employés pour des tâches de contrôle, de commande et d'interface où cette exigence est moindre.


Dans un cours d'architecture des ordinateurs (comme INF1600), on programme généralement les microprocesseurs en langage d'assemblage. Ici, nous programmerons des microcontrôleurs en C et C++. La programmation prendra donc des couleurs un peu particulières pour nous. Quelques points importants:



Alors, que faut-il pour programmer un microcontrôleur AVR? Il y a une librairie appelée AVRLibC qui est l'équivalent d'une librairie C standard, mais adaptée pour le contexte d'un microcontrôleur AVR. Il y a plusieurs façons d'accéder à la documentation de cette librairie:



Ce qu'il y a d'intéressant avec la documentation de Atmel sur le ATMega324PA (aussi très lourde – plusieurs centaines de pages!) est qu'on y trouve des schémas logiques de toute la circuiterie, mais également des bouts de code en C et en assembleur pour en faciliter l'utilisation, la compréhension et la programmation. Si jamais le site de Atmel est fermé pour entretient (oui, ça arrive de temps à autre...), voici la copie sur le site web du cours.


Le document de Philippe Proulx


Un des meilleurs documents pour comprendre comment aborder les divers aspects du cours en offrant un résumé des principaux principes est le document de Philippe Proulx. Il est très utile d'avoir ce document à portée de la main en laboratoire.


Évidemment, les concepts de programmation seront introduits au fur et à mesure des exercices et avec références à ces documents au besoin.