What is the arduino Uno clock frequency?

In the website it says 16Mhz. Is it the maximum it can go? What is the default clock frequency? Is there anyway to change it to 4Mhz?

thanks

Is it the maximum it can go?

No it can go up to 20MHz, but the boot loader has to be changed to make it work at this frequency.

Is there anyway to change it to 4Mhz?

Yes you can :- 1) Fit a 4MHz crystal. 2) Change the fuses in the processor to pre divide the clock Again you need to change the boot loader.

However, there is not much point in making it run slower, just write the software so it doesn't interact as fast.

In that case can I use this particular receiver with arduino Uno board.

http://www.cytron.com.my/datasheet/WirelessDevice/RF_RX_User%27s_Manual.pdf

I don't really see that the connected controller's clock speed has anything to do with a radio module, unless they're worried about higher harmonics of the clock interfering with the RF, but good circuit design (on both components) should mean this isn't too much of a problem.

For future reference

Let me know if this forum prefers new topics for this sort of thing, but a google search led me to this one and it pertains to what I need to do.

The reason I'm interested in dropping the clock frequency of an Arduino Uno to 8MHz is to allow operation down to 3.2V. I want to run between 3.2V - 4.8V because that's the range for the SIM900

It seems like this could be easily done by changing the CLKPR register at runtime. Why does this thread warn that I'd need a new bootloader, however? If I always enter the bootloader through RESET, wouldn't the CKDIV8 fuse return the clock to the frequency expected by the bootloader?

About the libraries all being written for 16MHz: there are no ways to configure this at all, whether in a header file, an ide config file, or something else? Writing my own millis isn't the end of the world, but I'd avoid it if I could.

All you need to do is burn the 8MHz bootloader. This will set the correct fuses and code that is meant for that processor will run correctly. If you have an Uno, you will also need to modify the board.

check this:

power saving techniques

and yes it is preferred that you don't necro old threads.

codlink: All you need to do is burn the 8MHz bootloader. This will set the correct fuses and code that is meant for that processor will run correctly. If you have an Uno, you will also need to modify the board.

I understand that there are clock speeds that do require burning a different bootloader and modifying the Uno. From section 9.12.2 of the ATmega328P datasheet it seems that it shouldn't be necessary for 8MHz (or the OP's 4MHz), however. If I leave my 16MHz resonator on the Arduino Uno, and then change the CLKPR register in setup() so that CLKPS = 1, my sketch should now be running at 8MHz. When I re-enter the bootloader through RESET, the CKDIV8 fuse will reset the CLKPS bits to 0000 so the bootloader will continue running at 16MHz.

If there's something I'm not seeing here please point it out, otherwise I'd prefer to leave the bootloader at its default. I'm distributing this code and would prefer it to not include a "replace your bootloader" step.

Hutkikz: check this: power saving techniques and yes it is preferred that you don't necro old threads.

Thanks, this link is quite useful. I'm actually going to need some of the other power saving techniques for this project too.

Sorry about resurrecting old threads. I'll move if the mods want me to and reference this one instead.

BigBobby:
If there’s something I’m not seeing here please point it out, otherwise I’d prefer to leave the bootloader at its default. I’m distributing this code and would prefer it to not include a “replace your bootloader” step.

If you don’t mind the bootloader running at 16MHz, you can divide the frequency by 2 in your sketch. If you are distributing the code to others you may want to be aware and make the users aware the Uno running at 16MHz at 3.2V while the bootloader is running upon power up is over-clocking the processor.

What I do is create a custom boards.txt entry for the Uno that defines build.f_cpu=8000000L like this:

uno2.name=Uno 8 MHz CLKPR=1
uno2.vid.0=0x2341
uno2.pid.0=0x0043
uno2.vid.1=0x2341
uno2.pid.1=0x0001
uno2.vid.2=0x2A03
uno2.pid.2=0x0043
uno2.vid.3=0x2341
uno2.pid.3=0x0243
uno2.upload.tool=arduino:avrdude
uno2.upload.protocol=arduino
uno2.upload.maximum_size=32256
uno2.upload.maximum_data_size=2048
uno2.upload.speed=115200
uno2.bootloader.tool=arduino:avrdude
uno2.bootloader.low_fuses=0xFF
uno2.bootloader.high_fuses=0xDE
uno2.bootloader.extended_fuses=0x05
uno2.bootloader.unlock_bits=0x3F
uno2.bootloader.lock_bits=0x0F
uno2.bootloader.file=optiboot/optiboot_atmega328.hex
uno2.build.mcu=atmega328p
uno2.build.f_cpu=8000000L
uno2.build.board=AVR_UNO
uno2.build.core=arduino:arduino
uno2.build.variant=arduino:standard

Then divide the clock by 2 in the sketch like this:

#include <avr/power.h>

void setup() {
  // if boards.txt Arduino selected with (board).build.f_cpu=8000000L
  // underclock to that speed
#if F_CPU == 8000000
  delay(1000);
  clock_prescale_set(clock_div_2);
#endif

pinMode(13,OUTPUT);
}

void loop() {
  delay(1000);
  digitalWrite(13, !digitalRead(13));
}

I put the custom boards.txt entry in a subdirectory of my sketches directory according to this guideline:

dmjlambert: If you don't mind the bootloader running at 16MHz, you can divide the frequency by 2 in your sketch. If you are distributing the code to others you may want to be aware and make the users aware the Uno running at 16MHz at 3.2V while the bootloader is running upon power up is over-clocking the processor.

What I do is create a custom boards.txt entry for the Uno that defines build.f_cpu=8000000L like this:

Good point. The bootloader is only going to be used when USB is plugged in and 5V is available, but I do need to make it clear that the bootloader can not be used over the full battery range.

dmjlambert: I put the custom boards.txt entry in a subdirectory of my sketches directory according to this guideline: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification

I'll check this link out now.

Thanks!