Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
howtos:bootloader [2013/11/24 22:36] – phyks | howtos:bootloader [2022/05/05 19:51] (Version actuelle) – hackens | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | Bootloaders pour ATmega8 | + | < |
- | ==== | + | Bootloaders pour ATmega8 |
+ | ===================================== | ||
+ | |||
+ | Pour le projet [[projets: | ||
+ | |||
+ | Du coup, voici une petite compil' | ||
+ | |||
+ | Tout d' | ||
+ | |||
+ | ## Gravure de bootloader | ||
+ | |||
+ | On grave le bootloader à l'aide d'un autre ATmega qu'on utilise comme programmateur et qui communique avec l' | ||
+ | |||
+ | {{ http:// | ||
+ | |||
+ | |||
+ | Il faut envoyer le sketch ArduinoISP (trouvables dans les exemples) sur l' | ||
+ | |||
+ | |||
+ | ## Envoi de programmes | ||
+ | |||
+ | On envoie ensuite directement le programme sur l' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ## Notes diverses | ||
+ | |||
+ | * Testé avec un Arduino Uno comme programmateur, | ||
+ | * Si ça ne marche pas, vérifier que l' | ||
+ | * Hyper important ! Sur le montage pour graver le bootloader, la résistance au reset est en pull-up (connectée au 5V) et non en pull-down (connectée au GND). J'ai perdu 1h là-dessus... | ||
+ | * Testé et approuvé avec la dernière version du soft Arduino et du sketch ArduinoISP. Pas besoin d'une vieille version a priori. | ||
+ | * Si ça ne marche toujours pas, bien vérifier le montage, encore et encore :) | ||
+ | * Mieux vaut utiliser le soft Arduino que la ligne de commande avec avrdude. En effet, Arduino gère tout seul les fuse bits (utilisation d'un cristal externe, temps de démarrage, protection du bootloader) et c'est donc moins prise de tête. Sinon, pour les calculer, c'est [par ici](http:// | ||
+ | * Lorsque le bootloader est gravé, pour envoyer des programmes facilement, il faut qu'il puisse reset sur serial (sinon, il faut faire un reset manuel à chaque fois). Pour ça, il faut mettre une capacité et une résistance sur le pin de reset (cf schematics des Arduino). | ||
+ | |||
+ | ### Modification des fuse bits avec Arduino | ||
+ | |||
+ | Il peut être utile de modifier les fuse bits, tout en gravant la séquence d' | ||
+ | |||
+ | Pour ce faire, le plus simple est d' | ||
+ | |||
+ | Exemple de lignes à ajouter : | ||
+ | ``` | ||
+ | ############################################################## | ||
+ | # Arduino Uno with custom fuse bits to disable brown out detection | ||
+ | |||
+ | uno_no_bo.name=Arduino Uno without brown out | ||
+ | uno_no_bo.upload.protocol=arduino | ||
+ | uno_no_bo.upload.maximum_size=32256 | ||
+ | uno_no_bo.upload.speed=115200 | ||
+ | uno_no_bo.bootloader.low_fuses=0xff | ||
+ | uno_no_bo.bootloader.high_fuses=0xde | ||
+ | uno_no_bo.bootloader.extended_fuses=0x07 | ||
+ | uno_no_bo.bootloader.path=optiboot | ||
+ | uno_no_bo.bootloader.file=optiboot_atmega328.hex | ||
+ | uno_no_bo.bootloader.unlock_bits=0x3F | ||
+ | uno_no_bo.bootloader.lock_bits=0x0F | ||
+ | uno_no_bo.build.mcu=atmega328p | ||
+ | uno_no_bo.build.f_cpu=16000000L | ||
+ | uno_no_bo.build.core=arduino | ||
+ | uno_no_bo.build.variant=standard | ||
+ | |||
+ | |||
+ | ############################################################## | ||
+ | # ATmega328p on a breadboard with 8 MHz internal clock | ||
+ | |||
+ | atmega328bb.name=ATmega328 on a breadboard (8 MHz internal clock) | ||
+ | |||
+ | atmega328bb.upload.protocol=stk500 | ||
+ | atmega328bb.upload.maximum_size=30720 | ||
+ | atmega328bb.upload.speed=57600 | ||
+ | |||
+ | atmega328bb.bootloader.low_fuses=0xE2 | ||
+ | atmega328bb.bootloader.high_fuses=0xDA | ||
+ | atmega328bb.bootloader.extended_fuses=0x05 | ||
+ | atmega328bb.bootloader.path=arduino: | ||
+ | atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex | ||
+ | atmega328bb.bootloader.unlock_bits=0x3F | ||
+ | atmega328bb.bootloader.lock_bits=0x0F | ||
+ | |||
+ | atmega328bb.build.mcu=atmega328p | ||
+ | atmega328bb.build.f_cpu=8000000L | ||
+ | atmega328bb.build.core=arduino: | ||
+ | atmega328bb.build.variant=arduino: | ||
+ | ``` | ||
+ | |||
+ | Il faut aussi faire attention à ce que les bootloaders soient disponibles dans le même dossier (par exemple en créant un lien symbolique de `~/ | ||
+ | |||
+ | Les nouvelles cartes, ajoutées de cette manière, apparaîtront alors dans la liste des cartes utilisables dans Arduino. | ||
+ | |||
+ | Cependant, à l' |