Comment changer fusible bits de Atmega328p AVR - microcontrôleur 8 bits en utilisant Arduino (2 / 7 étapes)

Étape 2: Brèves de compréhension fusible de feuille de données

Les microcontrôleurs AVR AtmegaXXX est livré avec un oscillateur interne de 1 MHz par défaut. Dans ce instructable je vais vous montrer comment changer les fusibles de Atmega328P-PU travailler à oscillateur interne de 8MHz. L’emplacement du fusible spécifique bits se distingue parmi tous les fusible trois octets (faibles, élevés et famille élargies fusibles) fonction AVR puce utilisée. Donc n’oubliez pas de les écrire avant leur mise.

Fusibles de l’octet de poids faible

Le fusible de l’octet de poids faible traite l’horloge source, à quelle vitesse la puce s’exécutera et combien de temps il attend au démarrage. 1 octet est égal à 8 bits. Donc, il y a 8 bits dans l’octet bas fusible. Ces 8 bits sont expliquées ici :

  • Bit-7: CKDIV8 : quelle série divise la vitesse d’horloge par 8
  • Bit 6: CKOUT : lorsque les impulsions de réglage de l’horloge sont sortie sur PB0 (14 broches)
  • Bit-5: SUT1 : temporisation de démarrage
  • Bit-4: SUT0 : temporisation de démarrage
  • Bit-3: CKSEL3 : définissez la source de l’horloge
  • Bit-2: CKSEL2 : définissez la source de l’horloge
  • 1-bit : CKSEL1 : définissez la source de l’horloge
  • Bit-0: CKSEL0 : définissez la source de l’horloge

Les puces de ATmega peuvent rouler à des vitesses différentes ou des fréquences et la fréquence est déterminée par la source d’horloge qui est utilisée. La source d’horloge est définie en utilisant la CKSEL3... bits 0 fusible. Travailler avec la source d’horloge interne nous devons définir CLSEL3 = 0, CKSEL2 = 0, CKSEL1 = 1 and CKSEL0 = 0. Vous devez trouver cette valeur dans la fiche technique du microcontrôleur. Dans la fiche technique il y a un chapitre « horloge système et options de l’horloge ». Il y a un sous-thème dans ce chapitre "Sources d’horloge". Vous y trouverez une table où la valeur de CKSEL3... 0 peut être la source. J’ai joint une capture d’écran de la feuille de données.

Pour l’heure de démarrage, il y a un autre sous-thème "calibré interne RC oscillateur". Vous y trouverez une autre table pour la SUT0... 1. je vais utiliser l’option de puissance montante lente. Si SUT1 = 1 and SUT0 = 0.

Maintenant, nous nous retrouvons avec deux plus de bits pour définir : CKOUT et CKDIV8. Je n’ai aucune sortie d’impulsion horloge sur PB0. Donc je vais mettre cela à 1 (non programmé).

La fréquence maximale d’interne oscillateur RC pour Atmega328P-PU est de 8 MHz. Ceci est réalisé lorsque CKDIV8 est 1 (ou non programmé). Si vous définissez à 0 (ou par programmation) alors votre puce sera avorton à 1 MHz. Afin de lancer la puce à 8 MHz, il faut donc définir CKDIV8 = 1.

Maintenant, combinant tous les 8 bits, notre octet de fusible faible requis est 11100010.

Fusibles de l’octet haut

Le fusible de l’octet haut est expliqué ci-dessous. Vous pouvez simplement ignorer cette partie. Ici, j’ai expliqué seulement les bits de fusible haute. Nous n’avez pas besoin de changer les bits de fusible haute afin de changer la source d’horloge et la fréquence de fonctionnement. Mais si vous êtes intéressé à connaître l’octet haut fusibles puis passez par le sous paragraphe.

