Table des matières:

UTILISATION DE EXtreme Burner pour la programmation du microcontrôleur AVR : 8 étapes
UTILISATION DE EXtreme Burner pour la programmation du microcontrôleur AVR : 8 étapes

Vidéo: UTILISATION DE EXtreme Burner pour la programmation du microcontrôleur AVR : 8 étapes

Vidéo: UTILISATION DE EXtreme Burner pour la programmation du microcontrôleur AVR : 8 étapes
Vidéo: Tutorial:How to burn/program a hex file to a AVR microcontroller using AVR Studio,USBasp,Burn-O-Mat 2024, Juillet
Anonim
UTILISER EXtreme Burner pour la programmation du microcontrôleur AVR
UTILISER EXtreme Burner pour la programmation du microcontrôleur AVR

Toute la fraternité des utilisateurs d'AVR, et ceux qui viennent d'entrer dans le flux, certains d'entre vous ont commencé avec des microcontrôleurs PIC et d'autres avec des AVR ATMEL, ceci est écrit pour vous !

Vous avez donc acheté un USBASP car il est bon marché et efficace pour flasher la ROM sur votre appareil Atmega, ou peut-être la gamme ATTINY. Ceux-ci peuvent être obtenus pour moins de 5$, en tant que clones chinois de l'Open source USB-ASP ! AVRdude est le logiciel pour les programmer.

Vous savez sans aucun doute comment générer un fichier Hex à l'aide d'Atmel Studio (j'utilise toujours AVR Studio v4.19 au lieu de la dernière v7 car il est plus rapide et plus rapide sur mon ordinateur portable léger à processeur simple) / Netbook et WINAVR installent si vous lisez ceci. Tout ce qui est écrit dans DotNet s'exécute SLOW ! et les versions ultérieures sont conçues pour faire fonctionner votre ordinateur portable comme une tortue ! Vous pouvez utiliser Studio v4.19, la meilleure version de Studio d'ATMEL pour les microcontrôleurs AVR, passer à la version 7 lorsque vous en avez vraiment besoin pour les dernières puces, et rendre votre temps sur l'ordinateur portable plus productif, en travaillant au lieu d'attendre ! C'est ce que je recommande.

Une ligne de commande type AVR pour programmer un Atmega avec un fichier Hex, fonctionne comme ceci:

ÉCRIRE SUR FLASH:AVRdude -s -c avrisp -p t44 -P usb -U "flash:w:D:\ARDUINO\pwmeg1.hex:a"

ici, pwmeg1.hex est le fichier hexadécimal Intel à « graver » ou « flasher » dans le « MCU cible » dans le microcontrôleur Lingo

C'est une bouchée à retenir ! Vous pouvez écrire un fichier batch et l'exécuter dans la ligne de commande de Windows, en le nommant write_flash.bat. De même pour la lecture des fusibles, encore une bouchée de ligne à retenir ! Cela devient fastidieux.

pour lire flash + eeprom:AVRdude -s -c avrisp -p t44 -P usb -U "flash:r:D:\ARDUINO\pwmeg1.hex:i" -U "eeprom:r::i"

La solution consiste à utiliser l'un des outils frontaux d'interface graphique conviviaux d'AVRdude comme Bitburner, le programmeur Khazama, qui sont presque similaires en mérite. Brûleur extrême. J'ai beaucoup utilisé l'outil gratuit: eXtreme Burner, il est polyvalent, fiable, et ce tutoriel en parle. Il peut non seulement flasher votre fichier / programme hexadécimal sur le MPU, en utilisant les commandes envoyées à AVRdude en arrière-plan, il peut également vous aider à définir les FUSIBLES, un sujet compliqué qui confond souvent les débutants en programmation AVR. Voici un lien vers un excellent tutoriel sur le sujet des FUSIBLES que vous pouvez parcourir ou réviser. Un mot d'avertissement: ATMEL utilise l'état '1' d'un bit FUSE pour indiquer son état 'par défaut' (état non activé ou non programmé) et '0' pour indiquer son état programmé ou activé ou activé ! C'est juste à l'opposé de ce que vous faites avec les bits FUSE dans un microcontrôleur PIC. Soyez prudent lorsque vous modifiez les bits du fusible de l'horloge, par exemple en changeant l'horloge RC interne en cristal externe, car cela créera des problèmes de connexion à la puce sans configuration de cristal externe. De même, soyez prudent lorsque vous changez l'état des bits de fusible critiques comme SPIEN et RESET DISABLE (ceux-ci doivent toujours être définis sur SPIEN = 0 et RESET DISABLE = 1 si vous souhaitez continuer à communiquer avec le MCU avec votre USB-ASP en mode ISP / SPI Si vous échouez, vous aurez besoin d'un programmeur haute tension pour "débriquer" votre AVR.

Si vous vous demandez « qu'est-ce que c'est que les fusibles » et « qu'est-ce qu'ils font » ? Lisez cet excellent article:

Un autre sujet connexe est de savoir comment régler la vitesse d'horloge de votre MPU AVR qui est capable de vitesses de 1Mhz jusqu'à 16 ou 20Mhz. Il existe également une option spéciale de cristal basse fréquence à faible puissance de 31,25 kHz qui, si elle est correctement conçue, peut faire fonctionner votre AVR avec des piles AA pendant 3 mois !

Ces deux bits de fusible d'horloge (fréquence et type d'horloge RC interne/cristal externe et autres bits de fusible) peuvent être définis via l'onglet FUSIBLES dans eXtreme Burner. Nous allons d'abord vous montrer comment lire la ROM, puis comment flasher le fichier hexadécimal à l'aide d'eXtreme Burner. Bien sûr, vous pouvez également utiliser les sites Web de fusibles AVR en ligne, mais l'option que j'explique peut également être utilisée lorsque vous êtes hors ligne, n'importe où.

