Ciao a tutti,
Ho comperato a buon prezzo alcuni Atmega328-pu (versione NON picopower) che vorrei utilizzare in standalone ad 8 MHz con l'oscillatore interno e caricare tramite il bootloader.
[Ho aggiornato WinAvr all'ultima versione (WinAVR-20100110) sovrascrivendo la cartella C:\arduino-1.0.1\hardware\tools\avr] (passaggio opzionale)
Ho modificato C:\arduino-1.0.1\hardware\tools\avr\etc\avrdude.conf aggiungendo una sezione ATmega328 copiata da ATmega328P e modificando id, desc e signature
#------------------------------------------------------------
# ATmega328
#------------------------------------------------------------
part
id = "m328";
desc = "ATMEGA328";
signature = 0x1e 0x95 0x14;
#-- altre voci uguali..
Ho creato in C:\arduino-1.0.1\hardware\arduino\boards.txt la voce:
mega3208pu.name=ATmega328-PU 8 MHz internal (w/Arduino bootloader)
mega3208pu.upload.protocol=arduino
mega3208pu.upload.maximum_size=32256
mega3208pu.upload.speed=19200 # IL PROBLEMA SARA' PROPRIO QUI, IL VALORE CORRETTO E' 57600
mega3208pu.bootloader.low_fuses=0xe2
mega3208pu.bootloader.high_fuses=0xde
mega3208pu.bootloader.extended_fuses=0x07
mega3208pu.bootloader.path=optiboot
mega3208pu.bootloader.file=optiboot_atmega328.hex
mega3208pu.bootloader.unlock_bits=0x3F
mega3208pu.bootloader.lock_bits=0x0F
mega3208pu.build.mcu=atmega328 # BISOGNERA' INSERIRE atmega328p PER IL BOOTLOADER
mega3208pu.build.f_cpu=8000000L
mega3208pu.build.core=arduino
mega3208pu.build.variant=standard
Ho scritto il bootloader optiboot fornito con Arduino Ide 1.01 sul micro 328-PU tramite un Arduino Uno, l'operazione è andata a buon fine.
Ho caricato sempre tramite Arduino Uno ISP uno sketch, tutto bene.
Ho provato a caricare uno sketch tramite il bootloader utilizzando un convertitore USB->UART ma ricevo:
avrdude: Version 5.11, compiled on Sep 2 2011 at 19:38:36
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "C:\arduino-1.0.1\hardware/tools/avr/etc/avrdude.conf"
Using Port : \\.\COM14
Using Programmer : arduino
Overriding Baud Rate : 19200
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Recv:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude done. Thank you.
Ho provato anche con il bootloader "ATmegaBOOT_168_pro_8MHz.hex" ma non ho risolto nulla..
mi potete aiutare a fare funzionare il bootloader?
[SOLUZIONE]
Non ci posso ancora credere ma...
Il problema era nella velocità! Usando 57600 invece di 19200 o 115200 bps il bootloader funziona ANCHE a 8 MHz.
Questa cosa inspiegabile e non documentata da nessuna parte mi è costata cara... ma alla fine ho risolto!
Come note finali volevo aggiungere che per fare l'upload degli sketch è necessario impostare come mcu
mega3208pu.build.mcu=atmega328p
Questo farà funzionare il bootloader (e non richiede la versione aggiornata di WinAvr) ma potrebbe portare a malfunzionamenti in istruzioni non supportate dal 328-PU che invece il 328P-PU supporta, è consigliato provare a fondo i propri programmi.
Impostando su atmega328 la mcu il bootloader sembra non rispondere, per risolvere probabilmente bisognerebbe ricompilare il bootloader.
Ciao e grazie