Mettre un atmega328 en arduino

Bonsoir,

Les atmega présents sur mes cartes arduino ont été placées sur d'autres cartes. J'ai donc acheté de nouveaux atmega328, évidemment je n'arrive plus à programmer.
Je sais qu'il faut faire quelque chose avec le bootlader et les fuses mais je ne comprends pas grand chose.
Est-ce que quelqu'un sait m'aider?

Merci d'avance,

Jérôme

Bonsoir,

je ne vais pas beaucoup faire avancer ton shmilblik mais sais-tu que tu pouvais acheter des ATMEGA 328 avec le bootloader ARDUINO implanté dessus?

Bonjour,

je trouve moi aussi cela très compliqué ces histoires de fuses, mais je peux t'orienter vers ces explications:

http://www.robotix.fr/forum/sujet-12420-1-arduino-programmer-une-atmel.html

Moi personnellement j'ai fait comme ojal, mais si tu as déja acheté tes ATmega je comprends que tu veuilles les utiliser.

Trouver des arduinos avec bootloader devient de plus en plus difficile ... et niveau prix on trouve de tout (avec ou sans bootloader d'ailleurs). Tu peux trouver des programmateur ISP sur ebay pour 10 €, si tu te mets à faire du standalone, l'investissement devient très vite rentable :wink:

Merci pour vos réponses,

J' ai été voir le lien d 'Alexis mais ça m' a l'air bien compliqué.
B@tto, qu'entends-tu par du stand alone?

Sinon, oui je vais chercher après un programmateur isp mais j'avais en tête que c' était dans les 100 euros. Ils permettent de changer fuses et bootlader?

Je sais pas trop ce que c'est que les fuses, mais je viens de bootloader des ATmega328P avec AVRISPmkII c'est tout simplement génial et simplissime :

le prix du programmateur est seulement de 30e
il suffit de brancher les pates ICSP de sa plaque arduino sur le programmateur, alimenter expérieurement l arduino (genre pile 12V) et brancher le prog sur l'ordinateur en USB. On choisis dans le programme arduino burn bootloader et AVRISPmkII

30sec après.... c est fait et tu as une puce prète a être reprogrammé à l infini ^^

Standalone : http://www.flickr.com/photos/whaleforset/3197918087/

Oui c'est bien ça que je veux faire. Est- ce qu'avec ceci je peux mettre le bootlader arduino et changer les fuses?

http://be.farnell.com/atmel/atavrisp2/programmer-avr-mcu-isp/dp/1135517

J'ai commandé le mien, j'attend de le recevoir, mais d'après ce que j'ai compris : bootloader c'est sûr, et fuses aussi normalement. Si quelqu'un d'autre peut comfirmer ? Jean-françois ? Fdufnews ? :slight_smile:

Oui, ispMKII nickel....

Tu utilises un de ces deux logiciels :

http://www11.ocn.ne.jp/~maracas/avrfuse.html

ou

http://www.vonnieda.org/software/avrfuses

Et les USBtinyISP ?

J'en ai un, mais je n'arrivais pas à le faire fonctionner (pensant que c'était parce que j'étais sur Mac), donc je me suis rabattu sur l'ispMKII... et je ne regrette franchement pas XD

D' accord, mais sinon les fuses qui sont sont sur l' atmega simple ( pas encore configuré arduino ) sont différents de ceux de l'atmega arduino?
Si oui que faut-il changer?

C'est la même chose.

Regarde les liens que j'ai mis.

Ok,

J'ai bien été sur le premier des deux liens que tu m'as envoyé. J'ai donc bien installé avrfuse 1.0.2. Là dans device j'ai bien entendu sélectionné atmega328P mais après je suis perdu, sais tu me dire ce que je dois entrer comme valeurs? Est-ce que je peux me débrouiller avec en laissant mon atmega sur mon arduino, je veux dire sans passer par le programmateur isp avr?

Merci d'avance

Un des deux (ou les deux ?) permettent d'utiliser l?arduino comme programmateur, mais je n'ai jamais fait d'essai comme ça.

D' accord je vais faire le test, de toute façon ça ne changera rien à l'arduino. Et donc comment je peux savoir qu'est ce que je dois mettre comme valeurs?

Fais attention car certains Fuses te permettent de verrouiller complétement le processeur.

je ne me souviens plus très bien, ça doit bien faire une année que j'ai fait ça la dernière fois, mais une des deux appli à une liste dans laquelle tu choisis, il y a les paramètre de fréquence, si tu veux que ton bootloader se mettent en fonction à la mise sous tension ou quelques secondes après..... il faut fouiller dans les menus.

Bonjour,

Même souci pour moi avec un clone d'usbtinyISP, du coup j'ai fait un simple programmateur comme suggéré ici : http://arduino.cc/en/Tutorial/ArduinoISP
et ça marche du tonnerre
On peux programmer facilement des bootloaders avec le GUI arduino, en faisant comme expliqué dans le lien précédent, les fusibles sont programmés automatiquement avec cette méthode

On peux aussi utiliser avrdude en ligne de commande une fois qu'on est connecté correctement pour lire ou écrire les fusibles
Par contre effectivement, il est déconseillé de faire n'importe quoi (genre utiliser l'argument -F, se planter dans les valeurs de fusible,...) sous peine de bricker son composant...

Par exemple la ligne suivante permet de lire les fusibles et d'obtenir des infos (Arduino utilisé comme programmateur, code arduinoIsp à l'intérieur)

avrdude -c arduino -p m328p -P com23 -b 19200 -v

va nous répondre

avrdude: Version 5.10, compiled on Jan 19 2010 at 10:45:23
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\WinAVR-20100110\bin\avrdude.conf"


         Using Port                    : com23
         Using Programmer              : arduino
         Overriding Baud Rate          : 19200
         AVR Part                      : ATMEGA328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page
      Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max W   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65     5     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0	 0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0 	 0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.04s

avrdude: Device signature = 0x1e950f
avrdude: safemode: lfuse reads as FF
avrdude: safemode: hfuse reads as D6
avrdude: safemode: efuse reads as 5
avrdude: current erase-rewrite cycle count is 1325470774 (if being tracked)

avrdude: safemode: lfuse reads as FF
avrdude: safemode: hfuse reads as D6
avrdude: safemode: efuse reads as 5
avrdude: safemode: Fuses OK

avrdude done.  Thank you.

Beaucoup d'explication sur les fusibles AVR sont dispos ici :
http://www.atmicroprog.com/cours/atmega/fuses.php
ou là
http://www.ladyada.net/learn/avr/fuses.html
et là

Ici des infos sur l'utilisation d'AVRDude
http://www.ladyada.net/learn/avr/avrdude.html

j'ai fait quelques essais et :

Sur un chip ATmega328P vierge les fusibles sont placés à :
LFUSE : 0x62
HFUSE : 0xD9
EFUSE : 0x07

Sur un arduino Uno "out of the box" on à :
LFUSE : 0xFF
HFUSE : 0xD6
EFUSE : 0x05

Sur un chip Atmega après utilisation de Burn Bootloader (with arduino as isp) je lis :
LFUSE : 0xFF
HFUSE : 0xDE
EFUSE : 0x05

Donc différence sur le Hfuse, mais mineure puisqu'elle ne concerne que l'écrasement (ou non) de l'EEPROM pendant l'effacement du chip
(voir AVR® Fuse Calculator – The Engbedded Blog pour le calcul des fusibles)

Bon courage,

Lionel

Merci Snootlab pour tes liens et tes relevés de fuses. C'est exactement ce que je cherchais XD