I am looking at designing a low-power project that will have an ATMega328 running at a low speed for lower power consumption.

The current plan is to have the UART hooked up to a RF Link Receiver for communication at 1200baud.

What I'm wondering, though, is what the minimum speed is that I can run an ATMega328 at and still have a 1200baud UART running. Is 1MHz fast enough?


The UART clock runs at 16 times the baud rate. So you would could get possibly get away with 19.2 kHz. 1 MHz will be fine.

Most often you would run at a clock rate that gives a convenient divider to generate the UART baud rate clock and is still faster enough for any other processing you need to get done. Each time a byte or packet is transmitted via the UART, put the CPU into a low power mode and wake up again on an interrupt when more data is ready.

  • \$\begingroup\$ I think the sentence "The UART clock runs at 16 times the baud rate" is a little bit misleading. The USART baud rate generator runs on the system/oscillator clock and is just prescaled by the UBRR value. Also, it depends on the operation mode. The factor 16 applies to "Asynchronous Normal mode". \$\endgroup\$ – Rev1.0 Feb 26 '13 at 19:52

From my observation it's not viable to run ATMega328p below 1Mhz to save the power (because you will need more time running to finish the calculation). However reducing voltage will result in high power saving. Running at 1Mhz and 1.8V consumes only 1% of power if run at 16Mhz and 5V. I made this ATMega328 power consumption chart

According to this AVR UART Calculator if you run your AVR at 1MHz (default speed without external crystal) you can UART up to 4800


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.