Table des matières:

Clignotement AVR/Arduino avec Raspberry Pi : 3 étapes (avec photos)
Clignotement AVR/Arduino avec Raspberry Pi : 3 étapes (avec photos)

Vidéo: Clignotement AVR/Arduino avec Raspberry Pi : 3 étapes (avec photos)

Vidéo: Clignotement AVR/Arduino avec Raspberry Pi : 3 étapes (avec photos)
Vidéo: Les bases de l'Arduino ! 2024, Juillet
Anonim
AVR/Arduino clignotant avec Raspberry Pi
AVR/Arduino clignotant avec Raspberry Pi

Un programmeur intégré (ISP) est un appareil que vous pouvez utiliser pour programmer de nombreux microcontrôleurs, par exemple l'ATMega328p qui est le cerveau d'un Arduino Uno. Vous pouvez acheter quelque chose comme un USBtinyISP, ou vous pouvez même utiliser un Arduino. Cette instructable vous montrera comment utiliser un Raspberry Pi en tant que FAI.

Le programme avrdude, que l'IDE Arduino utilise sous le capot pour flasher les puces, peut être utilisé avec de nombreux programmeurs. L'une de ses options consiste à utiliser les broches SPI sur le port d'extension du Pi. Je vais vous expliquer comment faire les connexions appropriées, mettre en place un circuit simple sur perfboard afin que vous n'ayez pas à refaire le câblage à chaque fois que vous voulez flasher une puce, et comment installer et utiliser avrdude. Je vais également vous montrer comment compiler des programmes à l'aide de l'IDE Arduino sur une puce AVR telle qu'un ATmega ou un ATtiny en utilisant cette méthode.

Choses nécessaires:

  • Raspberry Pi avec le dernier Raspbian installé
  • Prise mâle à 40 broches (ou 26 broches si vous avez un Pi plus ancien)
  • Câble IDE pour se connecter à votre Pi
  • Résonateur à cristal 16 MHz
  • Condensateurs 22 pF (2)
  • LED (1) pour indiquer l'état du programmateur
  • Prises IC à 8, 14 et/ou 28 broches, selon la forme des puces que vous souhaitez flasher
  • Certains perfboard, fils, soudure

Étape 1: Construire un accessoire de cordonnier

Attachement de cordonnier de construction
Attachement de cordonnier de construction
Attachement de cordonnier de construction
Attachement de cordonnier de construction
Attachement de cordonnier de construction
Attachement de cordonnier de construction

