Der ATMega328p ist nicht für den Betrieb mit 16 MHz bei 3,3 V
ausgelegt.
In der Praxis kann es manchmal funktionieren, kann aber nicht
als zuverlässig angesehen werden.
Das Datenblatt zeigt den tatsächlichen Kompromiss zwischen
Taktrate und Spannung, so dass es einen Zwischenwert geben kann,
der für Sie praktikabel ist.
Die Arduino-Toolchain muss die CPU-Taktfrequenz für die
seriellen Baudraten, den Timing-Verzögerungscode und jede
zeitbasierte Verwendung der Timer-Peripheriegeräte kennen, um
richtig zu kommunizieren.
Es gibt einen Sonderfall, bei dem sich die konfigurierte
Taktrate und die tatsächliche Taktrate um den Faktor zwei
unterscheiden können. Dies kann möglicherweise durch eine ähnlich
falsche Baudrate abgedeckt werden - allerdings wurde die Baudrate
im Bootloader im Vergleich eingestellt an die erwartete
Taktfrequenz, wenn sie vor dem Flashen kompiliert wurde und die
Baudrate expected des Bootloaders in der boards-Datei
eingestellt ist, also weniger leicht geändert werden kann als in
etwas wie der serielle Monitor.