Arduino Micro on 3V3

Hi all,

I'm trying to modify my Arduino Micro to work with 3V3 only. I did some component changes, and everything seems to work. However, I tried to change the bootloader so the ATmega32u4 is using its internal RC oscillator at 8 MHz. Late on I might order a 8 MHz crystal so make sure I have a stable clock. But for know I want to try it with the internal OSC.

Things I changed are:

In the makefile I changed F_CPU from 16000000L to 8000000L

In the Catherina.c file I change the timeout from 8000 to 3000.

#define TIMEOUT_PERIOD  3000

I also made a new instance in the boards.txt file: (changes are indicated) I calculated new fuse value's using the http://www.engbedded.com/fusecalc/ website.

micro_3V3_8MHZ.name=Arduino Micro 3V3
micro_3V3_8MHZ.vid.0=0x2341
micro_3V3_8MHZ.pid.0=0x0037
micro_3V3_8MHZ.vid.1=0x2341
micro_3V3_8MHZ.pid.1=0x8037
micro_3V3_8MHZ.vid.2=0x2A03
micro_3V3_8MHZ.pid.2=0x0037
micro_3V3_8MHZ.vid.3=0x2A03
micro_3V3_8MHZ.pid.3=0x8037

micro_3V3_8MHZ.vid.0x2A03.warning=Uncertified

micro_3V3_8MHZ.upload.tool=avrdude
micro_3V3_8MHZ.upload.protocol=avr109
micro_3V3_8MHZ.upload.maximum_size=28672
micro_3V3_8MHZ.upload.maximum_data_size=2560
micro_3V3_8MHZ.upload.speed=38400                      //Change to 38400 to ensure good upload
micro_3V3_8MHZ.upload.disable_flushing=true
micro_3V3_8MHZ.upload.use_1200bps_touch=true
micro_3V3_8MHZ.upload.wait_for_upload_port=true

micro_3V3_8MHZ.bootloader.tool=avrdude
micro_3V3_8MHZ.bootloader.low_fuses=0xe2    // Fuse change from ff to e2
micro_3V3_8MHZ.bootloader.high_fuses=0xd8   
micro_3V3_8MHZ.bootloader.extended_fuses=0xcb  // The website said fb, but then I get an validation error
micro_3V3_8MHZ.bootloader.file=caterina/Caterina-Micro_3V3_8MHZ.hex  //new bootloader .hex file
micro_3V3_8MHZ.bootloader.unlock_bits=0x3F
micro_3V3_8MHZ.bootloader.lock_bits=0x2F

micro_3V3_8MHZ.build.mcu=atmega32u4
micro_3V3_8MHZ.build.f_cpu=8000000L    //Clock freq changed to 8 MHz
micro_3V3_8MHZ.build.vid=0x2341
micro_3V3_8MHZ.build.pid=0x8037
micro_3V3_8MHZ.build.usb_product="Arduino Micro"
micro_3V3_8MHZ.build.board=AVR_MICRO
micro_3V3_8MHZ.build.core=arduino
micro_3V3_8MHZ.build.variant=micro
micro_3V3_8MHZ.build.extra_flags={build.usb_flags}

Then I build the .hex file by executing make clean and make all.

With my adruino uno I tried to upload the new bootloader. After a while I get the following error. No Idee what it means.

avrdude: verification error, first mismatch at byte 0x0180
         0xff != 0x00

Any idea why it failed?

I think the bootloader is compiled to run at 16mhz

You will need to get a 8mhz version and reflash it

Also, AFIK there can be issues with timings on non XTAL boards

This whole concept had been posted about before.

Try searching..

Also you can buy 3.3 v versions, so there is no need to convert a board yourself, unless its a technical exercise

@rogerClark: That is what I did. I rebuild the bootloader. Then tried to program it in my MCU. But it failed. Refer to the error in my previous post.
It should be posible since Sparkfun sells micro pro board on 3V3. There the MCU is working on 8 MHz instead of 16 MHz.
I’m trying to get the same thing, but there is something going wrong. I would like to know what.