ATtiny85. Comment graver un chargeur de démarrage? Quel est le processus?


8

Je veux utiliser les six broches d'E / S d'un ATtiny85, cela signifie également utiliser la broche de réinitialisation comme une broche d'E / S, mais j'ai découvert que si je désactive la broche RESET, je ne peux plus programmer l'ATtiny à l'aide d'un Programmeur FAI.

Cependant, j'ai découvert qu'il existe des chargeurs de démarrage pour ATtiny qui, à ma connaissance, me permettent de programmer l'ATtiny via USB, sans avoir besoin de la broche RESET.

Ma question est : comment graver un tel chargeur de démarrage (comme un micronoyau par exemple) sur l'ATtiny85? Et comment dois-je connecter ATtiny à USB après cela (comme ça? )? Comment puis-je le programmer après cela? Gardez à l'esprit qu'en termes de gravure de chargeurs de démarrage et de modification de fusibles, je suis un débutant complet.

En outre, j'utilise l'esquisse ArduinoISP comme programmeur ISP car je n'ai pas de vrai programmeur ISP, mais pour autant que je sache, ce ne sera pas un problème.

EDIT: J'ai cette chose que j'ai achetée pour quelques dollars sur eBay, que je ne sais pas comment et si je dois utiliser: entrez la description de l'image ici


Graver un chargeur de démarrage équivaut à graver tout autre programme. Mais, si vous en avez un mauvais et que vous changez le fusible de réinitialisation, vous serez bloqué jusqu'à ce que vous obteniez une autre puce ou un programmateur haute tension. Je vous recommande donc de tester votre chargeur de démarrage USB avant de changer le fusible. Votre code logiciel-USB est probablement accompagné d'une recommandation pour un circuit pour approximer l'interface électrique USB.
Chris Stratton

Réponses:


1

Je viens de terminer mon Arduino-Plugin avec une intégration complète de TinySafeBoot (TSB) pour ATtiny84A, ATtiny85 et ATmega328P.

Le projet peut être trouvé ici:
https://mesom.de/atflash/index_english.html https://mesom.de/atflash/tinysafeboot/index_english.html

Vous pouvez l'utiliser tel quel, puis utiliser la broche de réinitialisation comme entrée analogique. Ne surveillez que la tension pour ne jamais descendre en dessous 0.6 * VCC.

Comme alternative, vous pouvez modifier les fusibles boards.txtpour avoir cette broche disponible:
Allez dans les Préférences Arduino et cliquez sur le lien vers preferences.txt(Mine:) /Users/stefan/Library/Arduino15/preferences.txt. Dans ce dossier, accédez à /packages/atflash/hardware/avr/0.1.0. Ouvrez le boards.txtet allez à la section
ATTSB85.name=ATtiny85 (TSB)(Int. 8 MHz)

Changez la ligne
ATTSB85.bootloader.high_fuses=0xdf
en
ATTSB85.bootloader.high_fuses=0x5f

Redémarrez Arduino et gravez le chargeur de démarrage via le menu Arduino.


Si vous souhaitez même obtenir un autre code PIN de ATtiny85: vous pouvez changer le chargeur de démarrage pour utiliser un seul code PIN pour RX et TX (voir le site Web du BST). Mais pourquoi tout l'effort? Prenez simplement l'ATtiny84A. Il a 14 broches au lieu de 8 et coûte presque le même prix.

Stefan


2
  • Oui, il existe des interfaces USB pour ATtiny85. Il suffit de regarder l'une des conceptions matérielles ouvertes, par exemple Digispark .
  • Une interface USB va nécessiter deux broches, donc en utiliser une pour enregistrer une broche ne me semble pas rentable.
  • Je suis d'accord avec @FAD, que vous n'avez pas vraiment besoin d'une pile USB et que vous pourriez simplement faire une chose de retard au démarrage avec les broches UART.
  • HVSP (la programmation haute tension) n'est pas difficile à faire. Si vous êtes déjà à l'aise avec ArduinoISP, vous pouvez essayer ScratchMonkey , qui utilise la même approche (avec une alimentation 12V et un transistor) pour faire la programmation HVSP.