Étape 1: Paramètres à effectuer:

Réglages à faire
Réglages à faire
Réglages à faire
Réglages à faire
Réglages à faire
Réglages à faire
Réglages à faire
Réglages à faire

Les images montrent les PARAMÈTRES à effectuer avant de commencer votre travail. (c'est une seule fois). Sous l'élément de sous-menu « Paramètres matériels », nous sélectionnons 375 Hz car la plupart des MCU de l'usine ATMEL sont réglés sur les paramètres par défaut de 1 Mhz d'horloge CPU sur l'oscillateur RC interne. La vitesse du FAI est un quart de F_cpu. Cela nous donne la vitesse la plus proche de 375 Khz, vous pouvez également passer à une vitesse inférieure, cela ne fera pas beaucoup de différence. Vous pouvez essayer de vous connecter en laissant cette valeur par défaut, et émettre un "read all", si cela échoue, vous pouvez venir ici et modifier la vitesse, la réduisant ainsi.

Parce que si vous ne parvenez pas à vous connecter (le message serait donné dans la fenêtre du programmeur "Impossible de communiquer avec la puce, ne peut pas SCK" signifie que le signal d'horloge de votre PC n'a pas pu se synchroniser avec votre puce que vous essayez de lire ou programme)., vous seriez incapable de modifier la vitesse d'horloge du processeur ou de modifier sa vitesse et son type ! La connexion est donc la base de tout ! C'est comme "FIRST CONTACT" comme vous le voyez dans les films de Spielberg. Si vous y parvenez, vous pouvez toujours augmenter la vitesse d'horloge de votre MCU en programmant les fusibles en conséquence, et plus tard utiliser une vitesse plus élevée pour vous connecter.

Parcourez donc les instantanés des paramètres matériels fournis ici, puis définissez également le type de périphérique (la puce que vous essayez de programmer, son numéro de modèle).

Étape 2: définir votre type d'appareil

Configuration de votre type d'appareil
Configuration de votre type d'appareil
Configuration de votre type d'appareil
Configuration de votre type d'appareil
Configuration de votre type d'appareil
Configuration de votre type d'appareil

voir la capture d'écran, Pic 1, nous avons défini "ATTINY44A". Il s'agit d'un microcontrôleur à 14 broches sans UART. J'ai utilisé cela récemment, la version SSU. Si vous avez installé la version stock du graveur Extreme, vous ne verrez pas Attiny44A dans la liste déroulante de sélection d'appareils, vous verrez un Attiny44 que nous pouvons utiliser à toutes fins utiles pour programmer Attiny44A également, pour introduire tout appareil non répertorié dans cette liste déroulante, lisez mon autre instructable « Hacking eXtreme Burner ».

J'ai utilisé Atmega88PA-AU également avec eXtreme Burner mais dans ce Instructable, nous mentionnons « Attiny44A » partout. Maintenant, comment faire une version maquette de la minuscule puce SMD carrée de 7 mm et la tester avec vos programmes ? (voir les photos qui indiquent la taille de la puce), pour cela, voir mon autre instructable où je montre comment faire des modules de plug-in adaptés à la planche à pain en utilisant Attiny44A-SSU et ATmega88PA-AU

Une fois que vous aurez appris cette technique, vous pourrez vérifier n'importe quelle puce avec laquelle vous êtes curieux de bricoler, qu'il s'agisse de son boîtier SMD ou DIL. Par exemple, j'ai même utilisé une puce SMD livrée dans un boîtier Quad à 32 broches à pas de broche de 0,8 mm (Atmega88A) de la même manière !

. Ou vous pouvez simplement utiliser la version 28 broches DIL de l'Attiny44A pour cet Instructable ou tout autre AVR que vous utilisez en ce moment pour essayer eXtreme Burner pour la programmation AVR.

Étape 3: Émettez un LIRE TOUT ou LIRE LE FLASH

Émettre un LIRE TOUT ou LIRE FLASH
Émettre un LIRE TOUT ou LIRE FLASH
Émettre un LIRE TOUT ou LIRE FLASH
Émettre un LIRE TOUT ou LIRE FLASH

Connectez votre USBasp au port USB de votre ordinateur portable, je suppose que vous avez déjà chargé les bons pilotes fournis avec votre programmeur et qu'il est correctement détecté. Il devrait apparaître sous « Périphériques et imprimantes » dans le menu Démarrer de Windows s'il l'était, dès qu'il est branché sur le port USB ! Connectez votre puce cible sur sa carte avec votre USBasp (les broches SDI//ISP pertinentes à l'aide d'un câble à 6 ou 10 broches doivent être connectées entre les deux, à savoir les broches: MOSI, RESET, MISO, SCK, Vcc, Ground).

Émettez un LIRE TOUT à partir du MENU de Xtreme Burner. Voir les photos et les messages que nous avons obtenus. Initialement, votre écran affichait « FF » pour la ROM dans le premier onglet du graveur, après avoir tout lu, il affichera le contenu réel de la ROM sur la puce. Si vous utilisiez une puce neuve d'usine ou une puce effacée, vous verriez FF dans le contenu après un "Lire tout". Une puce non programmée affichera 'FF' dans sa mémoire, de même qu'une EEPROM (deuxième onglet dans le programmeur), le dernier onglet affiche les FUSIBLES.

Après un LIRE TOUT les 3 onglets afficheraient les informations correctes contenues dans la puce. Avant cela, ce n'était pas le cas, alors lancez un Tout d'abord dès que vous connectez tout.

Étape 4: écrivez sur Flash (votre fichier hexadécimal a été flashé dans la ROM sur la puce)

Écrire dans la mémoire Flash (votre fichier hexadécimal a flashé dans la ROM sur la puce)
Écrire dans la mémoire Flash (votre fichier hexadécimal a flashé dans la ROM sur la puce)
Écrire dans la mémoire Flash (votre fichier hexadécimal a été flashé dans la ROM sur la puce)
Écrire dans la mémoire Flash (votre fichier hexadécimal a été flashé dans la ROM sur la puce)
Écrire dans la mémoire Flash (votre fichier hexadécimal a été flashé dans la ROM sur la puce)
Écrire dans la mémoire Flash (votre fichier hexadécimal a été flashé dans la ROM sur la puce)

Sélectionnez un fichier à l'aide de la boîte de dialogue Parcourir qui s'ouvre lorsque vous cliquez sur la première icône de la barre MENU ci-dessus. Nous avons sélectionné un fichier comme vous le voyez sur la photo. Une fois que vous avez sélectionné le fichier hexadécimal (format intel hexadécimal), la barre de menu qui affichait "aucun fichier chargé" a été remplacée par le nom du fichier que vous avez chargé.

Maintenant, lancez un Write Flash à partir du menu du logiciel. Les messages vous montreront ce qui se passe. voir les photos.

Après une écriture réussie, vous verriez le « FF » qui marque une ROM fraîche ou effacée changer pour ce que contient votre programme ou fichier hexadécimal. La taille ou le nombre d'octets que votre fichier occupe dans la ROM vous est également connu en regardant cet écran, qui vous montre le contenu réel de la ROM de votre puce cible que vous venez de flasher.

L'étape de vérification se fait également en lisant la puce, selon les PARAMÈTRES que nous avons fait en première étape. Cela se voit dans les messages que la vérification a également réussi.

Étape 5: FUSIBLES: Comment les régler dans EXtreme Burner

FUSIBLES: Comment les régler dans EXtreme Burner
FUSIBLES: Comment les régler dans EXtreme Burner

Lorsque vous avez émis un LIRE TOUS les fusibles ont été lus à partir de la puce. C'est la PREMIÈRE photo montrée fuses.jpg.

Maintenant, vous devez peut-être les changer pour autre chose. Les fusibles se composent de 4 cases dans le dernier TAB sur votre écran eXtreme Burner. À savoir LOW FUSE BYTE, HIGH FUSE BYTE, EXTENDED FUSE BYTE, LOCK FUSE BYTE et CALIBRATION BYTE. dans cet ordre, ils sont affichés.

Vous pouvez simplement utiliser un calculateur de fusibles EN LIGNE et les remplir.

eleccelerator.com/fusecalc/fusecalc.php?

Ou vous pouvez utiliser le graveur eXtreme pour le faire pour vous. hors ligne à tout moment: sélectionnez-le dans la liste déroulante qui apparaît lorsque vous cliquez sur le bouton DÉTAILS qui se trouve sous chaque type d'octet de fusible. Il suffit de double-cliquer sur n'importe quelle ligne de l'écran DETAILS et de la regarder passer de SET à CLEARED et de basculer son état avec le clic de votre souris sur chaque ligne. L'octet de fusible dans la case au-dessus changerait en conséquence.

Si vous vous demandez « qu'est-ce que c'est que les fusibles » et « qu'est-ce qu'ils font » ? Lisez cet excellent article:

www.instructables.com/id/Avr-fuse-basics-Running-an-avr-with-an-external-cl/

Étape 6: Réglage des fusibles à l'aide du calculateur de fusibles EXtreme Burner

Réglage des fusibles à l'aide du calculateur de fusibles du brûleur EXtreme
Réglage des fusibles à l'aide du calculateur de fusibles du brûleur EXtreme
Réglage des fusibles à l'aide du calculateur de fusibles du brûleur EXtreme
Réglage des fusibles à l'aide du calculateur de fusibles du brûleur EXtreme
Réglage des fusibles à l'aide du calculateur de fusibles du brûleur EXtreme
Réglage des fusibles à l'aide du calculateur de fusibles du brûleur EXtreme

Vous pouvez voir l'écran de détails qui apparaît pour chacun des octets de fusible (LOW, HIGH, EXTENDED, LOCK et Calibration). L'octet d'étalonnage doit rester inchangé car il affiche l'octet de données d'étalonnage dans l'AVR qui s'applique à l'oscillateur RC interne. L'octet LOCK est généralement FF uniquement, (non discuté dans les photos ci-dessus) car vous ne verriez pas la Flash ou l'EEPROM pendant la phase d'apprentissage. Vous ne modifieriez que les octets LOW, HIGH et EXTENDED. Fais attention !

Si vous changez le bit SPIEN à 1 (l'état non programmé est 1 dans les microcontrôleurs AVR), vous ne pourrez pas communiquer avec votre puce en utilisant USBASP ou n'importe quel programmeur ! L'état par défaut est également affiché sur votre écran pour chaque bit de fusible. Cela vous avertit que la valeur par défaut de SPIEN est toujours 0 (état programmé) pour vous permettre d'utiliser le mode SPI pour la programmation ISP. Le fil de débogage ou le bit DW est toujours laissé à 1 (non programmé) lorsque SPIEN est défini sur 0. C'est également son état par défaut. De plus, dans les bits de fusible étendu, « Autoprogrammation activée » doit être « 1 » (non programmé) si vous utilisez votre USB-ASP pour programmer votre puce cible (sans utiliser la ROM du chargeur de démarrage comme dans ARDUINO).

Vous pouvez modifier les bits CLOCK (au nombre de 3) pour sélectionner RC interne ou cristal externe. Je le laisse normalement pour la RC interne, ce qui vous permet d'obtenir 2 broches supplémentaires que la libération du cristal externe implique de l'utiliser comme broches de PORT pour vos projets AVR. Habituellement, un cristal externe est nécessaire lorsque vous avez besoin d'un timing de haute précision dans votre projet. Pour les apprenants, la RC interne est suffisante.

Habituellement, une fois que vous avez choisi une combinaison de fusibles, vous ne la changerez pas. Ce serait une fois. Vous ne feriez que flasher la ROM ou parfois l'EEPROM aussi. Pour le flashage, le fichier.eep séparé de l'EEPROM est généré par votre studio WINAVR / ATMEL si votre programme utilise l'EEPROM pour stocker des données. Sinon, l'EEPROM est laissée inutilisée, remplie des données « FF » qui indiquent « l'état NO DATA » de l'EEPROM.

Étape 7: valeur finale des bits de fusible

Valeur finale des bits de fusible
Valeur finale des bits de fusible

Après avoir réglé tous les bits de fusible et fermé les cases DÉTAILS que vous avez utilisées, vous pouvez voir la valeur des bits de fusible telle que calculée par le programme (voir photo). Il ne reste plus qu'à émettre un "Write Fuses" à l'aide du menu. Et regardez les messages qui signalent une écriture réussie. Plus tard, vous pouvez également émettre un LIRE TOUT à partir du menu et vérifier si les fusibles lus dans le dernier TAB de l'écran du graveur coïncident avec ce que vous vouliez écrire sur la puce. (Vérification du fusible).

Vous remarquerez qu'au début de ce Instructable lorsque nous avons fait une LIRE LES FUSIBLES, l'écran affiche les mêmes valeurs de FUSIBLE que nous voyons ici ! C'est parce que ce sont les fusibles que j'utilise souvent et que je les change rarement une fois que je les ai installés dans mon MCU, à moins que je change la fréquence de 1 Mhz à 4 Mhz pour certains projets. L'AVR peut être réglé sur 20Mhz maximum (certaines puces seulement jusqu'à 16Mhz). La fréquence que vous définissez pour F_cpu dépend également de la tension avec laquelle vous fournissez la puce ! Par exemple, si votre puce fonctionne à partir de 1,8 V de Vcc jusqu'à 5,5 V de Vcc (voir la fiche technique), vous ne vous attendriez pas à faire fonctionner votre puce à 20 mhz si vous ne lui fournissez que 1,8 V ! vous en attendez trop ! Un tableau dans la fiche technique vous indique à quelle tension la fréquence atteint quel chiffre. Plus votre fréquence de fonctionnement de la puce est élevée, plus elle consomme de chaleur et d'énergie. Pensez à la fréquence comme au rythme cardiaque d'un animal. Un colibri avec un rythme cardiaque élevé aurait une consommation d'énergie par minute plus élevée qu'une baleine ou un éléphant avec un rythme cardiaque beaucoup plus faible ! Mais alors, il peut faire beaucoup plus en moins de temps. Le MCU est juste comme ça.

Étape 8: Terminer

Maintenant que vous avez terminé toutes les étapes dans le graveur eXtreme, vous avez lu la ROM d'une puce, ou ouvert un fichier HEX et l'avez flashé sur la puce et vérifié que le flash était OK, vous avez également appris à régler les fusibles et à les flasher sur la puce.

Si vous avez des questions, je me ferai un plaisir de répondre ou de modifier le tutoriel pour le rendre plus clair.

Pour certains jetons, il se peut que son entrée soit manquante dans la liste déroulante de sélection de jetons dans le menu. Ou vous pouvez rencontrer des erreurs d'écriture et vérifier les erreurs. Dans de tels cas, veuillez lire mon autre Instructable "Hacking eXtreme Burner" pour résoudre le problème.

Bonne programmation.

Conseillé: