Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Bootloader - 1 e 8 MHz
[ATMega328P]
Contedo
1. Apresentao ............................................................................................................................ 3
2. Materiais utilizados .................................................................................................................... 3
3. Utilizando o AVRDude ............................................................................................................... 3
4. Entendendo os FUSE Bits ......................................................................................................... 9
4.1. Low Byte Fuses (LFUSE) ....................................................................................................... 9
4.2. High Byte Fuses (HFUSE) ................................................................................................... 10
4.3. Extended Fuse Bits (EFUSE) ............................................................................................... 11
5. Calculando os FUSE Bits ........................................................................................................ 12
5.1. Para 1 MHz .......................................................................................................................... 12
5.2. Para 8 MHz .......................................................................................................................... 12
6. Configurando uma placa Arduino UNO ................................................................................... 13
7. Gravando os valores de FUSE Bits via AVRDude .................................................................. 14
7.1. Para 1 MHz .......................................................................................................................... 14
7.2. Para 8 MHz .......................................................................................................................... 14
8. Lendo os valores de FUSE Bits via AVRDude ........................................................................ 15
9. Desenvolvendo nossos bootloaders ........................................................................................ 16
9.1. Alterando o arquivo Makefile - 1 MHz bootloader ................................................................ 17
9.2. Alterando o arquivo Makefile - 8 MHz bootloader ................................................................ 18
9.3. Gerando nossos bootloaders ............................................................................................... 19
9.3.1. Para 1 MHz ....................................................................................................................... 19
9.3.2. Para 8 MHz ....................................................................................................................... 20
9.4. Alterando o arquivo "Boards.txt" .......................................................................................... 22
10. Gravando nosso bootloader. ................................................................................................ 24
11. Gravando um programa em nosso novo Arduino................................................................. 27
12. Bibliografia ........................................................................................................................... 28
13. Crditos ................................................................................................................................ 28
2. Materiais utilizados
1x Placa Arduino UNO Rev 3
1x Microcontrolador ATMega328P-PU
1x Protoboard
1x Cristal 16 MHz
2x Capacitores Cermicos 22pf
1x Resistor 10K
Cabos de conexo
Arduino IDE 1.0.6
Windows 8 x64
3. Utilizando o AVRDude
O AVRDude um software que utilizamos para ler e atualizar a memria flash e EEPROM
dos microcontroladores Atmel AVR, incluindo as variveis de controle de clock, denominadas
FUSE BITS.
O download do AVRDude pode ser feito no site AVRDude. A verso que utilizaremos ser
a 6.2. Aps realizar o download, coloque o executvel do AVRDude em uma pasta fcil de ser
acessada via prompt de comando. Aqui colocamos em "C:\Temp\AVRDude 6.2".
LFUSE
o Bit 7...0: 0b01100010
o Bit 7...0: 0x62
HFUSE
o Bit 7...0: 0b11011001
o Bit 7...0: 0xD9
EFUSE
o Bit 7...0: 0b00000110
o Bit 7...0: 0x06
LFUSE
o Bit 7...0: 0b11100010
o Bit 7...0: 0xE2
HFUSE
o Bit 7...0: 0b11011001
o Bit 7...0: 0xD9
EFUSE
o Bit 7...0: 0b00000110
o Bit 7...0: 0x06
Nota: Em nosso exemplo, temos a configurao dos FUSE Bits para a frequncia de 1 MHz.
"...\Arduino 1.0.6\hardware\arduino\bootloaders\optiboot\"
Podemos ver conforme a imagem abaixo, alguns arquivos na pasta o Optiboot. Iremos
utilizar em um primeiro momento, o arquivo "Makefile".
ATMega328P_1MHz_isp: atmega328
ATMega328P_1MHz_isp: TARGET = atmega328
ATMega328P_1MHz_isp: MCU_TARGET = atmega328p
ATMega328P_1MHz_isp: HFUSE = D9
ATMega328P_1MHz_isp: LFUSE = 62
ATMega328P_1MHz_isp: EFUSE = 06
ATMega328P_1MHz_isp: isp
Nota: Os valores dos Fuse Bits, devem ser idnticos aos calculados anteriormente, ou ao
estabelecido por cada usurio.
ATMega328P_8MHz_isp: atmega328_pro8
ATMega328P_8MHz_isp: TARGET = atmega328_pro_8MHz
ATMega328P_8MHz_isp: MCU_TARGET = atmega328p
ATMega328P_8MHz_isp: HFUSE = D9
ATMega328P_8MHz_isp: LFUSE = E2
ATMega328P_8MHz_isp: EFUSE = 06
ATMega328P_8MHz_isp: isp
Nota: Os valores dos Fuse Bits, devem ser idnticos aos calculados anteriormente, ou ao
estabelecido por cada usurio.
Depois de executar o arquivo "omake.bat", nosso bootloader ser criado na prpria pasta,
com dois arquivos:
"optiboot_ATMega328P_1MHz.hex"
"optiboot_ATMega328P_1MHz.lst"
Depois de executar o arquivo "omake.bat", nosso bootloader ser criado na prpria pasta,
com dois arquivos:
"optiboot_ATMega328P_8MHz.hex"
"optiboot_ATMega328P_8MHz.lst"
ATMega328P_1MHz.upload.protocol=arduino
ATMega328P_1MHz.upload.maximum_size=30720
ATMega328P_1MHz.upload.speed=9600
ATMega328P_1MHz.bootloader.low_fuses=0x62
ATMega328P_1MHz.bootloader.high_fuses=0xD9
ATMega328P_1MHz.bootloader.extended_fuses=0x06
ATMega328P_1MHz.bootloader.path=optiboot
ATMega328P_1MHz.bootloader.file=optiboot_ATMega328P_1MHz.hex
ATMega328P_1MHz.bootloader.unlock_bits=0x3F
ATMega328P_1MHz.bootloader.lock_bits=0x0F
ATMega328P_1MHz.build.mcu=atmega328p
ATMega328P_1MHz.build.f_cpu=1000000L
ATMega328P_1MHz.build.core=arduino
ATMega328P_1MHz.build.variant=standard
Para nosso bootloader de 8 MHz, devemos adicionar as seguintes linhas ao final do arquivo:
ATMega328P_8MHz.upload.protocol=arduino
ATMega328P_8MHz.upload.maximum_size=32000
ATMega328P_8MHz.upload.speed=9600
ATMega328P_8MHz.bootloader.low_fuses=0xE2
ATMega328P_8MHz.bootloader.high_fuses=0xD9
ATMega328P_8MHz.bootloader.extended_fuses=0x06
ATMega328P_8MHz.bootloader.path=optiboot
ATMega328P_8MHz.bootloader.file=optiboot_ATMega328P_8MHz.hex
ATMega328P_8MHz.bootloader.unlock_bits=0x3F
ATMega328P_8MHz.bootloader.lock_bits=0x0F
ATMega328P_8MHz.build.mcu=atmega328p
ATMega328P_8MHz.build.f_cpu=8000000L
ATMega328P_8MHz.build.core=arduino
ATMega328P_8MHz.build.variant=standard
Nota: Os valores dos FUSE Bits, devem ser idnticos aos calculados anteriormente, ou ao
estabelecido por cada usurio.
Nota: Nos testes realizados no laboratrio, a gravao dos cdigos ocorreram apenas na primeira
vez logo aps gravar o bootloader, sendo necessrio regravar o bootloader toda vez que um novo
cdigo precisa ser testado/gravado. Ainda estamos trabalhando para entender o motivo :(
"How to change fuse bits of AVR Atmega328p - 8bit microcontroller using Arduino" -
Instructables - Link
"How to setup an Arduino @ 1.8V & 1MHz using internal resonator" - Aurora Project - Link
13. Crditos
Este material didtico foi desenvolvido por: Osvaldo T. Neto, e disponibilizado em
http://www.ft.unicamp.br/lapet para quaisquer pessoas interessadas. Qualquer disponibilizao
exceto a oficial no de responsabilidade do autor. Todo o seu contedo livre, e qualquer
possvel erro, nos informe via email: lapet@ft.unicamp.br.