Accueil du siteProgrammation et logicielsLes micro-contrôleurs sans ta mère
Dernière mise à jour :
dimanche 7 mars 2010
Statistiques éditoriales :
457 Articles
87 Brèves
70 Sites Web
18 Auteurs
Sur le Web
Capteurs Mindsensors

Des capteurs et des compléments pour enrichir la brique Lego NXT de nouveaux équipements.

Vous trouverez des caméras, des capteurs de distance, des cables et des connecteurs compatibles avec RCX, ainsi que des cartes de développement en numérique et désormais en analogique !

Annonce LEGO.com : produit NXT
Ce produit annoncé au CES (Consumer Electronics Show) de Las Vegas est le digne remplaçant du kit Mindstorms RIS 2.0 (brique RCX).

Péter correctement les plombs
ou comment configurer les fuse bits de l’ATmega8
samedi 26 novembre 2005
par Eric

 La théorie

Les micro-contrôleurs ATMEL sont configurables par le biais de fuse bits et de lock bits.

Il s’agit d’informations non volatiles, qu’il est possible de configurer via l’ISP entre autres, et qui définissent un certain nombre de propriétés, comme par exemple :

  • la configuration de l’horloge, entre l’utilisation de l’oscillateur interne, d’un quartz externe, d’une horloge externe,...
  • la manière dont il démarre
  • la possibilité de provoquer le reset on non via la pin /RESET
  • et bien d’autres trucs encore
Comme d’hab, pour en savoir plus, et surtout éviter de faire les frais d’explications approximatives ou fausses que des énergumènes comme moi pourraient vous donner, il convient d’appliquer ici encore l’adage numéro 1 de la profession :

“Le datasheet ta Bible sera, et à tes questions, réponse il apportera”

Là où ça coince un peu sur le sujet des fuse bits et consorts, c’est que dans le doc, ATMEL utilise une convention qui peut troubler au début. Un fuse bit est en effet dit programmé quand il a la valeur 0. Cela est dit de la manière suivante en page 24 du datasheet :

For all fuses “1” means unprogrammed while “0” means programmed.

Bon, on aurait pu penser le contraire, mais c’est comme cela.

Le problème est que, si vous utilisez PonyProg par exemple pour les programmer, il représente par des cases à cocher la valeur binaire du bit en mémoire. Si vous faites le raisonnement :

- "1" je coche la case,
- "0" je la décoche,

et bien vous aurez gagné un ATMEL sauvage, qui souvent ne sera plus utilisable. Car vous l’aurez programmé à l’envers, et en tout cas pas du tout comme vous le souhaitiez. Il existe des techniques pour ramener à la raison de tels mutants, mais c’est tricky, car la plupart du temps, la liaison ISP ne sera plus disponible. Le temps étant de l’argent, si cela devait vous arriver, il est beaucoup plus rentable (y compris pour les nerfs) d’aller dire un petit bonjour à votre fournisseur attitré de composants, vu le prix moyen d’un ATmega de base.

Conclusion, pour traduire la programmation des fuse bits en coche de case PonyProg, inversez les 1 et les 0 des tableaux de la doc.

 La pratique

Pour vous aider à y voir plus clair, voici le paramétrage affiché par PonyProg des fuse bits d’un ATmega163 (ils sont affichés dans le deuxième cadre, le premier étant les lock bits).

PNG

Comme vous pouvez le constater, l’auteur de PonyProg a pensé à nous rappeler l’interprétation des case à cocher vis à vis de la valeur binaire des bits telle que définie dans le datasheet.

Si on effectue la même lecture des fuse bits avec avrdude, cela donne ce qui suit :


C:\>avrdude -p atmega163 -c stk200 -P lpt1 -t

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9402



avrdude: safemode is enabled, you will NOT be able to change the fuse bits. Use
-u option to disable
avrdude> read hfuse
>>> read hfuse
0000  07                                                |.               |

avrdude> read lfuse
>>> read lfuse
0000  ca                                                |.               |

avrdude> quit
>>> quit

avrdude: safemode: Fuses OK

avrdude done.  Thank you.


C:\>

On constate bien que les valeurs 0x07 et 0xca, soit en binaire 00000111 et 11001010, correspondent à ce que nous attendions, sachant que les cases grisées représentent des bits non utilisés valant toujours 0.

Au passage : Pour les réfractaires de la ligne de commande, et si (comme moi maintenant) vous ne pouvez plus utiliser PonyProg car votre nouvelle machine n’a plus de port parallèle, et que par conséquent votre bon vieux programmer à 2 sous n’est plus utilisable, il existe une interface graphique pour avrdude qui s’appelle avrdude-gui. Elle a de plus l’avantage de montrer la ligne de commande équivalent, ce qui, vu l’indigence de la documentation d’avrdude n’est pas du luxe.

 Le mot de la fin

Pour tout savoir sur les fuse bits de l’ATmega8, rendez-vous page 220 du datasheet.

 

Répondre à cet article
Messages de forum :
Cité sur un site web
samedi 16 juin 2007
par  Julien
L’article d’Eric est cité sur la page de silicium628 qui partage notre intérêt pour la famille de microcontrôleurs Atmega

Article de silicium628
Répondre à ce message Fil de discussion

Péter correctement les plombs
samedi 5 août 2006
Bravo pour cet article. J’en ai malheureusement pris connaissance après avoir ( mal ) programmé les fuses de mon chip. Quelle est cette méthode tricky permettant de récupérer la bête ?

Répondre à ce message Fil de discussion

Péter correctement les plombs
samedi 12 août 2006

Cette méthode tricky est la programmation parallèle. En fait, en paramétrant incorrectement les fuse bits, on peut se retrouver avec le SPI hors service, et donc sans possibilité d’intervenir sur le micro via le câble de programmation habituel.