Il y a 8 bits dans le fusible de l’octet haut aussi. Ce sont :

  • Bit-7: RSTDISBL : disable Reset externe
  • Bit 6: DWEN : enable Debug Wire
  • Bit-5: SPIEN : activer la série de programmation et de téléchargement de données
  • Bit-4: WDTON : temporisateur toujours allumé
  • Bit-3: EESAVE : effacer de la mémoire EEPROM préserver grâce à puce
  • Bit-2: BOOTSZ1 : définit la taille de mémoire de programme d’amorçage
  • 1-bit : BOOTSZ0 : définit la taille de momory bootloader
  • Bit-0: BOOTRST : sélectionnez le vecteur réinitialisation

Maintenant, je vais vous expliquer chaque bit :

RSTDISBL (réarmement externe désactiver)

PC6 de Atmega328 est une broche de reset, tenez-le faible (au sol) et la puce se réinitialise. Voilà comment fonctionne le commutateur sur l’Arduino. Lorsque vous appuyez sur le bouton de réinitialisation, il relie PC6 à terre et réinitialise la puce. PC6 est utilisable aussi comme une broche ordinaire de IO, mais cela signifie que la désactivation de la fonction de réinitialisation qui, à son tour, signifie que la puce ne peut plus être inline programmé (en ligne programmation nécessite un redémarrage). C’est une des options qu'il est préférable de ne pas changer. J’imagine que RSTDISBL est mis en œuvre pour des raisons de sécurité arrêter la puce étant reprogrammé ou le firmware téléchargé. Lorsque RSTDISBL est programmé démarrage du temps (SUT1 SUT0) est porté à 14CK + 4.1ms pour assurer le mode de programmation peuvent être saisis.
Par défaut, le paramètre est RSTDISBL = 1 (non programmé).

DWEN (fil activer le débogage)

ATmega puces ont construit au débogage des outils qui sont par défaut désactivé. Le fusible DWEN est utilisé pour les allumer. DWEN utilise le même NIP comme reset (PC6) et quand DWEN est activé (et les bits de verrouillage ne sont pas définis) la broche de remise à zéro devient un axe de communication normale réinitialiser n’est plus fonctionne. Par exemple, si vous activez DWEN sur un Arduino le bouton reset ne fonctionne plus. Pour utiliser le débogage sur puce dont vous avez besoin d’un programmeur compatible tel que le Dragon d’AVR. Étant donné que je n’ai pas un programmeur adapté j’ai jamais utilisé et ne sais pas comment faire pour utiliser le débogage. Si vous souhaitez en savoir plus, alors il est un bon article pour vous aider à démarrer.

C’est l’un des fusibles avec que vous devez prendre soin. Si vous activez DWEN et permettent également les bits de verrouillage, que vous ne pouvez plus programmer la puce de la manière habituelle.

Si vous êtes débutant puis laissez DWEN 1 (non programmé). Après tout, la remise à zéro est très utile.

SPIEN (programmation série activer et le téléchargement de données)

ATmega puces peuvent être programmés à l’aide de la programmation de la série. Programmation série sert à bord de la programmation à l’aide d’un protocole série via un FAI (inline programmeur série) ou l’UART (universal asynchronous récepteur / émetteur). La méthode normale de programmer les puces ATmega est via l’interface SPI à l’aide de la SCK (horloge), les MOSI (entrée) et les goupilles MISO (sortie). Si vous désactivez la série programmation puis vous pouvez ne plus utiliser le SPI pour programmer la puce. Vous pouvez également désactiver série utilisant les pointes de verrouillage de la programmation. Pour une utilisation normale et le développement laisser SPIEN activé, cependant, si vous avez un périphérique qui est définitif et sans davantage de programmation est nécessaire, alors vous pouvez utiliser cette option pour empêcher les gens d’accéder à la puce par le biais de communication série.

Le paramètre par défaut est SPIEN activé, SPIEN = 0 (programmé).

WDTON (Watchdog Timer toujours activée)

Le chien de garde est fondamentalement une minuterie qui provoquera la puce réinitialiser si elle ne reçoit pas un OK signal à des moments précis. Cela peut être utile lorsque vous avez code instable ou un système qui ne doit pas se bloquer en permanence. Lorsque le temporisateur est activé, doit planter d’un croquis ou gel puis la minuterie expirera et réinitialiser la puce provoquant un redémarrage similaire à appuyer sur le bouton de réinitialisation un un Arduino en cours d’exécution. Le temporisateur est activable dans le logiciel, donc les paramètres fusible ne devrait vraiment être utilisé. Par défaut, le temporisateur est éteint, WDTON = 1 (non programmé).

