Comment programmer atmega328p?

Comment programmer atmega328p?

Atmega328 atmega328p

Je veux programmer mon MCU AtMega328p (sur une planche à pain) en utilisant Python depuis mon Raspberry Pi 4 mais je ne suis pas sûr de savoir comment vérifier si la communication se fait entre eux ? Les broches MISO, MOSI, SCLK et CE0 du Pi sont connectées respectivement aux broches MISO, MOSI, SCK et SS de l’AtMega328p.

Je comprends que je dois utiliser la communication SPI, mais comment puis-je exactement envoyer des données du Raspberry Pi au MCU pour m’assurer qu’il y a une communication entre les deux ? Peut-être un code à envoyer au MCU et à recevoir en retour ? J’ai utilisé les bibliothèques SPI Dev Python mais je n’ai pas trouvé beaucoup d’informations à ce sujet. Merci d’avance !

Pour charger du code sur l’AVR (le programmer), vous devez utiliser un logiciel existant comme avrdude qui parle déjà le protocole ISP de l’AVR. avrdude a déjà le support pour utiliser les headers SPI de RPi – utilisez juste le type de programmeur linuxspi.

Téléchargement du chargeur de démarrage Atmega328p

Les cartes ATmega328P (PU)Arduino sont sans conteste très confortables lorsqu’il s’agit de développer des projets. Vous n’avez pas à vous soucier de l’alimentation électrique, un oscillateur y est déjà attaché, vous n’avez pas besoin de programmateur et vous disposez des têtes de broches étiquetées. Mais si vous immortalisez votre projet dans la soudure et le fil à la fin, l’Arduino devient peu maniable. Il est alors préférable de n’utiliser que l’ATmega328P avec un minimum de périphériques. L’encombrement, la consommation et le coût (< 2 euros) sont moindres.

  Comment installer ESP32 dans Arduino?

Il faut alors effectivement acheter un ATmega328P et non l’ATmega328 (sans “P”). Les deux versions sont presque identiques. Le “P” signifie Picopower, ce qui signifie que la variante P peut faire plus en termes de gestion de l’énergie. Plus important encore, les modèles ont des signatures différentes. La signature est liée de manière immuable au microcontrôleur (gravée dans le silicium ;-)) et est vérifiée par l’IDE Arduino avant de télécharger des croquis ou de graver le bootloader. Si vous utilisez la variante non-P, l’IDE Arduino se met en grève.

Atmel studio 7 atmega328p

Maintenant que j’ai un programmateur AVR et l’ATmega328p sur son propre breadboard (comme je l’ai documenté ici), je veux supprimer ma dépendance au téléchargement de l’IDE Arduino. Donc, plus besoin d’utiliser les outils qu’Arduino IDE a téléchargé pour moi ! Mon plan approximatif est le suivant :

L’IDE Arduino implémente les deux premiers éléments. C’est un éditeur de code, il possède un SDK intégré et compile/lien le code. D’après ce que j’ai compris, l'”adaptateur de débogage” est un peu similaire au programmateur AVR que j’utilise, dans le sens où c’est une pièce physique qui communique entre le port USB de mon ordinateur et les broches individuelles de l’ATmega328p. J’ai fait quelques recherches, et il semble que les microcontrôleurs AVR (dont l’ATmega328 fait partie) ont un protocole propriétaire appelé debugWIRE qui permet le débogage sur puce https://en.wikipedia.org/wiki/DebugWIRE. Vous ne pouvez utiliser ce protocole qu’en achetant du matériel supplémentaire, dont certains peuvent être assez coûteux (Atmel-ICE coûte 160 au moment de la rédaction de cet article). Puisque ce projet est principalement un premier pas vers les microcontrôleurs, et que j’ai l’intention de m’étendre vers les STM32 et d’autres microcontrôleurs, je pense que je vais sauter sur la partie débogage de cette chaîne d’outils.

  Comment programmer un micro contrôleur?

Programmer atmega328p avec arduino

L’ATmega328P est le microcontrôleur qui équipe la carte de développement Arduino Uno. La carte Arduino facilite l’interface avec les broches de l’ATmega328P tout en ajoutant des fonctions supplémentaires qui ne sont pas fournies avec le microcontrôleur autonome, notamment une interface série USB et une horloge de 16 MHz. Le prototypage est une excellente utilisation d’une carte Arduino car elle permet des itérations rapides et faciles d’une conception, mais pour des projets complets, elle peut souvent être surchargée en fonction des fonctions utilisées. Une Arduino Uno officielle coûte plus de 20 $ (bien que des clones puissent être trouvés sur eBay pour 10 $ ou moins) alors qu’une ATmega328P autonome coûte environ 2 $. Ainsi, une fois que vous avez terminé le prototypage d’un projet avec l’Arduino, vous pouvez passer à l’utilisation d’une ATmega328P autonome à la place.

Le premier problème qui peut devenir évident est que vous ne pouvez pas connecter l’ATmega328P directement à votre ordinateur pour y télécharger des programmes. Un programmateur séparé est nécessaire. Heureusement, si vous avez un Arduino, vous avez déjà ce dont vous avez besoin puisque l’Arduino lui-même peut être utilisé comme programmateur pour l’ATmega328P (et beaucoup d’autres microcontrôleurs AVR). Cet article montre comment programmer un ATmega328P autonome en utilisant un Arduino et l’IDE Arduino. Nous utiliserons également du code C pur sans aucune des fonctions intégrées fournies par l’IDE Arduino.