Pages: [1]   Go Down
Author Topic: How to change bootloader for different XTAL frequency  (Read 2187 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,
I am wanting to use Arduino with a lower crystal frequency but this seems to prevent the
board uploading a sketch.

Can someone tell me where the source code is for an MEGA 1280 bootloader for Arduino -
and post how to compile it for a different crystal frequency.

Rob
Logged

Massachusetts, USA
Offline Offline
Tesla Member
***
Karma: 212
Posts: 8967
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Look at boards.txt to see where the bootloader is:
Quote
mega.bootloader.path=atmega
mega.bootloader.file=ATmegaBOOT_168_atmega1280.hex

Then look in hardware/bootloaders/atmega.  You'll find the source file ATmegaBOOT_168.c and the make file Makefile.

In Makefile you will find:
Quote
mega: TARGET = atmega1280
mega: MCU_TARGET = atmega1280
mega: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' -DBAUD_RATE=57600
mega: AVR_FREQ = 16000000L
mega: LDSECTION  = --section-start=.text=0x1F000
mega: $(PROGRAM)_atmega1280.hex

mega_isp: mega
mega_isp: TARGET = atmega1280
mega_isp: MCU_TARGET = atmega1280
mega_isp: HFUSE = DA
mega_isp: LFUSE = FF
mega_isp: EFUSE = F5
mega_isp: isp

Change AVR_FREQ and re-build.

NOTE: Only the values 16000000 and 8000000 are supported by the Arduino core.  If you use any other values the timing functions (millis(), delay(), micros(), and delayMicroseconds()) will not be accurate... and different functions will be off by different amounts.

Have fun.
Logged

Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thanks, found it after a bit of searching. I am yet to work out how to compile with the make file so if you have a
simple way to do this and can let me know if would be much appreciated.

The comments on the crystal frequency are particularly useful although I only need to work at 8MHz for the moment
so not a problem.

Rob
Logged

Massachusetts, USA
Offline Offline
Tesla Member
***
Karma: 212
Posts: 8967
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A quick work-around might be to create a new boards.txt entry to set the 8MHz clock rate and use half the upload baud rate.  The bootloader is built for 57600 baud on a 16MHz clock.  With an 8MHz clock it will run at half speed: 28800 baud.

[/quote]
mega8M.name=Arduino Mega (ATmega1280) at 8MHz

mega8M.upload.protocol=stk500
mega8M.upload.maximum_size=126976
mega8M.upload.speed=28800

mega8M.bootloader.low_fuses=0xFF
mega8M.bootloader.high_fuses=0xDA
mega8M.bootloader.extended_fuses=0xF5
mega8M.bootloader.path=atmega
mega8M.bootloader.file=ATmegaBOOT_168_atmega1280.hex
mega8M.bootloader.unlock_bits=0x3F
mega8M.bootloader.lock_bits=0x0F

mega8M.build.mcu=atmega1280
mega8M.build.f_cpu=8000000L
mega8M.build.core=arduino
[/quote]
Logged

Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Thanks John thats *exactly* the sort of quick fix I like to hear .. much appreciated

Regards
Rob Aspey
Logged

Pages: [1]   Go Up
Jump to: