[RESOLU] Difficultés à charger du code dans une puce Atmel 328P neuve

Je me suis acheté quelques A328P neufs à prix pas cher chez letmeknow. Il y a bien le logo Atmel dessus, je ne sais pas si cela prouve d'une façon quelconque que ce n'est pas une contrefaçon (?). Comme programmateur j'utilise une carte UNO clone de chez Selectronic. Dans l'IDE j'ai choisi la carte "Arduino UNO" et laissé le programmateur "AVR ISP". Malheureusement lorsque j'essaie de charger un code, aussi simple soit-il, j'ai le message suivant (qui se repête à l'identique jusqu'à 10) :

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00

J'ai aussi tenté de graver le bootloader (séquence d'initialisation) et j'obtiens le même message d'erreur. Ai-je manqué une étape ?!

Bonjour,

Pour programmateur c'est 'Arduino as ISP'

merci kamill, en fait les puces que j'avais acheté par le passé avaient déjà le bootloader dessus... visiblement il faut une puce qui a le boootloader déjà dessus pour pouvoir en programmer une qui ne l'a pas (?) Je suis tombé sur ce tuto, mais il fait référence à graver le bootloader "autonome" (avec l'horloge interne à 8MHz), j'ose prétendre que le montage est le même pour graver le 16MHz ou faut-il faire tout le montage avec quartz pour que ca grave correctement (?)

Moi j'ai déjà fait ça en suivant ce tuto.

Je l’ai fait une fois pour voir( franchement c’est casse pied et depuis j’ai préfèré des nano toutes équipées à 3€ :grin: )
J’avais approvisionné un vrai programmeur UsbAsp sur ebay (environ 4€) et utilisé le bus ISP.

Avrdude et le programmeur te permettent de lire les fuses. Si la puce est vierge il faut les configurer.
Sortie usine l’oscillateur interne à 8 MHz et le diviseur par 8 sont activés → le micro tourne à 1 MHz sur l’oscillateur RC.
Il faut changer les fuses pour utiliser l’oscillateur externe (le quartz) et mettre le diviseur à 1.

Pour savoir comment choisir les bonnes valeurs il y a bien sûr la datasheet ou ce site :
http://www.engbedded.com/fusecalc

Ensuite si tu veux utiliser la programmation par USB avec une interface USB/UART il faut un bootloader mais uniquement dans ce cas.
Si tu veux / ou si tu peux / continuer à programmer par le bus ISP ( tu bloques les sorties SPI pendant la programmation mais tu libère Tx et Rx : c’est un choix) tu peux le faire sans bootloader qui est inutile dans ce cas. Tu gagnes quelques octets : oh pas grand chose 500 octets environ.

Merci, c'est bon, j'ai récupéré une des puces d'un de mes montages précédents (thermostat) et je l'ai programmée temporairement comme "ArduinoISP" et à partir de là j'ai pu charger le bootloader sur mes 8 nouvelles A328P en suivant le montage du tuto de kamill (avec le quartz dessus)... En fait au départ je croyais qu'il suffisait de mettre la puce dans la carte arduino et "graver le bootloader" dessus mais finalement ce n'était pas aussi simple quoique ca demeurre accessible quand même ! Désolé pour le dérangement... :sweat_smile:

Comme 68tjs, pour quelques euros, j'ai investi dans un programmateur usbasp (il faut aussi l'adaptateur 8/6 pins). C'est très pratique tu peux reprogrammer l'atmega328 sur la carte uno ou directement sur ton montage pour peu que tu ais prévu le connecteur ISP.

j'en prends bonne note, c'est vrai que ca a l'air pratique pour éviter d'avoir à enlever la puce à chaque fois que je veux la mettre à jour... :)