arduino:arduino_without_a_bootloader
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:arduino_without_a_bootloader [2020/01/04 02:21] – [Case 3: Pro Mini 3.3V/8MHz with USBtinyISP] mithat | arduino:arduino_without_a_bootloader [2021/04/22 00:50] – [Hardware] mithat | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Arduino without a bootloader ====== | ====== Arduino without a bootloader ====== | ||
- | |||
- | <WRAP center round important 60%> | ||
- | This is a work in progress. Not all cases described below have been vetted yet. | ||
- | </ | ||
- | |||
===== Blessed is the bootloader ===== | ===== Blessed is the bootloader ===== | ||
One of the things that simplifies Arduino development is its [[https:// | One of the things that simplifies Arduino development is its [[https:// | ||
- | In the case of the Arduino, the bootloader | + | In the case of the Arduino, the bootloader |
- | But a bootloader isn't the only way to program the microcontrollers on these boards. Instead, you can use an external programming device (a.k.a, // | + | But a bootloader isn't the only way to program the microcontrollers on these boards. Instead, you can use an external programming device (a.k.a, // |
- | So while it's entirely possible to program many Arduino boards without using a bootloader, you would have to tie up one USB port on your computer for programming | + | So while it's entirely possible to program many Arduino boards without using a bootloader, you would have to tie up one USB port on your computer for the programmer |
===== Cursed is the bootloader ===== | ===== Cursed is the bootloader ===== | ||
- | There are times when you might want to bypass the convenience a bootloader offers | + | In spite of the convenience a bootloader offers, there are times when you might want to forego this and program |
- | Another reason to not use a bootloader is that your project' | + | Another reason to not use a bootloader is that the startup time is critical. The Arduino bootloader introduces about a second and a half delay between power-up/ |
- | Yet another situation where you might not want a bootloader is if you have lowered or disabled the [[https:// | + | Yet another situation where you might not want a bootloader is if you have lowered or disabled the [[https:// |
There are situations apart from these where you wouldn' | There are situations apart from these where you wouldn' | ||
===== Hardware ===== | ===== Hardware ===== | ||
- | You're going to need a device you want to program (e.g., an Arduino board) and a device with which you will do the programming (a.k.a., the programmer). You can see the complete list of programmers supported by the Arduino framework by looking at the list available under //Tools > Programmer: " | + | To program an ATmega328P without a bootloader, you're going to need a device you want to program (e.g., an Arduino board) and a device with which you will do the programming (i.e., the programmer). You can see the complete list of programmers supported by the Arduino framework by looking at the list available under //Tools > Programmer: " |
{{ : | {{ : | ||
Line 32: | Line 27: | ||
That's a lot of options! | That's a lot of options! | ||
- | Below, I cover a few cases to get you started. Most of these use the USBtinyISP.((As near as I can tell, the original source of the USBtinyISP design is Dick Streefland' | + | ==== USBtinyISP |
- | The original USBtinyISP | + | Below, I cover a few cases to get you started. Most of these use the USBtinyISP.((As near as I can tell, the original |
- | If you are using a USBtinyISP clone, | + | The original USBtinyISP has a built-in 3x2 IDC cable that carries the signals needed for ISP (in-system programming) and a 5x2 IDC cable that carries the same signals but in a different layout. |
- | Depending on the board you are programming, | + | Depending on the board you are programming, |
<WRAP center round tip 80%> | <WRAP center round tip 80%> | ||
Line 44: | Line 39: | ||
</ | </ | ||
===== Procedures ===== | ===== Procedures ===== | ||
- | As is the case when uploading a program to your Arduino using a bootloader, when uploading a program using a programmer you must specify what the target board is. So when doing any of the following, make sure //Tools > Board// and //Tools > Processor// are set correctly for your board. | + | As is the case when uploading a program to your Arduino using a bootloader, when uploading a program using a programmer you must specify what the target board is. So when doing any of the following, make sure //Tools > Board// and //Tools > Processor// |
Now is also a good time to mention a significant caveat about using a programmer as described here. <WRAP center round important 80%> | Now is also a good time to mention a significant caveat about using a programmer as described here. <WRAP center round important 80%> | ||
Line 62: | Line 57: | ||
</ | </ | ||
- | Directly uploading a sketch to an Uno or Nano using a USBtinyISP is very straightforward: | + | Directly uploading a sketch to an Uno or Nano using a USBtinyISP is pretty |
- Configure your IDE to use the USBtinyISP: //Tools > Programmer " | - Configure your IDE to use the USBtinyISP: //Tools > Programmer " | ||
Line 106: | Line 101: | ||
==== Case 3: Pro Mini 3.3V/8MHz with USBtinyISP ==== | ==== Case 3: Pro Mini 3.3V/8MHz with USBtinyISP ==== | ||
- | |||
- | <WRAP center round info 60%> | ||
- | Tested. | ||
- | </ | ||
Most programmers based on the USBtinyISP assume you are working at 5VDC. This presents a bit of an issue if you are using a 3.3V/8MHz Pro Mini because the I/O of the ATmega328P is not 5V tolerant when the VCC is 3.3V. In spite of this, there are a couple approaches to using an USBtinyISP to program a 3.3V Pro Mini, covered below. | Most programmers based on the USBtinyISP assume you are working at 5VDC. This presents a bit of an issue if you are using a 3.3V/8MHz Pro Mini because the I/O of the ATmega328P is not 5V tolerant when the VCC is 3.3V. In spite of this, there are a couple approaches to using an USBtinyISP to program a 3.3V Pro Mini, covered below. | ||
Line 116: | Line 107: | ||
=== Method 1: Leverage the jumper === | === Method 1: Leverage the jumper === | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | Tested. | ||
+ | </ | ||
Version 2 of the [[https:// | Version 2 of the [[https:// | ||
Line 152: | Line 147: | ||
=== Method 2: Use 5V anyway === | === Method 2: Use 5V anyway === | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | Tested. | ||
+ | </ | ||
If your USBtinyISP doesn' | If your USBtinyISP doesn' | ||
Line 187: | Line 186: | ||
When you upload a program using a programmer, you overwrite the bootloader. This means your board will no longer work with the conventional //Sketch > Upload// command in the IDE. However, getting the bootloader back is straightforward. | When you upload a program using a programmer, you overwrite the bootloader. This means your board will no longer work with the conventional //Sketch > Upload// command in the IDE. However, getting the bootloader back is straightforward. | ||
- | Uploading a bootloader to your micro is almost identical to uploading a program using a programmer. The only difference is that instead of uploading a program using //Sketch > Upload Using Programmer//, | + | Uploading a bootloader to your micro is almost identical to uploading a program using a programmer. The only difference is that instead of uploading a program using //Sketch > Upload Using Programmer//, |
After uploading the bootloader, you should be able to use //Sketch > Upload// again just as you always have. | After uploading the bootloader, you should be able to use //Sketch > Upload// again just as you always have. | ||
arduino/arduino_without_a_bootloader.txt · Last modified: 2022/05/30 05:46 by mithat