Home › Forum › Microcontrôleurs & microprocesseurs › Programmation fusible AVR dans le code C

Forum

Veuillez vous identifier avant de répondre ou pour vous abonner à cette discussion

Sujet: Programmation fusible AVR dans le code C

Auteur Message

Totofmex

18 messages

De passage
De passage

Read post 01-05-2011 18:52

Bonjour,
Je voudrais savoir si on peut programmer tous les fusibles des microcontrôleurs AVR (ATmega ou ATtiny) directement dans le code C sans passer par les options des logiciels de programmation.
Je trouve que serais beaucoup plus sûr et éviterais des petites surprise.
Je viens de "griller" un ATmega16 en touchant au fusible SPEIN. Maintenant je sais a quoi il sert.

Merci

YMasquel

2503 messages

Expert
Expert

Read post 01-05-2011 19:42

Bonjour Christophe,

Alors que j'utilise toujours cette possibilité avec les puces de MICROCHIP je passe par l'épreuve des "coches" pour les puces ATMEL.

Il est vrai que les définitions des bits de configuration n'existent pas sur tous les fichiers d'INCLUDE de ce fournisseur et ce serait même une exception mais je n'ai pas vérifié si c'était toujours le cas en raison des habitudes prises.

Pour le fusible en question je crois qu'il s'agit du SPIEN (et non SPEIN) qui peut empêcher la programmation en mode SPI. Mais il ne doit pas être possible de le modifier si on se trouve en programmation SPI (ICSP), il faut un programmateur en mode parallèle pour modifier ce bit (donc pour le réinitialiser également). Je suis donc surpris que ce soit la raison du blocage.

N'aurais-tu pas aussi choisi un mauvais paramétrage de l'horloge qui d'une part empêche la puce de fonctionner selon les règles que tu attendais et d'autre par doit disposer de la circuiterie correspondant à ce qui est préalablement programmé pour accepter une nouvelle programmation (avec quelques libertés qui peuvent parfois sauver la mise).

Amicalement, Yves.

Totofmex

18 messages

De passage
De passage

Read post 01-05-2011 21:44

Merci Yves pour ta réponse.
J’utilise pour programmer AVR Studio 4.18 avec le programmateur d’ATMEL (AVRISP MKII). J’ai même fait un essai avec la version 5 d’AVR Studio et même résultat. Je suis parti sur une base de la carte Mini- Mega avec un quartz de 8 Mhz, j’ai aussi rajouté sur cette carte un ATmega8 et la programmation est OK pour celui-ci (Hard OK).
Effectivement, comme j’avais des résultats bizarre sur des temps de tempo et impossible de lire correctement un valeur avec ADC0. J’ai modifies quelques paramètres d’horloges et suppression du JTAGEN et du fameux SPIEN(par erreur).

Pour essayer de récupérer l’ATmega16, j’ai fait des essais avec les différentes possibilités du fusible : SUT_CKSEL (Ext et INT) Medium et High fréquence.
Pour info : le fusible SPIEN (Oui vous avez raison) est en grisâtre avec un petit point d’interrogation en rouge. Je ne peux pas le modifier.

A chaque fois que je veux programmer j’ai une fenêtre « ISP MODE ERROR » qui apparait et m’affiche en bas de la fenêtre :
Setting mode and device parameters.. OK!
Entering programming…FAILED!
Leaving programming mode… OK!

J’ai aussi baisse la vitesse (ISP Frequnec) de programmation et rien n’y fait.
J’ai vu sur Internet qu’il fallait le reprogrammer en // pour pouvoir le récupérer mais je n’ai pas trouve de montage.

Encore merci.

YMasquel

2503 messages

Expert
Expert

Read post 01-05-2011 23:08

Bonjour Christophe,

Je reste persuadé que l'anomalie vient de la configuration de l'horloge car, comme tu l'as effectivement remarqué, le bit SPIEN n'est pas accessible en ICSP.

Sans connaître le paramétrage d'horloge qui a permis de programmer précédemment la puce il sera difficile de la rectifier via ICSP.

Investir dans un programmateur fonctionnant en mode parallèle n'est pas raisonnable face au coût de la puce elle-même sauf si tu réitère les erreurs dans le paramétrage des "fusibles" d'horloge. En principe c'est le genre d'erreur qui reste gravé dans la mémoire.

En cas de besoin (quelques dizaines de puces pour limiter les frais de port) tu peux me les envoyer, j'ai un matériel qui permet cette récupération.

Amicalement, Yves.

Totofmex

18 messages