L'interface USB peut être fermée, par exemple avec un cavalier lorsqu'il n'est pas en cours de programmation, ou peut être utilisée à des fins qui n'interfèrent pas avec la programmation. La reprogrammation est normalement effectuée immédiatement après une réinitialisation.
AMADANON Inc.

1

Certes, si vous utilisez la broche de réinitialisation comme IO, vous avez besoin d' un programmeur spécial qui, je crois, fournit une haute tension (12v si je me souviens bien) ou quelque chose comme çaappliquer une source 12v à cette broche pour la forcer en mode de programmation puis programmer en utilisant un programmeur normal (ou un autre Arduino). Cependant, ce que vous recherchez est quelque chose comme ce qui se fait dans l'Arduino. L'arduino est programmé avec un chargeur de démarrage spécial via ISP, donc lorsque vous alimentez le microcontrôleur, ce chargeur de démarrage s'exécutera en premier et pendant quelques millisecondes vérifiera les broches UART pour les activités et s'il voit quelque chose de valide, il passe en mode de programmation où il attend le nouveau code pour passer par UART (pas ISP) et l'écrire dans l'emplacement du programme, sinon le chargeur de démarrage remettra simplement l'exécution du code au programme existant le cas échéant.

Voici une explication simple de son fonctionnement: disons que la taille de la mémoire flash de votre microcontrôleur est de 1 Ko, et que le chargeur de démarrage est de 100 B, de sorte que votre programme peut être stocké à l'emplacement 101B +, ​​et que sa taille maximale est (1KB-100B). Ainsi, lorsque le chargeur de démarrage démarre et qu'il n'y a aucune activité sur les broches UART, il saute à l'emplacement de votre programme (à 101B) tandis que si une activité de programmation est détectée, il commence à lire le nouveau code et écrase le flash à partir de 101B (il a donc gagné '' t sur écrire lui-même).

Et vous aurez besoin de l'USBASP pour programmer le chargeur de démarrage pour la première fois. Et vous ne programmez pas l'ATtiny85 via USB car cette puce ne prend pas en charge l'USB, cependant, vous utilisez une puce / module USB vers série qui émule le protocole série sur l'USB. Certains microcontrôleurs atmel ont un support série intégré et d'autres peuvent être effectués par émulation logicielle.

  • Et comme Chris l'a suggéré, ne désactivez pas la broche de réinitialisation jusqu'à ce que vous testiez et validiez le fonctionnement de votre chargeur de démarrage.


@ IgnacioVazquez-Abrams, c'est cool, et il y a déjà des chargeurs de démarrage implémentés avec. Mes informations étaient un peu anciennes à l'époque :). cependant, c'est toujours le même concept mais la communication directe avec le PC au lieu de l'émulation USB-série. Merci

Vous pouvez également graver un chargeur de démarrage sur un ATtiny via un Arduino (UNO ou équivalent). Voici quelques instructions: highlowtech.org/?p=1695 ou si vous préférez une vidéo: youtube.com/watch?v=qz-YMPY4_z0
Sourcery

Voici une belle page sur la programmation d'ATtiny4 5 9 10 20 et 40 en utilisant SPI d'un Arduino donc ce n'est pas ATtiny85 mais je pensais que c'était lié. Le blog mentionne également que si vous utilisez la broche de réinitialisation comme E / S, tout ce dont vous avez besoin est une source 12v pour déclencher le mode de programmation et vous pouvez toujours le programmer de la même manière, donc pas de programmeur spécial comme je le pensais auparavant. junkplusarduino.blogspot.com/p/attiny10-resources.html
Fahad Alduraibi

@FAD, les 4/5/9/10 sont des bêtes complètement différentes des ATtiny85. Il est vrai qu'ils parlent le même protocole de programmation (TPI) pour la programmation haute tension et tension régulière, mais ce n'est absolument PAS vrai pour tout autre microcontrôleur ATxxx.
microtherion

0

J'ai cette chose que j'ai achetée pour quelques dollars sur eBay, que je ne sais pas comment et si je dois utiliser:

c'est infiniment mieux que votre arduinoisp.

google avrdude / avrdudess.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.