31
ATmega8A [DATASHEET]
8159E–AVR–02/2013
9.9
Register Description
9.9.1
OSCCAL – Oscillator Calibration Register
Bits 7:0 – CAL7:0: Oscillator Calibration Value
Writing the calibration byte to this address will trim the Internal Oscillator to remove process variations from the
Oscillator frequency. During Reset, the 1MHz calibration value which is located in the signature row High byte
(address 0x00) is automatically loaded into the OSCCAL Register. If the internal RC is used at other frequencies,
the calibration values must be loaded manually. This can be done by first reading the signature row by a program-
mer, and then store the calibration values in the Flash or EEPROM. Then the value can be read by software and
loaded into the OSCCAL Register. When OSCCAL is zero, the lowest available frequency is chosen. Writing non-
zero values to this register will increase the frequency of the Internal Oscillator. Writing 0xFF to the register gives
the highest available frequency. The calibrated Oscillator is used to time EEPROM and Flash access. If EEPROM
or Flash is written, do not calibrate to more than 10% above the nominal frequency. Otherwise, the EEPROM or
Flash write may fail. Note that the Oscillator is intended for calibration to 1.0, 2.0, 4.0, or 8.0 MHz. Tuning to other
values is not guaranteed, as indicated in
Table 9-11.
Bit
76543210
CAL7
CAL6
CAL5
CAL4
CAL3
CAL2
CAL1
CAL0
OSCCAL
Read/Write
R/W
Initial Value
Device Specific Calibration Value
Table 9-11.
Internal RC Oscillator Frequency Range
OSCCAL Value
Min Frequency in Percentage of
Nominal Frequency (%)
Max Frequency in Percentage of
Nominal Frequency (%)
0x00
50
100
0x7F
75
150
0xFF
100
200