EESAVE (mémoire EEPROM préserver)

Lorsque la puce ATmega est programmée la mémoire est effacée, juste avant que le nouveau code est téléchargé. Dans des circonstances normales, la mémoire EEPROM est effacée ainsi que la mémoire de programme. Le fusible EESAVE peut être utilisé pour dire la puce ne pas d’effacer la mémoire EEPROM. Ceci est utile lorsque vous souhaitez mettre à niveau le code mais conserver les paramètres utilisateur stockés dans l’EEPROM.
J’ai pris l’habitude de mettre ce fusible ; EEPROM a un cycle de vie limité alors moins vous y écrire mieux. Effacement de la mémoire eeprom n’a aucun effet sur le nouveau code de téléchargement et la plupart de mes projets n’utilisez pas la mémoire eeprom donc pas effacer il n’est pas un problème. Le dropController stocke les paramètres et goutte fois en eeprom et donc j’ai mis EESAVE pour conserver les données lorsque j’ai télécharger les nouvelles versions du code.

La valeur par défaut est EESAVE = 1 (non programmé), et EEPROM mémoire est effacée lors de l’effacement de la puce lors de la programmation du cycle.

BOOTSZ1 & BOOTSZ0 (Boot loader taille)

Les puces de ATmega ont la possibilité d’utiliser un chargeur de démarrage, il s’agit d’un petit programme qui s’exécute lorsque la puce est tout d’abord commencée ou lorsqu’il est remis à zéro. Chargeurs de démarrage sont normalement utilisés pour initialiser le périphérique et vérifier pour la communication externe. L’Arduino utilise un chargeur d’amorçage pour parler à un ordinateur connecté pour voir si il y a un nouveau programme à télécharger. C’est la raison pour laquelle que l’Arduino réinitialise lorsque vous téléchargez le nouveau code, la réinitialisation s’exécute le programme d’amorçage, le boot loader vérifie si vous avez un code nouveau.
Le chargeur de démarrage est stocké dans la mémoire de programme, la même mémoire utilisée pour l’application de l’utilisateur, et étant donné que le programme d’amorçage peut être de différentes tailles, vous pouvez dire la puce ATmega combien d’espace à réserver. Le bootloader Arduino (plus âgé) régulière est 2 kilo-octets (Ko), mais la plus récente Optiboot (utilisé sur la UNO) est seulement 0,5 Ko (512 octets). Si à l’aide de Optiboot et de définir la taille de chargeur de démarrage en conséquence, vous gagnez un 1,5 Ko supplémentaire pour votre propre programme. 5 1. KB peut être beaucoup d’espace, manquer d’espace de programme est la raison pour laquelle j’ai commencé à programmer des stand-alone ATmega puces en premier lieu. Le code pour la chute de contrôleur est devenu trop grand pour l’Arduino régulière alors j’ai enlevé le chargeur de démarrage.
Si vous avez un chargeur d’amorçage puis BOOTSZ doit être utilisé en conjonction avec BOOTRST. BOOTRST dit la puce ATmega l’adresse mémoire où démarre le programme d’amorçage. Si BOOTRST n’est pas définie, l’application utilisateur pouvez utiliser toute la mémoire quels que soient les paramètres de BOOTSZ.

La valeur par défaut pour les nouvelles puces est BOOTSZ1 = 0 (programmé) et BOOTSZ0 = 0 (programmé) ce qui signifie qu’ils ont maximum mémoire réservée pour un chargeur de démarrage.

BOOTRST (sélectionnez reset vector)

