![]() |
Dernière révision : mars 2025 |
![]() |
![]() |
![]() |
![]() |
![]() | ![]() |
Sommaire Introduction L’électronique et l’informatique ont profondément modifié notre société. C’est certainement la révolution industrielle la plus rapide de l’histoire de l’humanité. Aujourd'hui, les systèmes embarqués sont omniprésents dans notre vie quotidienne et nous emmènent vers un monde de plus en plus connecté, avec ses avantages et ses inconvénients... L’auteur ne pourra en aucun cas être tenu responsable des dommages qui résulteraient de l’utilisation des informations publiées sur ce site, sous licence Creative Commons BY-NC-SA. Toute reproduction ou modification d'un document, même partielle, est autorisée à condition que son origine et le nom de l'auteur soient clairement indiqués (BY), qu'il soit utilisé à des fins non commerciales (NC), que son mode de diffusion soit identique au document initial (SA), et que cela ne porte pas atteinte à l’auteur. Ce document vous propose de créer vos propres cartes basées sur le microcontrôleur ATmega328, en espérant toujours être le plus clair et précis possible. Malgré tout le soin apporté à la rédaction, l'auteur vous remercie de bien vouloir le contacter si vous relevez la moindre erreur ou omission, et vous souhaite une agréable lecture. Le bootloader Le bootloader est un micrologiciel (firmware) permettant d'utiliser le port série de l'ATmega328 pour transférer (téléverser) un programme (sketch) via un convertisseur USB - RS-232 et un câble USB. Une carte Arduino possède un ATmega328 avec bootloader et un convertisseur USB - RS-232, on peut donc téléverser un sketch depuis un port USB de son ordinateur. Le bootloader possède deux inconvénients :
Sans bootloader, un ATmega328 ne peut se programmer qu'à travers son bus SPI. Il faudra donc choisir un programmateur capable de gérer ce bus. A noter qu'une carte Arduino possède un connecteur ICSP (In Circuit Serial Programming) comportant 6 broches (MISO, MOSI, SCK, RESET, VCC et GND). Utiliser une carte Arduino Uno comme programmateur Nous utilisons le bus SPI d'un ATmega328 installé sur une carte Arduino Uno pour programmer un ATmega328 seul, c'est à dire uniquement le circuit intégré : ![]() Nous devons donc connecter les broches 17, 18, 19 (bus SPI) et 1 (reset) : ![]() Pour éviter tout reset intempestif, une résistance de 10 kohm est placée en pull-up sur la broche 1. J'ai utilisé un quartz de 20 MHz (maximum autorisé), vous pouvez néanmoins le supprimer, ainsi que les deux condensateurs. L'ATmega328 fonctionnera alors avec son oscillateur interne (1 à 8 MHz). A noter qu'à 1 MHz, l'ATmega328 consommera le minimum d'énergie. Ouvrez l'EDI Arduino (Arduino IDE) :
![]() J'ai utilisé un convertisseur USB - RS-232 de type FTDI FT232RL, mais vous pouvez bien-sûr utiliser un CH340 par exemple. A noter l'ajout d'un condensateur (100 nF) entre la broche DTR du FT232RL et la broche 1 de l'ATmega328. Nous avons réalisé un prototype (très simple) basé sur l'ATmega328. Vous pouvez désormais créer vos propres cartes ! Pour information, le téléversement d'un sketch utilise le logiciel AVRDUDE (AVR Downloader / UploaDEr) et le protocole STK500 (STK500V2 pour une carte Mega2560). Il est donc possible de téléverser un sketch en ligne de commande, sans utiliser l'EDI de l'Arduino. * 1 ki (kilo informatique) = 1024 et non pas 1000, donc 1 kio = 1024 octets et 16 kio = 16384 octets. |
Haut de page |
![]() |
![]() |
![]() |