Etape 3: Comment programmer les fusibles ?
Avant de commencer, nous devons regarder vers le haut les bits de fusible de l’Atmega8 et leur valeur initiale. Depuis im, ce qui en fait instructable depuis un téléphone mobile, j’ai fait un tableau contenant les détails requis. J’ai créé à l’aide de google feuille android app. Je ne pouvais pas trouver un moyen de les convertir en images. Voici donc im poster le lien.Bits de fusible de 8 Atmega (l’un im en utilisant dans ce tutoriel)
https://docs.google.com/spreadsheets/d/1haE2Sprdsa-NgKYsOQlwI99WHfGqCItJutG4h-MnOus/Edit?USP=docslist_api
Nous passons maintenant aux détails de comment programmer les bits de fusible dans votre AVR selon le programmeur particulier que vous utilisez. Dans un premier temps, nous devrions consulter le manuel du programmeur sur les détails. Par exemple, si vous utilisez un STK600 avec AVR Studio, la fenêtre STK600 dispose d’un onglet étiqueté fusibles, lorsque vous définissez les bits différents et où vous pouvez programmer, vérifier ou lire les bits de fusible.
(J’utilise un Atmega 8 pour mon exemple. J’utilise surtout Atmega 8 car elle est bon marché et contient assez de mémoire pour la plupart de mes projets).
La plupart des gens ont confusion à ce sujet. Pour dire les choses très simplement, il y a seulement deux types de fusibles, fusibles haute (hfuse) et fusibles basse (lfuse), certains microcontrôleurs ont un octet de fusible supplémentaire appelé étendue fusible (efuser).
La partie plus confuse vient ici. L’état non programmé d’un bit de fusible est logique haute ou 1, programmation toute peu fusible va changer son niveau logique bas ou 0.
« Une exception juste garder à l’esprit est - les bits de fusible concernant pour amorcer chargeur ne sont pas accessibles depuis le logiciel, mais, on peut y accéder en mode de programmation à l’aide de parallèle /serial programmation outil. »
Comme indiqué dans l’image ci-dessus, le fusible ainsi que sa valeur binaire et le nombre de bits est montré. Certaines fonctions de la les fusibles mentionnés ci-dessus sont:-
(J’ai utilisé une feuille de données Atmega 8 pour le schéma que j’ai posté).
Octet de fusible haut (hfuse)
1) premier bit est BOOTRST qui est non programmé par défaut (1). Si ce bit est programmée (0) puis après la mise sous tension ou dispositif réinitialisé il commence programme l’exécution de la section de mémoire de programme d’amorçage. Simplement, si un bootlaoder sert à flash MCU, ce bit doit être activé. Si vous téléchargez tout simplement votre firmware à l’aide du programmateur ISP, puis ce bit laisser intacte.
BOOTSZ0 et BOOTSZ1 sont aussi importants si le bootloader est utilisé. Ces bits permet de choisir la taille de section chargeur de démarrage.
2) bit suivant est EESAVE. Si ce fusible est programmé (en écrivant 0 à elle) mémoire EEPROM reste intacte au cours de la procédure de puce effacer. Ce fusible est parfois utile. Pour instance si vous conserver certaines données importantes en mémoire EEPROM comme étalonnage valeurs et devez mettre à jour programme sans perdre ces données, puis programmer ce bit. Mais si vous voulez toujours avoir propre puce après effacement, puis quitter ce bit intact (valeur 1).
3) bit WDTON est utilisée pour définir initialement temporisateur. Si cela est programmé votre minuteur de surveillance est obligé de toujours être sur et garder de réinitialiser la puce périodiquement si aucun soin spécial. Si pas besoin de chien de garde, puis laissez-le unprogammed.
4) bit SPIEN est utilisée pour désactiver la série programmation ISP de mode. En fait, il n’est pas possible de désactiver ce bit du mode serial. Il doit être fait par le biais de la programmation de haute tension.
5) même situation est avec peu RSTDSBL. Il est utilisé pour désactiver la fonctionnalité de réinitialisation qui convertit RESET pin en e/s. En général, ce n’est pas recommandé. Et il ne peut pas être désactivé lorsque le dispositif est programmé en mode ISP.
6) bit CKOPT est utilisé pour sélectionner les options de l’oscillateur.
Fusibles basses (lfuse)
Permet de se penche sur l’octet de poids faible des fusibles.
1) un groupe de quatre bits semblables qui sont CKSEL0 à CKSEL3 sont utilisés pour sélectionner les options de synchronisation. Par défaut, que cksel0 à CKSEL3 des fusibles sont définis pour sélectionner l’oscillateur interne de 8MHz RC. Mais nous savons Qu'avrs peuvent être cadencées plus différemment :
* Calibré oscillateur RC interne (par défaut 8MHz)
* Oscillateur RC externe
* Externe cristal ou résonateur
* Externe basse fréquence crystal
* Source de signal d’horloge externe
Je l’ai expliqué tout SUT (temps de démarrage) dans l’étape suivante.
J’écrirais sur la façon de calculer ces valeurs sur notre propre, plus tard dans cette instructable.
2) BODEN ou brun peu activer détection permet brun sur la détection. Brown sur détection est généralement désactivée (1). Programmation de brun sur la détection de ce bit faible (0) enanbles. La raison de cette caractéristique est que, quand la tension devient inférieure à la tension requise par le microcontrôleur, il commence à se comporter de façon erratique. Il peut lancer l’effacement de sa propre mémoire ou peut-être s’exécuter sections aléatoires de son flash. Pour éviter cela, brun sur la fonctionnalité de détection a été fournie. Une fois l’alimentation tension devient inférieur au niveau de DBO réglé, la puce passera d’en toute sécurité. Lorsque la tension d’alimentation retourne à nouveau à la normale, la puce recommence à nouveau.
BODLEVEL - avec ce peu que nous pouvons définir le brun sur la détection de niveau. Par exemple si le microcontrôleur exécuter sur 3,3 volts, nous pouvons définir le brun sur détection niveau à 2,7 volts, alors que si la tension d’alimentation devient inférieure à cela alors le microcontrôleur fermera en toute sécurité.
Une caractéristique intéressante à noter ici, c’est autres microcontrôleurs AVR comme Atmega 32 ont certains fusibles différents, comme dans l’octet haut fusible, ils ont OCDEN et JTAGEN et en Atmega 328p il existe DWEN etc..
Je m’excuse pour les photos de mauvaise qualité parce que j’ai fais ce instructable de mon android.