ATmega puces peuvent utiliser un chargeur de démarrage, il s’agit d’un petit programme qui s’exécute lorsque la puce est réinitialisée. Si vous avez un chargeur d’amorçage, vous devez informer le MCU et c’est en utilisant le BOOTRST fusible de réglage. Lorsque le fusible BOOTRST est défini, sur Réinitialiser l’appareil passera à l’adresse Bootloader. Si ce n’est pas le cas, ensemble, la puce va sauter à l’adresse de départ du programme à 0 x 0000.

La valeur par défaut est BOOTRST = 1 (non programmé).

Si BOOTRST n’est pas définie (pas de chargeur de démarrage) puis les fusibles BOOTSZ ne sont pas utilisés indépendamment de la valeur.

Avertissement : Les fusibles RSTDISBL, SPIEN et DWEN ont le potentiel de la puce ATmega en brique, ou au moins faire la puce très très difficile à utiliser à nouveau. Pour un usage général et surtout si vous êtes débutant avec des puces autonomes de programmation, vous ne devez pas modifier ces paramètres de fusible. Vous devriez également vérifier que vous ne modifiez pas les lorsque vous ré-écrivez les autres paramètres de fusible.

Donc notre notre octets requis fusible haute est 11011011.

Fusible étendue Bits

Les fusibles étendues servent uniquement pour définir le niveau de détection brown-out (DBO). Les puces de ATmega peuvent devenir instable ou peu fiable lorsqu’il est utilisé avec une tension insuffisante. Par exemple, l’Atmega328/328p peut exécuter en toute sécurité à 16 MHz si elle a au moins 4 V alimentation. Quoi que ce soit inférieure à 4 v signifie que la puce est susceptible de se conduisent mal. Cela serait un problème si le périphérique servaient avec capteurs d’effectuer des mesures ou s’est appuyé sur des horaires précis.

Pour s’assurer que la puce a un voltage suffisant d’entrée un niveau de tension minimale peut être définie. Si la tension chute en dessous de ce niveau puis la puce se remet en marche. C’est ce qu’on appelle le niveau détecteur brown-out. Fondamentalement, si la tension fournie est inférieure à la DBO de la puce maintient reset bas.

Je ne vais pas à travers chaque morceaux de fusible étendu octet. Par défaut, tous les bits dans cet octet est défini comme 1 (non programmé).

Et voici que notre fusible étendu octet est 11111111.

Articles Liés

Comment LCD Interface 16 X 2 avec Microcontrôleur AVR

Comment LCD Interface 16 X 2 avec Microcontrôleur AVR

Voici le schéma de interface 16 X 2 LCD à Microcontrôleur AVR. Dans ce circuit, l'oscillateur à quartz fournira l'horloge au microcontrôleur. Les condensateurs reliés à la volonté de cristal agissent comme des filtres, aide le cristal à résonner et o
Minuscule AVR microcontrôleur fonctionne avec une pile de fruits

Minuscule AVR microcontrôleur fonctionne avec une pile de fruits

des fruits et des légumes que nous mangeons peuvent être utilisés pour faire de l'électricité. Les électrolytes dans beaucoup de fruits et de légumes, ainsi que des électrodes constituées de divers métaux peuvent être utilisés pour fabriquer des cell
Comment pour commencer avec PICAXE 08 M microcontrôleur

Comment pour commencer avec PICAXE 08 M microcontrôleur

il s'agit d'instructable pour savoir comment débuter avec PICAXE 08M microcontrôleur.Pour commencer, vous devez :-08 M Protoboard ou même genre de bord (peut être fait maison)-UN LED-AXE027 Câble USB-Alimentation 3VÉtape 1: Connectez la led à la born
Comment clignoter une Led à l’aide de microcontrôleur PIC ?

Comment clignoter une Led à l’aide de microcontrôleur PIC ?

Ce tutoriel est pour les débutants de microcontrôleur PIC.* les étapes pour installer MP labo* les étapes pour installer le compilateur xc8* programme de Blink* Projet de renforcement et de brûler au pic McÉtape 1: Composants requis 1) PIC16F886-12)
Comment interfacer 16 X 2 LCD avec microcontrôleur 8051 ?

Comment interfacer 16 X 2 LCD avec microcontrôleur 8051 ?

