I am working on a project which has a 3.3V RF module.
I am prototyping with a 5V Pro Mini.
To avoid using a level shifter I am considering running the Pro Mini at 3.3V.
To do this I understand I need to :
add an external crystal to lower the clock speed to about 12 MHz
make adjustments to the millisec and delay functions
.
Are any other changes/adjustments required?
Is there any other advantage in using a 3.3V Pro Mini vs a re-clocked 5V Pro Mini.
A follow-on question...
For the moment I program the 5V Pro Mini with a 5V Nano via the TX/RX pins.
Can a 3.3V Pro Mini be programmed in the same way with a 5V Nano?
Obviously the VCC connection would have to be via the RAW input on the 3.3V Pro Mini.
You need a 3.3V 8MHz Pro Mini. Programming it with 5V is no problem, it will work up to 5.5V. But you do need to select the 3.3V 8MHz version in the Arduino IDE, since it runs at 8MHz.
Replacing the 16MHz with 12MHz results into something that is not compatible with one of the Arduino boards.
Adjusting the millis() and delay() is not enough.
You can replace the 16MHz with a 8MHz crystal, but you have to know what you do with the 5V voltage regulator.
Yes, if you have 3.3V from somewhere, you can connect that to VCC.
I would avoid reverse voltage to the 5V voltage regulator and I would remove it (a big blob of solder to heat up the pins and it should fall off).
Well, some Pro Mini clones are faulty (bad pcb design). Some have resonators, some have crystals. Some have the wrong voltage regulator or the wrong crystal. So you might have some hassle anyway.
However, I have a bunch of 16MHz and 8MHz Pro Mini clone boards, ready to be used in any project. My cheapest Pro Mini was 1.70 euros.
If a Pro Mini board can operate on both 5V and 3.3V, you don't need to care for the clock rate. Choose the correct board and voltage in the IDE, and the compiler will adjust the clock rate automatically for the selected voltage
DrDiettrich:
If a Pro Mini board can operate on both 5V and 3.3V, you don't need to care for the clock rate. Choose the correct board and voltage in the IDE, and the compiler will adjust the clock rate automatically for the selected voltage
Now that u mention that, I just noticed that the Deek Robot 5V Pro Mini I have seems to be dual voltage, and no obvious jumper to change voltage.
I have previously seen some "dual voltage ones" ones advertised, but thought u also need make a hardware change like change a voltage "solder" jumper like on this one.
So is it really just the IDE selection that changes the voltage?
I guess it is time to program my unit as 3.3V and measure the pin output voltage...
The Arduino IDE compiles code for a certain clock speed (8MHz or 16MHz), and the bootloader on the Arduino expects that it is running at a certain clock speed, to be able to upload a sketch with the right baudrate.
The Arduino IDE and the bootloader don't know about the voltage, and they don't care. The clock speed is important for all the timing and baudrates and so on.
The most common Arduino boards use a 16MHz ATmega microcontroller. The ATmega can run at many clock speeds, but they need a higher voltage for higher frequencies.
It needs 5V for 16MHz. According to the datasheet the ATmega can't run 16MHz with 3.3V.
That is why a clock speed of 8MHz is choosen to be able to make it run at 3.3V. It is however the same ATmega chip, and it will run 8MHz at 5V just as well.
Some boards can select 3.3V or 5V, but the crystal on the board is 16MHz. It seems possible to run an ATmega chip at 3.3V with 16MHz. That is however outside the specificiations in the datasheet, and should be considered as unreliable.