Telechargé par [email protected]

les-fusibles-sur-les-microcontroleurs-avr-datmel-

publicité
WikiGeaks
Recherche pour :
NOV 5, 2014 |
CATÉGORIES
Arduino
Divers
Imprimante 3d
Python
0 COMMENTS
Programmer les fusibles d’un
microcontrôleur AVR d’Atmel
Cet article traite des fusibles sur un Atmega328, pour tout autre microcontrôleur se référer à sa
documentation.
Le programmateur utilisé pour cet article est un usbtiny.
Raspberry
RSS
1- Présentation
Les fusibles permettent de configurer le microcontrôleur. Ils sont partagés en 3 registres low, high
et extended disposant de leur propre espace mémoire.
Chaque registre est représenté par un octet dont chaque bit correspond à un fusible (paramètre).
Le fusible est programmé sur un bit de niveau 0 et déprogrammé sur un bit de niveau 1.
Le registre « low fuse » comporte les fusibles sur les horloges, le registre « high fuse » les fusibles
d’options et le registre « extended fuse » les fusibles sur la tension de coupure. Les fusibles
changent d’un microcontrôleur à l’autre.
Précaution
Certains fusibles sont critiques, on les retrouve dans le registre « high fuse » et s’appelle RSTDISBL
et SPIEN. Le premier permet de désactiver la fonction reset sur la pin 1 empêchant l’initialisation
d’une programmation par SPI au bénéfice de son utilisation pour un autre usage. Le second
empêche la programmation par l’interface SPI, il n’est pas possible de modifier ce fusible en
utilisant ce même protocole.
En surbrillance les fusibles à ne pas modifier sous peine de mauvaise surprise :
1
1
0
1
1
0
0
1
= 0xD9
RSTDISBL
DWEN
SPIEN
WDTON
EESAVE
BOOTSZ1
BOOTSZ0
BBOTRST
HFUSE
Au bal masqué…
Le registre « extended fuse » supporte seulement 3 fusibles. Ils indiquent le seuil de tension en
dessous duquel le microcontrôleur se coupera.
Il reste donc 5 bits inutilisés sur l’octet et suivant leur valeur poseront des problèmes lors de la
vérification d’écriture. Ainsi il est nécessaire de fournir un masque qui permettra au
programmateur de lire uniquement les bits nécessaires.
Pour les fusibles « extended fuse », ce masque est 0×07. Les bits à l’état logique 0 seront masqués.
Pour les autres registres, l’octet étant complètement utilisé la valeur de leur masque est 0xFF.
2- Fonctionnement
Par défaut l’atmega328 sort d’usine avec une horloge cadencé à 1Mhz ce qui est relativement faible
pour de nombreuses applications. Pourtant l’horloge interne est à 8Mhz.La faute à un fusible qui
divise l’horloge (interne ou externe) par 8 à des fins d’économie d’énergie.
Ce fusible est gérée comme tout ce qui touche aux horloges par le registre « low fuse » sous le nom
CKDIV8. Il est nécessaire de le mettre 1.
2-1 Lire les fusibles du microcontrôleur
Affichage du résultat en décimal (base 2) – argument b
sudo avrdude -p m328p -c usbtiny -U lfuse:r:-:b -q -q # retourne 0b1101010
Affichage du résultat en hexadecimal (base 16) – argument h
sudo avrdude -p m328p -c usbtiny -U lfuse:r:-:h -U hfuse:r:-:h -U efuse:r:
Sur le résultat binaire le bit de poids fort est à 0, il correspond au diviseur par 8 qu’il faut désactiver.
0
1
1
0
0
0
1
0
= 0×62
CKDIV8
CKOUT
SUT1
SUT0
CKSEL3
CKSEL2
CKSEL1
CKSEL0
LFUSE
Piège : Si avrdude retourne l’erreur avrdude : initilization failed, rc=-1 laissant penser une erreur de
connexion, cela peut également provenir du registre « lfuse » configurer en horloge externe. Dans ce
cas il est nécessaire de câbler un quartz ou un résonateur aux bornes du microcontroleur afin de le
programmer.
Certains programmateurs comme l’USBAsp permettent de commuter différentes vitesses pour
palier ce problème.
2-2 Ecrire les fusibles du microcontrôleur
Pour désactiver le diviseur par 8 CKDIV8 il faut réécrire l’octet du registre « lfuse » soit en utilisant la
numérotation binaire :
sudo avrdude -p m328p -c usbtiny -U lfuse:w:0b11100010:m -q -q # on passe l
ou en utilisant la numérotation hexadécimal :
sudo avrdude -p m328p -c usbtiny -U lfuse:w:0xE2:m
L’argument « m » en fin de commande indique à avrdude de prendre la valeur le précédent comme
données à écrire. En temps normal on y place le nom du fichier contenant les données.
Ressource: Il existe un calculateur de fusible en ligne
So, what do you think ?
You must be logged in to post a comment.
Created by Site5 WordPress Themes. Experts in WordPress Hosting
Téléchargement