arduino:atmega328p_arduinos_and_custom_fuse_settings
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
arduino:atmega328p_arduinos_and_custom_fuse_settings [2020/01/04 01:56] – [Burn the bootloader and test] mithat | arduino:atmega328p_arduinos_and_custom_fuse_settings [2020/01/04 02:45] – [Upload with programmer and test] mithat | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== ATmega328P Arduinos and custom fuse settings ====== | ====== ATmega328P Arduinos and custom fuse settings ====== | ||
- | |||
- | <WRAP center round info 60%> | ||
- | Work in progress. | ||
- | </ | ||
Programming your device with the code you want to execute, whether with a bootloader or directly with a programmer, is one layer of programming your device. Another layer is the so-called //fuses// inside an ATmega microcontroller. | Programming your device with the code you want to execute, whether with a bootloader or directly with a programmer, is one layer of programming your device. Another layer is the so-called //fuses// inside an ATmega microcontroller. | ||
Line 127: | Line 123: | ||
===== Case study ===== | ===== Case study ===== | ||
- | In the section, I walk through the process of creating a custom version of a 3.3V/8MHz Pro Mini where the brown-out detection (BOD) threshold is changed from the stock nominal | + | In the section, I walk through the process of creating a custom version of a 3.3V/8MHz Pro Mini where the nominal |
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
Line 149: | Line 145: | ||
^ BODLEVEL2, 1, 0 ^ V< | ^ BODLEVEL2, 1, 0 ^ V< | ||
| 111 | BOD disabled | | 111 | BOD disabled | ||
- | | 110 | 1.8V((The ATmega328P datasheet indicates this is " | + | | 110 | 1.8V((The ATmega328P datasheet indicates this state is " |
| 101 | 2.7V | | | 101 | 2.7V | | ||
| 100 | 4.3V | | | 100 | 4.3V | | ||
Line 157: | Line 153: | ||
Now is a good time to mention that the ATmega328P fuses are //active low//, meaning that a 0 sets (" | Now is a good time to mention that the ATmega328P fuses are //active low//, meaning that a 0 sets (" | ||
- | So, to set the brown-out threshold to 1.8V we want the last three bits of the extended fuse byte to be '' | + | So, to set the brown-out threshold to 1.8V I want the last three bits of the extended fuse byte to be '' |
==== Preparing the new board files ==== | ==== Preparing the new board files ==== | ||
Line 228: | Line 224: | ||
==== Burn the bootloader and test ==== | ==== Burn the bootloader and test ==== | ||
- | Whether you plan to upload your sketches with a USB to serial converter (i.e., using the bootloader) or directly | + | Whether you plan to upload your sketches with a USB to serial converter (i.e., using the bootloader) or directly |
=== Burn it === | === Burn it === | ||
Line 234: | Line 230: | ||
* Create a new project consisting of a simple sketch (e.g. blink.) | * Create a new project consisting of a simple sketch (e.g. blink.) | ||
* Under //Tools > Board// you should see an entry for "Pro Mini 3.3V/8Mhz, 1.8V BOD, ATmega328P" | * Under //Tools > Board// you should see an entry for "Pro Mini 3.3V/8Mhz, 1.8V BOD, ATmega328P" | ||
- | * As a sanity check, Verify/ | + | * As a sanity check, Verify/ |
* Hook up a programmer to a 3.3V/8MHz Pro Mini and select the programmer you're using under //Tools > | * Hook up a programmer to a 3.3V/8MHz Pro Mini and select the programmer you're using under //Tools > | ||
* Plug the programmer into your computer | * Plug the programmer into your computer | ||
Line 252: | Line 248: | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
- | If you reduce the BOD threshold or turn off BOD entirely, don't run programs uploaded by the bootloader at low voltages. See [[arduino: | + | If you reduce the BOD threshold or turn off BOD entirely, don't run programs uploaded by the bootloader at low voltages. To run a sketch at low voltage you should upload your sketch directly using a programmer. See [[arduino: |
</ | </ | ||
- | To run a sketch at low voltage you should upload your sketch directly using a programmer. | ||
==== Upload with programmer and test ==== | ==== Upload with programmer and test ==== | ||
- | After burning the bootloader to set the fuses, hook up your programmer. Be sure you have set both the board and programmer to the correct values under //Tools//. Then upload your simple test sketch with //Sketch > Upload Using Programmer// | + | After burning the bootloader to set the fuses, |
Follow the instructions above to read the fuse settings. You should see: | Follow the instructions above to read the fuse settings. You should see: | ||
Line 273: | Line 268: | ||
</ | </ | ||
- | The extended fuse should | + | Confirm that the extended fuse is still '' |
- | You can now connect the Pro Mini to a variable supply to see whether it works as expected below 2.7V. It may not work all the way down to 1.8V though, but because you're not using a bootloader, the chances | + | You can now connect the Pro Mini to a variable supply to see whether it works as expected below 2.7V. It may not work all the way down to 1.8V though, but because you're not using a bootloader, |
arduino/atmega328p_arduinos_and_custom_fuse_settings.txt · Last modified: 2021/04/22 01:37 by mithat