Programmation des MicroContrôleurs Industriels Université Pierre et Marie Curie, niveau L3 LI326
}}}
[[PageOutline]]
== Le module microcontrôleur
=== Objectifs
Comme chacun peut s'en rendre compte, l'informatique est de plus en plus «enfouie» : elle est cachée dans les puces que l'on trouve dans les téléphones portables, dans les agendas électroniques, dans les automobiles, dans les équipements électroménagers, etc. La puce spécialisée qui contrôle le système de freinage d'une voiture moderne contient un processeur qui exécute un petit système d'exploitation multitâches embarqué sur la puce elle-même. Le circuit intégré qui constitue le coeur d'un téléphone portable contient plusieurs microprocesseurs et constitue un véritable ordinateur parallèle sur une seule puce. La caractéristique de ces systèmes sur puce est l'intégration étroite entre la conception du matériel et la conception du logiciel spécialisé pour chaque application.
Un microcontrôleur est un circuit intégré d'usage général qui intègre sur une seule puce un microprocesseur programmable et les principaux contrôleurs de périphériques. Ils sont devenus des composants incontournables dans les domaines de la télécommunication, de l'automatisme, de la robotique.
Ce module vise à l'apprentissage de la compréhension de l'architecture de ces composants tant sur le plan matériel que logiciel. Il s'agit aussi de savoir utiliser les outils de développement associés à ces microcontrôleurs.
Cet enseignement, très pratique, vous concerne si vous êtes intéressés par la programmation «bas-niveau» en assembleur et en C de vrais microcontôleurs.
Nous allons en aborder deux.
* Le premier est le PIC16F877, processeur 8 bits de la société Microchip.
* Le second sera un ARM9, processeur 32 bits de la société ARM.
Il est nécessaire d'avoir des connaissances de base en architecture des ordinateurs : codage des informations, notions d'assembleur. Ces pré-requis correspondent au contenu des enseignements d'initiation à l'informatique et à la structure des machines inculqués lors des deux premières années de la licence. Même si elle est bienvenue, aucune connaissance en électronique n'est nécessaire. Notez que l'apprentissage des microcontrôleurs est d'autant plus facile que l'on aime le travail minutieux et qu'on a un peu de sens pratique. Notez également que la documentation est principalement en anglais car c'est celle fournie directement par les constructeurs. La connaissance de l'anglais technique lu est indispensable.
=== En pratique
Les TME se déroulent dans les locaux de l'équipe ASIM en Tour 65-66 salle 408. Nous vous attribuerons un compte spécifique. Les salles sont ouvertes en libre service sauf les heures où elles sont utilisées pour les TME.
Vous pouvez utiliser le simulateur ou les kits de développement en dehors des heures de TME. Les étudiants souhaitant accéder à leur compte de l'ARI depuis le compte ASIM peuvent le faire en demandant à l'administrateur
système ([mailto:root] depuis les salles machines) que leur compte soit ouvert sur la passerelle durian.
Notez que pour le transfert de données, vous pouvez aussi utiliser une clé USB.
* 12 cours de 1h30, le mardi de 17h45 à 19h15, en salle J6, patio 44-55.
* 12 TME de 3h30, le vendredi de 15h45 à 19h30, en salle 408 du couloir 65-66.
La notation de ce module provient de 60% de l'examen final de mai et de 40% du contrôle
continu. Le contrôle continu est constitué des notes TME et de la note de micro-projet (tous les TME pourront faire l'objet d'évaluation).
||[mailto:franck.wajsburt@lip6.fr][[Image(htdocs:franck.gif, nolink, align=center)]]||[mailto:francois.pecheux@lip6.fr][[Image(htdocs:francois.gif,nolink, align=center)]]||
== Matériel Pédagogique
=== Cours
1. [htdocs:2011_cours1_microcontroleurs_v2.pdf Qu’est-ce qu’un micro-contrôleur] ?
2. [htdocs:2011_cours2_pic16f877.pdf Le PIC16f877]
3. [htdocs:2011_cours3_gpio.pdf Les GPIO]
4. [htdocs:2011_cours4_interruptions.pdf Les interruptions]
5. [htdocs:2011_cours5_timer.pdf La gestion du temps]
6. [htdocs:2011_cours6_serial.pdf Les communications série]
7. Conversion A-N
8. Architecture NDS, environnement de programmation
9. API et premier programme
10. programmation graphique
11. Architecture de l’ARM 7 et 9
=== TME
1. [wiki:MicroTmeBase Prise en mains de l'assembleur pic et des outils de développement]
2. [wiki:MicroTmeFonction Plus loin en assembleur : la mémoire, le temps et les fonctions]
4. [wiki:MicroTmeLcd L'affichage LCD]
4. [wiki:MicroTmeInter Le bouton poussoir, usage des interruptions]
{{{#!comment
4. [wiki:MicroTmeAnapwm Les entrées analogiques et les sorties PWM]
5. [wiki:MicroTmeTimers Production d'un signal périodique modulé]
6. [wiki:MicroTmeRs232 Gestion du port RS232]
7. [wiki:MicroTmeI2c Gestion du port i2c]
8. [wiki:MicroTmeTaches Mise en évidence du multitâches]
9. [wiki:MicroTmeSloop Mise en oeuvre de sloop]||
}}}
=== Aide mémoire
* [wiki:picmips.inc Quelques macros utiles pour faire croire qu'on a un vrai assembleur]
* [wiki:Assembleur Instructions assembleur PIC16 et extraits de code]
== Documentations Officielles
Les logiciels fournis fonctionnent sous Linux. ce sont des logiciels libres, dont les sources et les exécutables sont chargeables sur le net. A titre indicatif, la société Microchip® qui fabrique le PIC16F877 fournit une suite logicielle complète et gratuite pour Windows®.
=== Plateforme de développement
* [http://www.olimex.com/dev/pic-mt-usb.html la carte de développement pic-mt-usb]
[[Image(htdocs:pic-mt-lcd.jpg,nolink,width=300px,align=left)]][[Image(htdocs:pic-mt-pcb.jpg,nolink,width=330px)]]
* [htdocs:gpsim_0.21.2.pdf Simulateur/debugger graphique PIC]
* [htdocs:gpasm.pdf Assembleur PIC]
* [htdocs:picprog_1.17.pdf Programmateur PIC]
=== Extraits de la documentation officiel du PIC16F877
* [htdocs:1_pic16f877_overview.pdf Vue d'ensemble du microcontrôleur.]
* [htdocs:2_pic16f877_memory.pdf Description de l'espace mémoire, rôle des registres spéciaux.]
* [htdocs:3_pic16f877_instruct.pdf Liste des instructions.]
* [htdocs:4_pic16f877_ioport.pdf Comportement électrique des ports d'entrées-sorties.]
* [htdocs:5_pic16f877_conf_reset_int_wd.pdf Bits de configuration, types de reset, d'interruption et watchdog.]
* [htdocs:6_pic16f877_timerccp.pdf Description des timers et des modules.]
* [htdocs:7_pic16f877_mssp.pdf Module serial synchronous protocol (SPI et I2C)]
* [htdocs:8_pic16f877_usart.pdf Universal Synchronous Asynchronous Receive Transmit (RS232)]
* [htdocs:9_pic16f877_can.pdf Convertisseur Analogique Digital]
=== Protocoles de communication
* [htdocs:i2c_spec.pdf Spécifications de la norme I2C]
* [htdocs:srf08.pdf Spécification du télémetre ultra-son]
* [htdocs:tda8444.pdf Spécification du convertisseur numérique Analogique]
* Documentations en anglais sur le protocole rs232
* [http://www2.rad.com/networks/1995/rs232/rs232.htm rs232 (version courte)],
* [http://www.beyondlogic.org/serial/serial.htm rs232 (version longue)]