The new generation of ATmega and ATtiny (for example, the ATmega3208) now supports an internal 16/20 MHz oscillator. However, looking at the safe operating area and the provided BOD levels, I'm confused about how they are supposed to be used without an external BOD or other special care.
The selectable levels of the BOD are 1.8V, 2.6V and 4.3V.
As the highest BOD level is 4.3V, it seems I would officially require an external BOD to be able to use 20 MHz. Another needlessly complicated solution would be to use the "Voltage Level Monitor" which can generate an interrupt if I'm 5%, 15% or 25% above the BOD level, so, for example, the interrupt triggers if I've fallen below 4.515 V (4.3 + 5%) and then I would need to cut my own power supply.
Even running at 16 MHz seems tricky. Officially I need to be above 3.78V, but there is no BOD level in this area, so I would be forced to use 4.3V anyway. Which is a shame, because I would like to use the time the voltage is falling from 4.3V to 3.8V to save stuff to eeprom, but if I have no BOD around 3.8V then I have to switch off at 4.3V.
And the voltages required for the eeprom are not mentioned anywhere. There are two fail modes for the eeprom:
- the voltage is physically not enough for the eeprom (yet they don't mention what this voltage is)
- the voltage is not enough for the processor, so it might execute random commands.
Only the second one is depending on the clock frequency. Does this mean I could run on 5 MHz at 1.8V and still safely use the eeprom?
(back in the day I did extensive testing with the old ATmega328, and it always worked fine with 2.7V even with 20Mhz, despite the datasheet saying 4.5V too, at this frequency. However, this being a completely new architecture, I wouldn't rely on my experiences with the old one)
Does this mean the built-in BOD is almost useless, or am I too overly cautious?