Il s'agit d'un schéma de circuit de interface 16 X 2 LCD avec AT89C51 qui est une famille de microcontrôleurs 8051. Nous utilisons des écrans LCD pour l'affichage des messages d'erreur, etc.. Ici, nous fournissons les informations de l'écran et égale
Comment programme microcontrôleurs AVR, bon marchés et faciles

Comment programme microcontrôleurs AVR, bon marchés et faciles

Cette volonté instructable guide vous étape par étape comment faire pour exécuter un programme simple en un micro-contrôleur ATMEGA (uC). Si don´t vous savez tout sur comment votre code est stocké dans les microcontrôleurs, il existe essentiellement
Comment faire pour mesure courant CA à l’aide de capteur à effet Hall avec Arduino ou autres microcontrôleurs commune

Comment faire pour mesure courant CA à l’aide de capteur à effet Hall avec Arduino ou autres microcontrôleurs commune

S'il vous plaît voir une nouvelle approche plus simple iciObjectif : Ce Instructable montre comment faire une boîte d'interface qui, lorsque raccordé à une rallonge, permet de microcontrôleurs communs comme l'Arduino à mesure AC courant comme un sign
Comment tester facilement un microcontrôleur avec un analyseur logique

Comment tester facilement un microcontrôleur avec un analyseur logique

Certains de mes projets dans le passé ont eu des problèmes en raison d'une mauvaise broche numérique. Si c'est jamais arrivé à vous, alors vous savez comment il peut être frustrant. Première réaction de la plupart des gens, c'est qu'il y a quelque ch
Mise en route avec un microcontrôleur 8051

Mise en route avec un microcontrôleur 8051

Bonjour à tousJ'aime les projets de microcontrôleurs. J'utilise souvent les deux cartes Arduino et « nu » AVR microcontrôleurs (dispositifs ATTINY et ATMEGA) pour mes projets.Pour ma culture, je choisis d'étudier un autre type de microcontrôleurs, ce
Construire et coder une bobine de Tesla Musical MONSTER avec un microcontrôleur

Construire et coder une bobine de Tesla Musical MONSTER avec un microcontrôleur

visiter ma page youtube pour davantage de projets : http://www.youtube.com/channel/UCksEFn8xaLP0z4rsiHa9zcA?feature=mheeComme l'hiver venu, beaucoup seront contraints de rester à l'intérieur... Pour beaucoup, cela signifie jouer scrabble avec grand-m
Lien de microcontrôleur dans le monde entier pour moins de $20

Lien de microcontrôleur dans le monde entier pour moins de $20

contrôler votre thermostat maison du travail. Allumez une arroseuse de n'importe où dans le monde de chiquenaude d'un commutateur. Ce Instructable montre comment lier deux ou plusieurs microcontrôleurs 4 $ à l'aide de l'épine dorsale de l'internet et
Microcontrôleur LED Debug Module

Microcontrôleur LED Debug Module

Quand il s'agit de débogage d'un circuit microcontrôleur, il n'ya pas beaucoup d'options simples.  Puisqu'un circuit microcontrôleur peut avoir plusieurs choses en même temps, mesurer la tension avec un multimètre n'est pas une option.  À l'aide d'un
Interface 16 X 2 LCD avec microcontrôleur PIC

Interface 16 X 2 LCD avec microcontrôleur PIC

ici, vous apprendrez comment interfacer 16 × 2 LCD à microcontroller PIC18F4550 qui appartient à la famille PIC18F. PIC18F4550 est un microcontrôleur 8 bits et utilise l'architecture RISC. PIC18F4550 a 40 broches PDIP (double en ensemble line) et 44
Communiquer avec microcontrôleur arduino et ordinateur par usb avec un programme vb

Communiquer avec microcontrôleur arduino et ordinateur par usb avec un programme vb

Si vous êtes comme moi et veulent être en mesure de contrôler vos objets reliés à votre arduino via votre ordinateur puis vous avez besoin d'un moyen d'établir une connexion et de communiquer avec votre arduino depuis votre ordinateur. Ce tutoriel et