AVRdude, USBasp... Soucis incompréhensible

Salut à tous,

Je rencontre un soucis incompréhensible avec AVRdude (ou l'IDE arduino), USBasp et une puce Atmega328p.

Je m'explique. Vu que je ne me sortais pas du soucis sur un circuit complexe, j'ai isolé une puce atmega328p avec le minimum (une résistance et un résonateur) :

Premier soucis

Je souhaite uploader un bootloader arduino sur nouvelle puce vierge. Dés que je tente la moindre opération sur AVRdude, j'ai le droit à :

avrdude.exe: error: programm enable: target doesn't answer. 1
vrdude.exe: initialization failed, rc=-1

Ma première réaction a été de vérifier la câblage mais tout semble OK tant au niveau du circuit que du programmeur USBasp (qui est un clone version Aliexpress fabriqué par Baite). Bref, je tente avec d'autres puces vierge, même résultat.

Second soucis

J'en arrive à suspecter le programmateur et ou mon câblage. Je récupère donc une puce (fonctionnelle) sur une arduino UNO. Et là après avoir fait une simple détection du MCU, j'obtiens :

Detected 1e950f = ATmega328P

Bien ! Oui mais non car toute opération suivante (que ce soit à nouveau un detect, un read fuse, un programm) me renvoi cette fois-ci :

Unknown signature 000102

Ou

avrdude.exe: Device signature = 0x000102
avrdude.exe: Expected signature for ATmega328P is 1E 95 0F

Là je n'y comprends plus rien. Du coup je débranche la prise USB, je la remets et là encore seule la première opération passe.

Donc pour résumer :

Sur une puce vierge, rien ne fonctionne.
Sur une puce déjà bootloader, seule la première opération passe.

Une idée ?? Je n'y comprends rien.

Merci

Jérôme

Une idée pas pour le moment mais une proposition oui.

Dans la datasheet du micro 328 il y a la liste des signatures.
As tu vérifié que la signature lue appartient bien à la liste des signatures indiquées par ATMEL ?

Non mais vu qu'il donne la bonne signature par moment 1e950f, contre 000102 quand ça ne passe pas je doute...

J'avais eu la même chose à cause de la vitesse de programmation.
Les fusibles d'un nouvel ATmega328P ne sont pas paramétrés pour accepter un téléversement rapide, de plus il ne sera pas paramétré non plus pour utiliser un quartz externe (16mhz) comme tu as fait dans ton montage.

Tu peux essayer la commande que j'ai écris quand je reçois un ATmega328P tout neuf:
(Linux)

avrdude -P /dev/ttyACM0 -c usbasp -B 10 -p m328p -U lfuse:w:0xff:m -U hfuse:w:0xdf:m -U efuse:w:0x07:m -U lock:w:0x3f:m

(Windows)

avrdude -P /dev/COM1 -c usbasp -B 10 -p m328p -U lfuse:w:0xff:m -U hfuse:w:0xdf:m -U efuse:w:0x07:m -U lock:w:0x3f:m

-B 10 c'est pour communiquer avec l'ATmega328P en vitesse lente (je ne sais plus combien ça fait de baud/s).