Programmation des Micro-Contrôleurs Industriels Université Pierre et Marie Curie, niveau L3
LI326
}}}
[[PageOutline]]
== Objectifs et organisation du module
Un microcontrôleur est un circuit intégré à usage général qui intègre sur une seule puce un microprocesseur programmable et des contrôleurs de périphériques. La conception d'un système à base de microcontrôleur réclame des compétences en logiciel et en matériel.
Le module utilise la plateforme Arduino.
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 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 vous aimez le travail minutieux et que vous avez un peu de sens pratique. Même si beaucoup de ressources en français existent, la documentation technique est principalement en anglais.
Les TME se déroulent dans les locaux du département SoC du LIP6 dans la barre 24-25 salle 305. Nous vous attribuerons un compte spécifique.
Les étudiants souhaitant accéder à leur compte de l'ARI depuis le compte SoC 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.
* 11 cours de 1h45, le mardi de 14h à 15h45.
* 11 TME de 3h30, le vendredi de 16h à 19h45.
La notation de ce module provient de 60% de l'examen final et de 40% du contrôle continu.
== Séances
1. [wiki:2015_cours1_intro_micro.pdf Introduction aux microcontrôleurs]
== Documents
{{{
#!comment
== Objectifs et organisation du module
Un microcontrôleur est un circuit intégré à usage général qui intègre sur une seule puce un microprocesseur programmable et des contrôleurs de périphériques. La conception d'un système à base de microcontrôleur réclame des compétences en logiciel et en matériel.
Ce module utilise le microcontrôleur PIC16F877A de Microchip et la programmation se fait en assembleur.
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ées 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 vous aimez le travail minutieux et que vous avez 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 est donc indispensable.
Les TME se déroulent dans les locaux du département SoC du LIP6 dans la barre 65-66 salle 408. Nous vous attribuerons un compte spécifique. Les salles sont ouvertes en libre-service sauf aux heures où elles sont utilisées pour les TME.
Les étudiants souhaitant accéder à leur compte de l'ARI depuis le compte SoC 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.
* 11 cours de 1h45, le mardi de 14h à 15h45.
* 11 TME de 3h30, le vendredi de 16h à 19h45, en salle 408 du couloir 65-66.
La notation de ce module provient de 60% de l'examen final et de 40% du contrôle continu qui dépend de votre participation aux séances.
== Séances
1. [wiki:li326-Intro Introduction aux microcontrôleurs et codage de base]
// [htdocs:2014_cours1_intro_micro.pdf cours introduction]
1. [wiki:li326-BasePIC Bases de l'assembleur PIC et environnement de Programmation.]
// [htdocs:2014_cours2_base.pdf cours base assembleur]
1. [wiki:li326-ProgPic Programmation en assembleur PIC : directives, macro-instructions, boucles, switch-case.]
1. [wiki:li326-Evenements Gestion des évènements et programmation par composants : interruptions]
// [htdocs:2014_cours3_interruptions cours interruptions] -- [htdocs:2014_cours4_led_bp.pdf cours led et bp]
1. // [htdocs:2014_cours5_taches.pdf cours taches]
1. [wiki:MicroTmeRs232 Communication série RS232 : terminal de commandes.] // [htdocs:2014_cours6_serial.pdf cours rs232]
1. // [htdocs:2014_cours7_lcd.pdf cours lcd]
1. // [htdocs:2014_cours8_timers_pwm.pdf cours timers et pwm]
1. // [htdocs:2014_cours9_analogique.pdf cours analogique]
1. [wiki:MicroTmeI2c Gestion du port i2c] // [htdocs:2014_cours10_i2c.pdf cours i2c]
1. [htdocs:2014_cours11_rc5.pdf RC-5 protocole des télécommandes infrarouges]
{{{
#!comment
1. [wiki:li326-Intro Introduction aux microcontrôleurs et codage de base]
// [htdocs:2014_cours1_intro_micro.pdf cours introduction]
1. [wiki:li326-BasePIC Bases de l'assembleur PIC et environnement de Programmation.]
// [htdocs:2014_cours2_base.pdf cours base assembleur]
1. [wiki:li326-ProgPic Programmation en assembleur PIC : directives, macro-instructions, boucles, switch-case.]
1. [wiki:li326-Evenements Gestion des évènements et programmation par composants : interruptions]
// [htdocs:2014_cours3_interruptions cours interruptions] -- [htdocs:2014_cours4_led_bp.pdf cours led et bp]
1. [wiki:li326-IOsimples Entrées-sorties numériques simples et bibliothèques de fonctions : leds et bouton poussoir idéal.]
1. // [htdocs:2014_cours5_taches.pdf cours taches]
1. [wiki:MicroTmeRs232 Communication série RS232 : terminal de commandes.] // [htdocs:2014_cours6_serial.pdf cours rs232]
1. [wiki:li326-PeriphBase Périphériques basiques : afficheur LCD.] ([htdocs:2014_cours7_lcd.pdf cours lcd])
1. [wiki:li326-Periph1fil Périphériques sur 1 fil : commandes PWM] ([htdocs:2014_cours8_timers_pwm.pdf cours timers et pwm])
1. [wiki:li326-ConvAnaNum Conversion analogique numérique.] ([htdocs:2014_cours9_analogique.pdf cours analogique])
1. [wiki:li326-i2c bus I2C : commande de périphériques standardisés.]
1. [wiki:li326-infrarouge protocole des télécommandes infrarouges.]
}}}
{{{
#!protected
1. [wiki:li326-ProgPic Programmation en assembleur PIC : directives, macro-instructions, boucles, switch-case.]
1. [wiki:li326-Evenements Gestion des évènements et programmation par composants : interruptions, timer, reset, watchdog, sleep, automates.]
1. [wiki:li326-IOsimples Entrées-sorties numériques simples et bibliothèques de fonctions : leds et bouton poussoir idéal.]
1. [wiki:li326-rs232 Communication série RS232 : bootloader et terminal de commandes.]
1. [wiki:li326-PeriphBase Périphériques basiques : clavier matriciel et afficheur LCD.]
1. [wiki:li326-Periph1fil Périphériques sur 1 fil : clavier, commande PWM et échange de données.]
1. [wiki:li326-ConvAnaNum Conversion analogique numérique.]
1. [wiki:li326-i2c bus I2C : commande de périphériques standardisés.]
1. [wiki:li326-infrarouge protocole des télécommandes infrarouges.]
1. [htdocs:2013_cours1_microcontroleurs_p1.pdf Qu’est-ce qu’un microcontrôleur] ?[[BR]][htdocs:2013_cours1_microcontroleurs_p2.pdf Architecture du PIC16f877]
2. [htdocs:2013_cours2_pic16f877.pdf Premier pas avec le PIC16f877]
3. [htdocs:2013_cours3_fonction_interruption.pdf Les fonctions et les interruptions]
4. [htdocs:2013_cours4_gpio_lcd.pdf Les GPIO / LCD]
5. [htdocs:2013_cours5_serial.pdf La communication RS232]
6. [htdocs:2013_cours6_analogique.pdf Conversion A-N]
7. [htdocs:2013_cours7_i2c.pdf Protocole i2c]
5. [htdocs:2011_cours5_timer.pdf La gestion du temps]
8. [htdocs:2011_cours8_prognds.pdf Architecture NDS, Environnement de programmation][[BR]][htdocs:2011_cours8_archiarm.pdf Architecture NDS, Jeu d'instruction du processeur ARM]
9. API et premier programme
10. programmation graphique
11. Architecture de l’ARM 7 et 9
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]
3. [wiki:MicroTmeInter Le bouton poussoir, usage des interruptions]
4. [wiki:MicroTmeRs232 Gestion du port RS232]
5. [wiki:MicroTmeAnapwm Les entrées analogiques]
6. [wiki:MicroTmeI2c Gestion du port i2c]
6. [wiki:MicroTmeI2cArduino Premier pas avec Arduino]
3. [wiki:MicroTmeLcd L'affichage LCD]
7. [wiki:MicroTmeNDSDTW Reconnaissance des chiffres avec la NDS]
5. [wiki:MicroTmeTimers Production d'un signal périodique modulé]
8. [wiki:MicroTmeTaches Mise en évidence du multitâches]
9. [wiki:MicroTmeSloop Mise en oeuvre de sloop]
}}}
== Aide mémoire
* [wiki:file-p16f877.inc Noms des symboles du pic16f877]
* [wiki:file-picmips.inc Quelques macros utiles pour faire croire qu'on a un vrai assembleur]
* [wiki:doc-assembleur-pic16 Instructions assembleur PIC16 et extraits de code]
== Plateforme de développement
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®.
* [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]
== Documents annexes
* [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)]
* [http://www.oumnad.123.fr Oumnad : des cours et des projets]
* [http://www.sonelec-musique.com/index.html sonelec : une base impressionnantes de montages expliqués]