La programmation parallèle consiste à envoyer les données en parallèle (comme son nom l’indique) en non pas en série (comme via le SPI). Pour ce faire, on utilise des IOs des ports B et C pour les data, du port D pour la signalisation, ainsi que l’entrée XTAL1 pour la clock. Il y a ensuite un chronogramme précis à respecter pour tous les signaux. Tout cela est décrit en détail dans la bible (euh, pardon, le complete datasheet), en page 223 et suivantes. Bien entendu, cela ne peut pas se faire avec le µC dans son circuit (car les IOs nécessaires sont vraisemblablement câblées), mais requiert d’avoir une platine dédiée à cela et d’y transporter le µC le temps de l’opération (comme à l’ancienne avec les programmateurs hard).

Bon, ça c’est la théorie. En pratique, c’est tellement ch**nt à mettre en oeuvre (je ne l’ai jamais fait, mais je rapporte les propos de certains de mes collègues qui l’ont essayé) que c’est plus vite fait de jeter le µC et d’en prendre un neuf. Vu le coût de la bête, ça ne vaut pas tous les neurones que tu vas griller (d’autant qu’il n’y a pas de méthode connue pour les récupérer eux ;-))

Répondre à ce message Fil de discussion

Péter correctement les plombs
mardi 9 mai 2006

Salut a tous, Si ca peut interesser quelqu’un, j’ai deja configurer le ATMEGA8 a 16Mhz avec AVRdude, la procedure est assez simple : Demarer=>Executer=>cmd Dans la ligne de commande j’ai taper : "avrdude -p m8 -c alf -t"

Puis il nous met automatiquement Avrdude> Ici j’ai taper "d lfuse" Puis il nous remet Avrdude> J’ai alors taper "w lfuse 0 0xEF"

PS : Ce site est vraiment bien ! J’y vient regulierement



Répondre à ce message Fil de discussion

Péter correctement les plombs
mercredi 10 mai 2006
par  Eric

Merci pour cette procédure de gestion des fuse bits via avrdude.... et pour le compliment concernant notre site ;-)

Eric

Répondre à ce message Fil de discussion

Péter correctement les plombs
samedi 9 janvier 2010
par  BBenj
Précision : si vous programmez comme moi le fuse de la pin reset en i/o, il vous faudra aussi un prog // si vous désirez reprogrammer votre µC... (enfin d’après ce que j’ai pu lire, je n’ai pas encore pu tester)  :-(
Répondre à ce message Fil de discussion

Péter correctement les plombs
samedi 9 janvier 2010

C’est tout à fait exact. Et là on doit commencer à rigoler... ou pas.

C’est pourquoi il est déconseillé de modifier la fonction de la pin RESET à moins de vraiment savoir ce qu’on fait et d’en assumer les conséquences.

Répondre à ce message Fil de discussion

Péter correctement les plombs
samedi 9 janvier 2010
par  BBenj

Ben en fait je testais un programme (pour piloter un LCD) (à l’origine pas pour un atmega8) qui utilisait la pin reset (et bien sur ça ne fonctionnait pas...), donc moi ben j’ai pas trop réfléchi, j’ai regardé dans les fuses et oh ben tient on peut mettre la pin reset en i/o normal ! Donc voila...

J’ai commencé avec les PIC, voila pourquoi ! Un pic n’a pas de problèmes de ce genre. Mais je préfère largement les Atmel !

Je vais me faire un prog // juste pour les fuses, avec un pic. Je vais ptet même le faire autonome, comme ça j’aurais juste à brancher et ça me reprogramme les fuses correctement. :-)

Ps : par contre après avoir mis la pin reset en i/o, ça marchait du tonnerre :-P

Répondre à ce message Fil de discussion

Péter correctement les plombs
dimanche 10 janvier 2010

Sauf si c’est pour le challenge, j’opterais personnellement pour une autre option que celle de réaliser un programmateur parallèle : acheter un autre µP.

Compte-tenu de la modicité de la somme et du fait qu’il faudra de toute manière dédier un µP au programmateur, sans parler des autres composants, du PCB,... à moins d’en avoir vraiment besoin par ailleurs, la démarche ne se justifie pas du tout économiquement parlant.

Sans parler du temps passé. Je n’ai jamais tenté la manip, mais je crois savoir qu’un collègue s’y est frotté et y a laissé pas mal de neurones et d’heures de sommeil. Et pourtant c’est tout sauf un manche en électronique et µP.

Maintenant, si comme je le disais c’est pour le sport, alors c’est une autre histoire. Dans ce cas, bon courage pour cette entreprise ;) Et tiens-nous au courant.

Répondre à ce message Fil de discussion

Péter correctement les plombs
dimanche 10 janvier 2010
par  BBenj

Oui ms j’ai pas prévu de passer une commande avt un moment, et je n’ai pas de boutique qui vend des µC dans le coin. Le jour où je déménage je m’installe à côté d’un grand magasin d’élec :-D

Pourtant la doc est très clair sur le sujet, ça n’a pas l’air compliqué !! Même plutôt très simple. Et puis il me reste des pic que je n’utilise plus (des 16F84) et que j’avais eu en sample, donc autant les utiliser :-)

Si je reviens pas c’est que ça ne marche pas ^^

Répondre à ce message Fil de discussion

Articles de cette rubrique
  1. Les tout premiers pas
    21 novembre 2005

  2. A manger, ou comment alimenter ses montages 5V
    24 novembre 2005

  3. Garder le contact
    3 décembre 2005

  4. Péter correctement les plombs
    26 novembre 2005

  5. S’ouvrir au monde
    27 novembre 2005

  6. Bouge ton servo
    2 décembre 2005