De passage
De passage

Read post 02-05-2011 16:53

Encore merci pour votre offre, c'est sur que la prochaine fois je ferais plus attention.

A+

Christophe

lpt1com2

1 message

De passage
De passage

Read post 28-06-2011 09:53

Bonjour,
J'arrive peut-être un peu tard...
J'ai eu le même problème à cause d'une mauvaise configuration des fusibles qui sélectionnait l'horloge externe, et dans ce cas, impossible de reprogrammer quoi que ce soit en isp.
Il faut regarder à l'oscillo sur une patte du quartz s'il y a oscillation.
Sinon, la seule façon de s'en sortir, c'est de connecter un générateur (je l'avais réglé à 1Veff, et 1MHz) sur la patte XTAL1 (en pratique, en parallèle sur la capa du quartz).
On peut alors reprogrammer les fuses en oscillateur à quartz.

YMasquel

2503 messages

Expert
Expert

Read post 28-06-2011 10:39

Bonjour à tous,

Une excellente solution peu coûteuse et très simple d'emploi figure en page 65 du numéro hors gabarit (juillet août) de cette année.

Il faut juste préciser que la nappe est équipée de 3 connecteurs reliés respectivement :
- au programmateur;
- au circuit de déblocage;
- à la carte à reprogrammer.
Ce qui n'est pas totalement clairement expliqué dans l'article pour un néophyte.

Amicalement, Yves.

Modifié par YMasquel le 28-06-2011 10:46

Modifié par YMasquel le 28-06-2011 10:47

Totofmex

18 messages

De passage
De passage

Read post 14-07-2011 20:33

Merci pour cette astuce, j’ai pu récupérer mon ATmega16.
Quand au hors gabarit, c’est pour moi une revu incontournable que j’achèterai la semaine prochaine.
A+

Tartiff

1 message

De passage
De passage

Read post 10-11-2011 16:50

Bonjour messieurs
J'ai lu un peu vos échanges cette nuit et me voila donc bien ennuyer .
Je dispose de attiny 2313-20pu . Et j'aimerai les programmer seulement voila plus je lis de documentation et moins je suis sure de la procédure.
J'ai lu sur certain forum, ou blog qu'il fallait programmer les bits fuse en premier lieux . Cette opération si j'ai compris la procédure doit être effectuer sans cristal mais avec l'alimentation pour le cpu .
Une fois les fuse bits programmer le cristal devais être mis en place .
Une fois cela effectuer la programmation avec le .hex pouvais avoir lieu .
D'ailleurs en parlent de hex existe t'il des outils pour le de-compiler?
Je suis sur Linux donc les opérations se ferons en ligne de commande .
Si vous pouviez m'apporter quelques précisions , Je vous en remercie

AttachmentGeigerCounter_v1.0.hex

Totofmex

18 messages

De passage
De passage

Read post 05-12-2011 18:09

Hola,

Un petit conseil pour la prochaine fois, tu devrais ouvrir une nouvelle discussion car la discussion est un peu différente et en plus tu auras surement plus de réponse.
J’imagine que tu veux dire quartz pour “cristal”. Moi je suis sur Windows et j’utilise AVR studio comme IDE et pour la programmation. Il y a donc surement quelles différences sur la méthodologie par rapport à Linux mais cela pourra te donner des pistes.
La programmation ce fait In-Situ c'est-à-dire sur la carte sans dessouder le quartz et si tu as prévu sur ton montage le connecteur pour la programmation. C’est l’avantage car se serait non productif s’il fallait dessouder / ressouder le quartz à chaque programmation.
Pour l’alimentation, en général c’est celui de ton montage car souvent la consommation est trop importante pour utiliser l’alim du programmateur (Sur AVRISP MKII il y a l’option pour sélectionner l’alim entre le montage et programmateur).

Pour info, les commentaires de lpt1com2 étaient pour débloquer un Atmel qui avait une mauvaise programmation des fusibles sur le choix de fréquence suite à une mauvaise manip.

Pour les fusibles, il faut les programmer une fois ou chaque fois que tu changes de configuration (Par exemple, pour protéger ton programme).

Ensuite, c’est simple tu peux programmer ton AVR sans t’occuper des fusibles (Car ils ont été préalablement programmes.)

J’espère que c’est un peu plus clair.

Veuillez vous identifier avant de répondre ou pour vous abonner à cette discussion

Elektor 6/2012 en kiosque

Elektor-Hebdo gratuit !

Mon adresse électronique :

Unités de crédit Elektor

Nos blogs-ateliers