Das steht im Datenblatt an der Stelle, an der die Programmierung des
Baudratenerzeugers beschrieben wird.
Der Prozessortakt wird durch ganzzahlige Werte geteilt, um die
Zielbaudrate zu erzeugen. Dabei wird zunächst ein fester Divisor von 16
angewandt, da eine UART zur korrekten Synchronisation den 16fachen
Baudratentakt benötigt.
(AVRs bieten auch einen "double speed"-Modus an, bei dem erhöhte
Anforderungen an die Genauigkeit der Baudrate gestellt werden).
Aus dem so aus 1 MHz resultierenden Maximalwert von 62500 (resp. 12500
im "double-speed"-Modus) lässt sich, wie Du unter Zuhilfenahme eines
Taschenrechners leicht herausfinden kannst, der Wert 9600 nicht genau
erzeugen.
Eigentlich wäre ein Divisor von 6.51 erforderlich, möglich sind aber
nur 6 oder 7, was in 57600 bzw 67200 resultiert.
Der erste Wert ist etwa 8% kleiner, der zweite Wert hingegen etwa 7%
größer als der gewünschte Wert.
(Im "double-speed"-Modus sieht die Angelegenheit mit einem
Soll-Divisor von 13.02 schon deutlich besser aus, mit einem
tatsächlichen Divisor von 13 liegt der erzielte Wert etwa 0.2% unter
dem gewünschten).
Der Begriff "Fehlertoleranz" ist etwas irreführend, weil er das
Tolerieren eines Fehlers suggeriert.
Ab einer gewissen Abweichung vom Soll (==Fehler) wird diese nicht mehr
toleriert, d.h. eine gewisse Toleranz wird überschritten.
Welche Toleranzen beim Empfangen von Daten mit der UART des AVR
akzeptiert werden, siehst Du auf Seite 158 des Mega16-Datenblattes
beschrieben. Die Toleranz hängt hier auch von der verwendeten Wortlänge
ab.
Auf Seite 166 des gleichen Datenblattes sind für einige
Prozessortaktfrequenzen die erzielbaren Baudraten inklusive der
resultierenden Fehler angegeben.