L'interface périphérique série (SPI), également appelée série à quatre fils, est un moyen de communication entre un seul périphérique maître et un ou plusieurs périphériques esclaves. Nous allons l'utiliser pour flasher les puces, avec le Pi comme maître et la puce comme esclave. Vous ferez les connexions suivantes entre le Pi et votre puce (voir les brochages ci-dessus pour divers AVR et ports d'extension Pi pour savoir quelles broches sont lesquelles):

  • Connectez les broches MOSI (master-out-slave-in) ensemble
  • Connectez les broches SCLK (horloge partagée) ensemble
  • Connectez les broches MISO (master-in-slave-out) avec une résistance de 220 ohms, pour protéger le Pi de toute tension élevée inattendue de la puce
  • Connectez GPIO 25 sur le Pi directement à la broche RESET sur la puce. Le Pi tire cette broche vers le bas lors de la programmation, nous utilisons donc une résistance de 10K pour la maintenir élevée lorsqu'elle ne programme pas, et une LED avec une résistance de protection de 1K fonctionnant à une tension positive pour nous donner un bon retour visuel lors de la programmation.

Nous connectons des broches de terre et d'alimentation (3,3 V) entre le Pi et les puces que nous voulons programmer. Au cas où vous ne le sauriez pas déjà, les broches du Raspberry Pi ne tolèrent pas 5V - elles seront endommagées si plus de 3,3V y apparaissent. Si les puces programmées ont besoin d'une alimentation de 5 V pour une raison quelconque, nous pourrions utiliser une puce de décalage de niveau pour protéger les broches du Pi, mais je n'ai rencontré aucun problème avec 3,3 V - je recommande donc de jouer en toute sécurité et d'économiser sur les composants.

Enfin, nous connectons un oscillateur à cristal de 16 MHz sur les broches XTAL de la puce, que nous connectons également à la terre via un couple de condensateurs 22pF. Les puces AVR peuvent être configurées pour fonctionner à différentes fréquences et peuvent également être configurées pour utiliser une source interne ou externe pour déterminer cette fréquence. Si votre puce est configurée pour utiliser un cristal externe comme source de fréquence, vous ne pourrez pas reprogrammer sans lui. Sinon, ce n'est pas grave si c'est là.

Vous pouvez utiliser le schéma du circuit dans la dernière image comme guide pour assembler votre accessoire de cordonnier sur perfboard. Vous pouvez avoir autant ou aussi peu de formes différentes de sockets IC que vous le souhaitez, connectez simplement les broches appropriées en parallèle avec le Pi et le cristal. N. B. si vous utilisez l'image de mon prototype comme guide, notez que j'ai ajouté des broches et des prises d'en-tête supplémentaires afin que je puisse accéder aux broches du Pi pour des raisons indépendantes.

Étape 2: Installer et utiliser Avrdude

Installer et utiliser Avrdude
Installer et utiliser Avrdude
Installer et utiliser Avrdude
Installer et utiliser Avrdude
Installer et utiliser Avrdude
Installer et utiliser Avrdude
Installer et utiliser Avrdude
Installer et utiliser Avrdude

Pour installer avrdude sur votre Pi, tapez simplement

sudo apt-get install avrdude

Vous devrez ensuite activer l'interface SPI, si elle n'a pas déjà été activée. Il existe un moyen de le faire en ligne de commande, mais il est beaucoup plus facile d'utiliser l'outil de configuration Raspberry Pi. Taper

sudo raspi-config

et allez dans Options d'interface pour activer SPI.

Afin de flasher votre puce, branchez le câble plat de votre Pi dans le connecteur du circuit de la carte à puce et insérez la puce dans la prise IC appropriée (assurez-vous qu'elle est dans le bon sens).

Lorsque vous flashez un programme, vous devez également vous assurer de régler correctement les fusibles dans la puce. Ce ne sont en fait que des bits dans la puce que vous définissez pour lui indiquer à quelle vitesse d'horloge s'exécuter, s'il faut effacer l'EEPROM lors de l'écriture de la puce, etc. Vous pouvez lire la spécification AVR complète pour savoir comment définir chaque bit, mais il est beaucoup plus facile d'utiliser le calculateur de fusible fourni sur engbedded.com/fusecalc. Sélectionnez le nom de la pièce AVR que vous utilisez et choisissez les options souhaitées dans la zone "Sélection des fonctionnalités". En général, je m'assure simplement que les paramètres de l'horloge sont corrects et laisse les autres paramètres par défaut. Vous voudrez presque toujours laisser "Programmation série activée" COCHEE et "Réinitialiser désactivé" NON COCHES - sinon vous ne pourrez pas reprogrammer la puce. Lorsque vous avez les bons paramètres, vous pouvez faire défiler la zone "Paramètres actuels" et copier les arguments AVRDUDE comme indiqué dans l'image.

Pour régler les fusibles, entrez la commande

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p

où partname correspond à la puce que vous utilisez. Vous pouvez trouver la liste des noms de pièces en entrant sudo ardude -c linuxspi -p ?type. Pour flasher votre programme, assurez-vous qu'il est dans votre répertoire courant et entrez

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p -U flash:w::i

Après les deux commandes, la LED s'allumera pendant la modification de la puce.

Étape 3: installer les programmes Arduino sur les AVR

Obtenir des programmes Arduino sur les AVR
Obtenir des programmes Arduino sur les AVR
Obtenir des programmes Arduino sur les AVR
Obtenir des programmes Arduino sur les AVR
Obtenir des programmes Arduino sur les AVR
Obtenir des programmes Arduino sur les AVR

L'objectif principal de cette instructable est de faire clignoter des programmes déjà compilés sur des puces, et non de savoir comment les écrire ou les compiler. Cependant, je voulais expliquer comment vous pouvez compiler des binaires à l'aide de l'IDE Arduino et les obtenir sur des puces AVR nues en utilisant cette méthode, car Arduino est relativement facile à apprendre et il existe de nombreux tutoriels et exemples.

Tout d'abord, vous devrez ajouter des informations sur les puces AVR que vous allez flasher afin que l'IDE sache comment les compiler. James Sleeman a très utilement rassemblé quelques fichiers d'installation, qui sont disponibles sur github. Pour les utiliser, ouvrez le menu "Préférences" dans l'IDE Arduino et cliquez sur la case à côté du champ "URL du gestionnaire de cartes supplémentaires". Copiez et collez les URL suivantes dans la boîte de dialogue qui s'affiche:

Ensuite, allez dans le menu "Outils" et recherchez l'option "Gestionnaire de cartes…" dans le sous-menu "Carte". Faites défiler vers le bas de la liste dans la boîte de dialogue Gestionnaire de cartes et installez les cartes DIY ATmega et DIY ATtiny.

Pour compiler vos programmes, assurez-vous d'abord d'avoir sélectionné la bonne puce dans le menu "Processeur", ainsi que la bonne vitesse de processeur. Sélectionnez l'option "Utiliser le chargeur de démarrage: Non", car nous allons télécharger directement avec le Pi et ainsi utiliser l'espace supplémentaire qui serait normalement occupé par le chargeur de démarrage Arduino. Maintenant, cliquez sur le bouton "Vérifier" (la coche). Cela compilera votre programme sans essayer de le télécharger (puisque vous faites cette étape vous-même).

En supposant que tout se passe bien, vous devez maintenant obtenir le programme compilé sur votre Pi. L'IDE les cache dans un emplacement temporaire, car il est conçu pour télécharger lui-même des programmes. Sous Windows, il se trouve dans AppData/Local/Temp dans votre répertoire utilisateur, dans un dossier qui commence par 'arduino_build'. Recherchez le fichier.hex - c'est votre programme ! Envoyez-le à votre Pi via FTP ou avec une clé USB, et vous êtes en affaires.

Pour ce faire, vous devez disposer d'un PC Windows ou d'un Mac pour compiler vos programmes, que vous envoyez ensuite au Pi. Ce serait vraiment astucieux de pouvoir le faire sur le Pi lui-même, mais malheureusement, la version officielle de l'IDE Arduino disponible dans le référentiel Raspbian est plutôt ancienne et n'a pas le Board Manager. Sans cela, l'ajout des paramètres appropriés à compiler pour les AVR nus est un peu plus délicat. Il existe des tutoriels pour compiler une version plus récente d'Arduino sur votre Pi - si c'est ce que vous voulez faire, allez les trouver ! J'ai également l'impression qu'il devrait être possible de faire en sorte que l'IDE utilise le programmeur linuxspi pour flasher une puce à partir de l'IDE lui-même (c'est-à-dire en utilisant le bouton "télécharger"), mais cela dépasse ma patience et mon niveau de compétence - si vous connaissez une façon, postez-le dans les commentaires! Enfin, vous pouvez simplement écrire des programmes directement dans AVR-C et les compiler sur le Pi avec avr-gcc, vous offrant ainsi une plate-forme de développement AVR complète dans le Raspberry Pi. J'en ai fait un tout petit peu, et si vous voulez emprunter cette voie, je vous salue. Faites clignoter !

Conseillé: