Atmel Ata6603
Atmel Ata6603
ATA6602/ATA6603
MCU LIN-SBC
4921C–AUTO–01/07
2. Pin Configuration
Figure 2-1. Pinning QFN48, 7 mm × 7 mm
AVCC
ADC7
AREF
ADC6
GND
PC1
PC0
PB5
PB4
PB3
PB2
PB1
48 47 46 45 44 43 42 41 40 39 38 37
PC2 1 36 PB0
PC3 2 35 PD7
PC4 3 34 PD6
PC5 4 33 PD5
PC6 5 32 WAKE
PD0 6 31 NTRIG
PD1 7 30 PTRIG
PD2 8 29 EN
PD3 9 28 VS
PD4 10 27 VDD
GND 11 26 PVDD
VCC 12 25 TEMP
13 14 15 16 17 18 19 20 21 22 23 24
VCC
TXD
WD_OSC
RXD
GND
GND
NRES
MODE
TM
LIN
PB6
PB7
2 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
3
4921C–AUTO–01/07
3. LIN System-basis-chip Block
3.1 Features
• Supply Voltage up to 40V
• Operating Voltage VS = 5V to 18V
• Slew Rate Control According to LIN Specification 2.0
• Supply Current During Sleep Mode Typically 10 µA
• Supply Current in Silent Mode Typically 40 µA
• Linear Low-drop Voltage Regulator:
– Normal Mode: VDD = 5V ±2%/50 mA
– Silent Mode: VDD = 5V ±7%/50 mA
– Sleep Mode: VDD is Switched Off
• VDD Undervoltage Detection (10 ms Reset Time) and Watchdog Reset Logically Combined at
Output NRES
• Possibility of Boosting the Voltage Regulator with an External NPN Transistor
• LIN Physical Layer According to LIN Specification 2.0
• Wake-up Capability via LIN Bus or WAKE Pin
• Wake-up Recognition
• TXD Time-out Timer
• Debug Mode Watchdog Is Switched Off
• 60V Load Dump Protection at LIN Pin
• Bus Pin is Overtemperature and Short Circuit Protected versus GND and Battery
• Adjustable Watchdog Time via External Resistor
• Positive and Negative Trigger Input for Watchdog
• 5V CMOS Compatible I/O Pins to MCU
• Analog Temperature Monitor Output
• High EMC and ESD Level
3.2 Description
The LIN-SBC is a fully integrated LIN transceiver, complying with the LIN specification, and with
a low-drop voltage regulator for 5V/50 mA output and a window watchdog adjustable via an
external resistor. The voltage regulator is able to source 50 mA at VS = 18V even at an ambient
temperature of 105°C. The output current of the regulator can be boosted by using an external
NPN transistor. This combination makes it possible to develop simple, but powerful and cheap,
slave nodes in LIN bus systems. LIN-SBC is designed to handle the low speed data communica-
tion in vehicles, for example, in convenience electronics. Improved slope control at the LIN driver
ensures secure data communication up to 20 kBaud. The bus output is capable of withstanding
60V. Sleep Mode and Silent Mode guarantee a very low current consumption.
4 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
VDD VS
Receiver Normal
RXD Mode
VS Filter LIN
WAKE
TEMP
OUT Adjustable
Internal Testing
Watchdog Watchdog WD_OSC
GND Unit
Oscillator
VDD
5
4921C–AUTO–01/07
3.3 Functional Description
6 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
7
4921C–AUTO–01/07
3.3.13 Modes of Operation
Pre-normal Mode
b
VCC: 5V/50 mA with undervoltage
b monitoring
Communication: OFF
c+d+e
d
EN = 1
c+e
b
Go to silent command
EN = 0
Silent Mode
TXD = 1
Local wake-up event VCC: 5V ±7%/50 mA
Normal Mode with undervoltage monitoring
EN = 1 Communication: OFF
VCC: 5V ±2%/50 mA
with undervoltage Go to sleep command
monitoring EN = 0
TXD = 0 Sleep Mode
Communication: ON
VCC: switched off
Local wake-up event Communication: OFF
EN = 1
8 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
In Silent Mode, the 5V regulator is in low tolerance mode (4.65V to 5.35V) and can source up to
50 mA. The internal slave termination between pin LIN and pin VS is disabled to minimize the
power dissipation in case pin LIN is shorted to GND. Only a weak pull-up current (typically
10 µA) between pin LIN and pin VS is present.
The Silent Mode voltage tolerance is sufficient to run the internal timers of the microcontroller.
The undervoltage reset is now VDDthS < 4.4V. If an undervoltage condition occurs, the NRES is
switched to low and the LIN-SBC changes state to Pre Normal Mode.
A falling edge at pin LIN followed by a dominant bus level maintained for a certain time period
(Tbus) results in a remote wake-up request. The device switches from Silent Mode to Pre Normal
Mode. The internal LIN slave termination resistor is switched on. The remote wake-up request is
indicated by a low level at pin RXD to interrupt the microcontroller (see Figure 3-6 on page 12).
With EN high, you can switch directly from Silent Mode to Normal Mode.
Silent Mode
EN
Td = 3.2 µs
NRES
VCC
LIN
9
4921C–AUTO–01/07
Figure 3-4. LIN Wake-up Waveform Diagram (from Silent Mode)
LIN bus
VCC
Normal Mode
Voltage Silent Mode 5V/7%/50 mA Pre normal Mode 5V/50 mA
5V/50 mA
Regulator
10 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Sleep Mode
EN
Td = 3.2 µs
NRES
VCC
LIN
11
4921C–AUTO–01/07
Figure 3-6. LIN Wake-up Waveform Diagram from Sleep Mode
LIN bus
VCC
On state
Voltage
Off state
Regulator Node ln
operation
Regulator Wake-up time
EN High
EN
Reset
time
NRES Low or floating
Microcontroller
start-up time delay
12 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
13
4921C–AUTO–01/07
• The WD_OSC pin is a constant voltage regulator which supplies 2.5V for the external resistor
ROSC to adjust the watchdog timing. This output is short circuit protected. A short circuit to
GND causes a reset a pin NRES after typically 4 ms. An open circuit causes a reset at pin
NRES after typically 7 ms.
VS
12V
5.5V
3V
t
VDD
5V
Vthun
14 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Figure 3-8. Power Dissipation: Safe Operating Area versus VDD Output Current and Supply
Voltage VS at Different Temperatures Tcase
55 105˚C
50
45
40
125˚C
IVDD (mA)
35
30
25
20
15
10
5
0
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
VS (V)
3.3.17 Watchdog
The watchdog anticipates a trigger signal from the microcontroller at the NTRIG (negative edge)
or the PTRIG (positive edge) input within a period time window of Twd. The trigger signal must
exceed a minimum time ttrigmin > 3 µs. If a triggering signal is not received, a reset signal will be
generated at output NRES. The timing basis of the watchdog is provided by the internal oscilla-
tor, of which the time period Tosc is adjustable via the external resistor Rwd_osc (10 kΩ to 120 kΩ).
In Silent or Sleep Mode, the watchdog is switched off to reduce current consumption.
Minimum time for first watchdog pulse is required after the undervoltage reset at NRES disap-
pears and is defined as lead time td.
After ramping up the battery voltage V S or wake up from Sleep Mode, the 5V regulator is
switched on. The reset output NRES stays low for the time t reset (typically 10 ms), then it
switches to high and the watchdog waits for the watchdog sequence from the microcontroller.
This lead time td follows after the reset and is td = 49 ms. After wake up from Silent Mode the
RXD switches to low. The lead time td follows the negative edge of this RXD signal. In this time,
the first watchdog pulse from the microcontroller is required. If the trigger pulse NTRIG (or
PTRIG, as the case may be) occurs during this time, the time t1 starts immediately. If no trigger
signal occurs during the time td, a watchdog reset with tNRES = 1.96 ms will reset the microcon-
15
4921C–AUTO–01/07
troller after td = 49 ms. The times t1 and t2 have a fixed relationship with each other. A triggering
signal from the microcontroller is anticipated within the time frame of t2 = 10.5 ms. To avoid false
triggering from glitches, the trigger pulse must be longer than ttrigg > 3 µs. This slope serves to
restart the watchdog sequence. Should the triggering signal fail in this open window t2, the
NRES output will be drawn to ground after t2. A triggering signal during the closed window t1
causes NRES to immediately switch low.
td = 49 ms t1 t2
t1 = 10 ms t2 = 10.5 ms
twd
NTRIG
PTRIG
ttrigg > 3 µs
16 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
VDD
20 µA
TEMP
17
4921C–AUTO–01/07
3.4 Absolute Maximum Ratings
Stresses beyond those listed under “Absolute Maximum Ratings” may cause permanent damage to the device. This is a stress rating
only and functional operation of the device at these or any other conditions beyond those indicated in the operational sections of this
specification is not implied. Exposure to absolute maximum rating conditions for extended periods may affect device reliability.
Parameters Symbol Min Typ. Max. Unit
Supply voltage VS VS –0.3 +40 V
Pulse time ≤ 500 ms
T = 25°C VS +40 V
Output current IVCC ≤ 50 mA
Pulse time ≤ 2 min
T = 25°C VS 27 V
Output current IVCC ≤ 50 mA
WAKE DC and transient voltage
(with 33 kΩ serial resistor) –40 +40
V
Transient voltage due to ISO7637 (coupling 1 nF) –150 +100
Logic pins (RXD, TXD, EN, NRES, PTRIG, NTRIG,
–0.3 +6.5 V
VDD, PVDD, WD_OSC, TEMP)
LIN
- DC voltage –40 +60
V
- Transient voltage –150 +100
VDD
DC voltage –0.3 6.5 V
Maximum Heat slug temperature Tcase (1) –40 +125 °C
Junction temperature Tj –40 +150 °C
Storage temperature Ts –55 +150 °C
Operating ambient temperature Ta –40 +125 °C
Thermal resistance junction to heat slug Rthjc 10 K/W
Thermal resistance junction to ambient, where
Rthja 35 K/W
heat slug is soldered to PCB
Thermal shutdown of VDD regulator 150 165 170 °C
Thermal shutdown of LIN output 150 165 170 °C
Thermal shutdown hysteresis 10 °C
Note: 1. Tcase means the temperature of the heat slug (backside). It is mandatory that this backside temperature is ≤ 125° C in the
application.
18 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
19
4921C–AUTO–01/07
3.5 Electrical Characteristics (Continued)
5V < VS < 18V, Tcase = –40°C to +125°C
No. Parameters Test Conditions Pin Symbol Min. Typ. Max. Unit Type*
4 EN Input Pin
4.1 Low-level voltage input 29 VENL –0.3 +1.5 V A
VDD +
4.2 High-level voltage input 29 VENH 3.5 V A
0.3V
4.3 Pull-down resistor VEN = 5V 29 REN 125 250 600 kΩ A
4.4 Low-level input current VEN = 0V 29 IEN –3 +3 µA A
5 NRES Output Pin
VS ≥ 5.5V;
5.1 High-level output voltage 21 VNRESH 4.5 V A
Inres = –1 mA
VS ≥ 5.5V;
5.2 Low-level output voltage Inres = –1 mA, 21 VNRESL 0.2 V A
Inres = –250 µA 0.14 V A
10 kΩ to VDD;
5.3 Low-level output low 21 VNRESLL 0.3 V A
VDD = 0.8V
VVS ≥ 5.5V
5.4 Undervoltage reset time 21 treset 7 13 ms A
CNRES = 20 pF
Reset debounce time for VVS ≥ 5.5V
5.5 21 tres_f 3 µs A
falling edge CNRES = 20 pF
6 Voltage Regulator VDD Pin in Normal and Pre Normal Mode
5.5V < VS < 18V
6.1 Output voltage VDD 27 VDDnor 4.9 5.1 V A
(0 mA to 50 mA)
Output voltage VDD at VVS
6.2 3.3V < VS < 5.5V 27 VDDlow 5.1 V A
low VS – VD
6.3 Regulator drop voltage VS > 4.0V, IVDD = –20 mA 27 VD1 250 mV A
6.4 Regulator drop voltage VS > 4.0V, IVDD = –50 mA 27 VD2 500 mV A
6.5 Regulator drop voltage VS > 3.3V, IVDD = –15 mA 27 VD3 200 mV A
6.6 Output current VS > 3V 27 IVDD –50 mA A
6.7 Output current limitation VS > 0V 27 IVDDs –200 –130 mA A
6.8 Load capacity 1Ω < ESR < 5Ω 27 Cload 1.8 2.2 µF D
VDD undervoltage Referred to VDD
6.9 27 VthunN 4.4 4.8 V A
threshold VS > 5.5V
Hysteresis of Referred to VDD
6.10 27 Vhysthun 30 mV A
undervoltage threshold VS > 5.5V
Ramp up time VS > 5.5V CVDD = 4.7 µF
6.11 27 tVDD 300 µs A
to VDD > 4.9V No load
7 Voltage Regulator VDD Pin in Silent Mode
5.5V < VS < 18V
7.1 Output voltage VDD 27 VDDnor 4.65 5.35 V A
(0 mA to 50 mA)
Output voltage VDD at VVS
7.2 3.3V < VS < 5.5V 27 VDDlow 5.1 V A
low VS – VD
7.3 Regulator drop voltage VS > 3.3V, IVDD = –15 mA 27 VD 200 mV A
*) Type means: A = 100% tested, B = 100% correlation tested, C = Characterized on samples, D = Design parameter
20 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
21
4921C–AUTO–01/07
3.5 Electrical Characteristics (Continued)
5V < VS < 18V, Tcase = –40°C to +125°C
No. Parameters Test Conditions Pin Symbol Min. Typ. Max. Unit Type*
9 LIN Bus Receiver
Center of receiver VBUS_CNT = 0.5 0.525 –
9.1 18 VBUS_CNT 0.475 VS V A
threshold (Vth_dom + Vth_rec)/2 VS VS
9.2 Receiver dominant state VEN = 5V 18 VBUSdom –27 0.4 VS V A
9.3 Receiver recessive state VEN = 5V 18 VBUSrec 0.6 VS 40 V A
9.4 Receiver input hysteresis VHYS = Vth_rec – Vth_dom 18 VBUShys 0.028 VS 0.1 VS 0.175 VS V A
Wake detection LIN
9.5 18 VLINH VS – 1V VS + 0.3V V A
High-level input voltage
Wake detection LIN
9.6 Initializes a wake-up signal 18 VLINL –27 VS – 3.3V V A
Low-level input voltage
10 Internal Timers
Dominant time for
10.1 VLIN = 0V Tbus 30 90 150 µs A
wake-up via LIN bus
Time delay for mode
change from Pre Normal
10.2 VEN = 5V Tnorm 5 15 20 µs A
to Normal Mode via pin
EN
Time delay for mode
10.3 change from Normal into VEN = 0V Tsleep 2 7 15 µs A
Sleep Mode via pin EN
TXD dominant time-out
10.4 VTXD = 0V Tdom 6 10 20 ms A
timer
THRec(max) = 0.744 × VS;
THDom(max) = 0.581 × VS;
10.5 Duty cycle 1 D1 0.396 A
VS = 7.0V to 18V; tBit = 50 µs
D1 = tbus_rec(min) / (2 × tBit)
THRec(min) = 0.422 × VS;
THDom(min) = 0.284 × VS;
10.6 Duty cycle 2 D2 0.581 A
VS = 7.0V to 18V; tBit = 50 µs
D2 = tbus_rec(max) / (2 × tBit)
Slope time falling and Slope time dominant and TSLOPE_fall
10.7 3.5 22.5 µs A
rising edge at LIN recessive edges TSLOPE_rise
Time of low pulse for
10.8 VWAKE = 0V TWAKE 60 130 200 µs A
wake-up via pin WAKE
11 Internal Receiver Electrical AC Parameters of the LIN Physical Layer LIN Receiver, RXD Load Conditions (CRXD): 20 pF
Propagation delay of
11.1 receiver (see Figure 3-11 trec_pd = max (trx_pdr, trx_pdf) 19 trx_pd 6 µs A
on page 24)
Symmetry of receiver
11.2 propagation delay rising trx_sym = trx_pdr – trx_pdf 19 trx_sym –2 2 µs A
edge minus falling edge
*) Type means: A = 100% tested, B = 100% correlation tested, C = Characterized on samples, D = Design parameter
22 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
23
4921C–AUTO–01/07
3.5 Electrical Characteristics (Continued)
5V < VS < 18V, Tcase = –40°C to +125°C
No. Parameters Test Conditions Pin Symbol Min. Typ. Max. Unit Type*
17 Mode Input Pin
17.1 Low-level voltage input VMODEL –0.3 +0.8V V A
17.2 High-level voltage input VMODEH 2 VS + 0.3V V A
High-level leakage VMODE = VCC or
17.3 IMODE –3 +3 µA A
current VMODE = 0V
*) Type means: A = 100% tested, B = 100% correlation tested, C = Characterized on samples, D = Design parameter
TXD
(input to transmitting node)
tBus_dom(max) tBus_rec(min)
Thresholds of
THRec(max)
receiving node1
VS THDom(max)
(Transceiver supply
of transmitting node) LIN Bus Signal
Thresholds of
THRec(min) receiving node2
THDom(min)
tBus_dom(min) tBus_rec(max)
RXD
(output of receiving node1)
trx_pdf(1) trx_pdr(1)
RXD
(output of receiving node2)
trx_pdr(2) trx_pdf(2)
24 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
4. Microcontroller Block
4.1 Features
• High Performance, Low Power AVR® 8-bit Microcontroller
• Advanced RISC Architecture
– 131 Powerful Instructions - Most Single Clock Cycle Execution
– 32 × 8 General Purpose Working Register
– Fully Static Operation
– Up to 16 MIPS Throughput at 16 MHz
– On-chip 2-cycle Multiplier
• Non-volatile Program and Data Memories
– 8/16 Kbytes of In-System Self-programmable Flash (ATA6602/ATA6603)
Endurance: 75,000 Write/Erase Cycles
– Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program
True Read-While-Write Operation
– 512 Bytes EEPROM
Endurance: 100,000 Write/Erase Cycles
– 1 Kbyte Internal SRAM
– Programming Lock for Software Security
• Peripheral Features
– Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
– One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode
– Real Time Counter with Separate Oscillator
– Six PWM Channels
– 8-channel 10-bit ADC
– Programmable Serial USART
– Master/Slave SPI Serial Interface
– Byte-oriented 2-wire Serial Interface
– Programmable Watchdog Timer with Separate On-chip Oscillator
– On-chip Analog Comparator
– Interrupt and Wake-up on Pin Change
• Special Microcontroller Features
– Power-on Reset and Programmable Brown-out Detection
– Internal Calibrated Oscillator
– External and Internal Interrupt Sources
– Five Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, and Standby
• I/O
– 23 Programmable I/O Lines
• Operating Voltage
– 2.7V to 5.5V
• Speed Grade
– 0 to 8 MHz at 2.7V to 5.5V, 0 to 16 MHz at 4.5V to 5.5V
• Low Power Consumption
– Active Mode:
• 4 MHz, 3.0V: 1.8 mA
– Power-down Mode:
• 5 µA at 3.0V
25
4921C–AUTO–01/07
4.2 Overview
The ATA6602/ATA6603 uses a low-power CMOS 8-bit microcontroller based on the AVR
enhanced RISC architecture. By executing powerful instructions in a single clock cycle, the
ATA6602/ATA6603 achieves throughputs approaching 1 MIPS per MHz allowing the system
designer to optimize power consumption versus processing speed.
Watchdog debugWIRE
Timer
Power Supervision
POR / BOD and
Reset
Watchdog Program
Oscillator Logic
Flash SRAM
Oscillator Circuits /
Clock Generation
AVR CPU
EEPROM
AVCC
AREF
GND
2
8 bit T/C 0 16 bit T/C 1 A/D Converter
DATABUS
Analog Internal 6
8 bit T/C 2 Compensation Bandgap
RESET
XTAL[1..2]
26 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The AVR core combines a rich instruction set with 32 general purpose working registers. All the
32 registers are directly connected to the Arithmetic Logic Unit (ALU), allowing two independent
registers to be accessed in one single instruction executed in one clock cycle. The resulting
architecture is more code efficient while achieving throughputs up to ten times faster than con-
ventional CISC microcontrollers.
The ATA6602/ATA6603 provides the following features: 8K/16K bytes of In-System Program-
mable Flash with Read-While-Write capabilities, 512 bytes EEPROM, 1 Kbyte SRAM,
23 general purpose I/O lines, 32 general purpose working registers, three flexible
Timer/Counters with compare modes, internal and external interrupts, a serial programmable
USART, a byte-oriented 2-wire Serial Interface, an SPI serial port, a 6-channel 10-bit ADC
(8 channels in TQFP and MLF packages), a programmable Watchdog Timer with internal Oscil-
lator, and five software selectable power saving modes. The Idle mode stops the CPU while
allowing the SRAM, Timer/Counters, USART, 2-wire Serial Interface, SPI port, and interrupt sys-
tem to continue functioning. The Power-down mode saves the register contents but freezes the
Oscillator, disabling all other chip functions until the next interrupt or hardware reset. In
Power-save mode, the asynchronous timer continues to run, allowing the user to maintain a
timer base while the rest of the device is sleeping. The ADC Noise Reduction mode stops the
CPU and all I/O modules except asynchronous timer and ADC, to minimize switching noise dur-
ing ADC conversions. In Standby mode, the crystal/resonator Oscillator is running while the rest
of the device is sleeping. This allows very fast start-up combined with low power consumption.
The device is manufactured using Atmel’s high density non-volatile memory technology. The
On-chip ISP Flash allows the program memory to be reprogrammed In-System through an SPI
serial interface, by a conventional non-volatile memory programmer, or by an On-chip Boot pro-
gram running on the AVR core. The Boot program can use any interface to download the
application program in the Application Flash memory. Software in the Boot Flash section will
continue to run while the Application Flash section is updated, providing true Read-While-Write
operation. By combining an 8-bit RISC CPU with In-System Self-Programmable Flash on a
monolithic chip, the Atmel ATA6602/ATA6603 uses a powerful microcontroller that provides a
highly flexible and cost effective solution to many embedded control applications.
The ATA6602/ATA6603 AVR is supported with a full suite of program and system development
tools including: C Compilers, Macro Assemblers, Program Debugger/Simulators, In-Circuit Emu-
lator, and Evaluation kits.
27
4921C–AUTO–01/07
4.2.3 Comparison Between ATA6602/ATA6603
The ATA6602 and ATA6603 differ only in memory sizes, boot loader support, and interrupt vec-
tor sizes. Table 4-1 summarizes the different memory and interrupt vector sizes for the two
devices.
4.2.4.1 VCC
Digital supply voltage.
4.2.4.2 GND
Ground.
28 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
4.2.4.5 PC6/RESET
If the RSTDISBL Fuse is unprogrammed, PC6 is used as a Reset input. A low level on this pin
for longer than the minimum pulse length will generate a Reset, even if the clock is not running.
The minimum pulse length is given in Table 4-3 on page 44. Shorter pulses are not guaranteed
to generate a Reset.
The various special features of Port C are elaborated in “Alternate Functions of Port C” on page
98.
4.2.4.7 AVCC
AVCC is the supply voltage pin for the A/D converter, PC3:0, and ADC7:6. I should be externally
connected to VCC, even if the ADC is not used. If the ADC is used, it should be connected to VCC
through a low-pass filter. Note that PC6..4 use digital supply voltage, VCC.
4.2.4.8 AREF
AREF is the analog reference pin for the A/D converter.
29
4921C–AUTO–01/07
4.3 About Code Examples
This documentation contains simple code examples that briefly show how to use various parts of
the device. These code examples assume that the part specific header file is included before
compilation. Be aware that not all C compiler vendors include bit definitions in the header file
and interrupt handling in C is compiler dependent. Please confirm with the C compiler documen-
tation for more details.
4.4.1 Introduction
This section discusses the AVR core architecture in general. The main function of the CPU core
is to ensure correct program execution. The CPU must therefore be able to access memories,
perform calculations, control peripherals, and handle interrupts.
Interrupt
32 × 8 unit
Instruction general
register purpose
registers SPI
unit
Instruction
decoder Watchdog
timer
Indirect addressing
Direct addressing
ALU
Control lines Analog
comparator
I/O Module 1
I/O Module n
EEPROM
I/O lines
30 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
In order to maximize performance and parallelism, the AVR uses a Harvard architecture – with
separate memories and buses for program and data. Instructions in the program memory are
executed with a single level pipelining. While one instruction is being executed, the next instruc-
tion is pre-fetched from the program memory. This concept enables instructions to be executed
in every clock cycle. The program memory is In-System Reprogrammable Flash memory.
The fast-access Register File contains 32 × 8-bit general purpose working registers with a single
clock cycle access time. This allows single-cycle Arithmetic Logic Unit (ALU) operation. In a typ-
ical ALU operation, two operands are output from the Register File, the operation is executed,
and the result is stored back in the Register File – in one clock cycle.
Six of the 32 registers can be used as three 16-bit indirect address register pointers for Data
Space addressing – enabling efficient address calculations. One of the these address pointers
can also be used as an address pointer for look up tables in Flash program memory. These
added function registers are the 16-bit X-, Y-, and Z-register, described later in this section.
The ALU supports arithmetic and logic operations between registers or between a constant and
a register. Single register operations can also be executed in the ALU. After an arithmetic opera-
tion, the Status Register is updated to reflect information about the result of the operation.
Program flow is provided by conditional and unconditional jump and call instructions, able to
directly address the whole address space. Most AVR instructions have a single 16-bit word for-
mat. Every program memory address contains a 16- or 32-bit instruction.
Program Flash memory space is divided in two sections, the Boot Program section and the
Application Program section. Both sections have dedicated Lock bits for write and read/write
protection. The SPM instruction that writes into the Application Flash memory section must
reside in the Boot Program section.
During interrupts and subroutine calls, the return address Program Counter (PC) is stored on the
Stack. The Stack is effectively allocated in the general data SRAM, and consequently the Stack
size is only limited by the total SRAM size and the usage of the SRAM. All user programs must
initialize the SP in the Reset routine (before subroutines or interrupts are executed). The Stack
Pointer (SP) is read/write accessible in the I/O space. The data SRAM can easily be accessed
through the five different addressing modes supported in the AVR architecture.
The memory spaces in the AVR architecture are all linear and regular memory maps.
A flexible interrupt module has its control registers in the I/O space with an additional Global
Interrupt Enable bit in the Status Register. All interrupts have a separate Interrupt Vector in the
Interrupt Vector table. The interrupts have priority in accordance with their Interrupt Vector posi-
tion. The lower the Interrupt Vector address, the higher the priority.
The I/O memory space contains 64 addresses for CPU peripheral functions as Control Regis-
ters, SPI, and other I/O functions. The I/O Memory can be accessed directly, or as the Data
Space locations following those of the Register File, 0x20 - 0x5F. In addition, the
ATA6602/ATA6603 has Extended I/O space from 0x60 - 0xFF in SRAM where only the
ST/STS/STD and LD/LDS/LDD instructions can be used.
31
4921C–AUTO–01/07
4.4.3 ALU – Arithmetic Logic Unit
The high-performance AVR ALU operates in direct connection with all the 32 general purpose
working registers. Within a single clock cycle, arithmetic operations between general purpose
registers or between a register and an immediate are executed. The ALU operations are divided
into three main categories – arithmetic, logical, and bit-functions. Some implementations of the
architecture also provide a powerful multiplier supporting both signed/unsigned multiplication
and fractional format. See the “Instruction Set” section for a detailed description.
Bit 7 6 5 4 3 2 1 0
I T H S V N Z C SREG
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
Initial
0 0 0 0 0 0 0 0
Value
32 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
7 0 Address
R0 0x00
R1 0x01
R2 0x02
...
R13 0x0D
R14 0x0E
General R15 0x0F
Purpose
R16 0x10
Working
Registers R17 0x11
...
R26 0x1A X-register Low Byte
R27 0x1B X-register High Byte
R28 0x1C Y-register Low Byte
R29 0x1D Y-register High Byte
R30 0x1E Z-register Low Byte
R31 0x1F Z-register High Byte
33
4921C–AUTO–01/07
Most of the instructions operating on the Register File have direct access to all registers, and
most of them are single cycle instructions.
As shown in Figure 4-3 on page 33, each register is also assigned a data memory address,
mapping them directly into the first 32 locations of the user Data Space. Although not being
physically implemented as SRAM locations, this memory organization provides great flexibility in
access of the registers, as the X-, Y- and Z-pointer registers can be set to index any register in
the file.
15 XH XL 0
X-register 7 0 7 0
R27 (0x1B) R26 (0x1A)
15 YH YL 0
Y-register 7 0 7 0
R29 (0x1D) R28 (0x1C)
15 ZH ZL 0
Z-register 7 0 7 0
R31 (0x1F) R30 (0x1E)
In the different addressing modes these address registers have functions as fixed displacement,
automatic increment, and automatic decrement (see the instruction set reference for details).
34 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The AVR Stack Pointer is implemented as two 8-bit registers in the I/O space. The number of
bits actually used is implementation dependent. Note that the data space in some implementa-
tions of the AVR architecture is so small that only SPL is needed. In this case, the SPH Register
will not be present.
Bit 15 14 13 12 11 10 9 8
SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 SPH
SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 SPL
7 6 5 4 3 2 1 0
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
R/W R/W R/W R/W R/W R/W R/W R/W
Initial Value RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND
RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND
clkCPU
1st Instruction Fetch
1st Instruction Execute
2nd Instruction Fetch
2nd Instruction Execute
3rd Instruction Fetch
3rd Instruction Execute
4th Instruction Fetch
Figure 4-6 on page 36 shows the internal timing concept for the Register File. In a single clock
cycle an ALU operation using two register operands is executed, and the result is stored back to
the destination register.
35
4921C–AUTO–01/07
Figure 4-6. Single Cycle ALU Operation
T1 T2 T3 T4
clkCPU
Total Execution Time
36 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Note that the Status Register is not automatically stored when entering an interrupt routine, nor
restored when returning from an interrupt routine. This must be handled by software.
When using the CLI instruction to disable interrupts, the interrupts will be immediately disabled.
No interrupt will be executed after the CLI instruction, even if it occurs simultaneously with the
CLI instruction. The following example shows how this can be used to avoid interrupts during the
timed EEPROM write sequence.
Assembly Code Example
in r16, SREG ; store SREG value
cli ; disable interrupts during timed sequence
sbi EECR, EEMPE ; start EEPROM write
sbi EECR, EEPE
out SREG, r16 ; restore SREG value (I-bit)
C Code Example
char cSREG;
cSREG = SREG; /* store SREG value */
/* disable interrupts during timed sequence */
_CLI();
EECR |= (1<<EEMPE); /* start EEPROM write */
EECR |= (1<<EEPE);
SREG = cSREG; /* restore SREG value (I-bit) */
When using the SEI instruction to enable interrupts, the instruction following SEI will be exe-
cuted before any pending interrupts, as shown in this example.
37
4921C–AUTO–01/07
4.5 AVR ATA6602/ATA6603 Memories
This section describes the different memories in the ATA6602/ATA6603. The AVR architecture
has two main memory spaces, the Data Memory and the Program Memory space. In addition,
the ATA6602/ATA6603 features an EEPROM Memory for data storage. All three memory
spaces are linear and regular.
0x0000
0x7FF
38 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
0x0000
39
4921C–AUTO–01/07
4.5.2 SRAM Data Memory
Figure 4-9 shows how the ATA6602/ATA6603 SRAM Memory is organized.
The ATA6602/ATA6603 is a complex microcontroller with more peripheral units than can be
supported within the 64 locations reserved in the Opcode for the IN and OUT instructions. For
the Extended I/O space from 0x60 - 0xFF in SRAM, only the ST/STS/STD and LD/LDS/LDD
instructions can be used.
The lower 768/1280/1280 data memory locations address both the Register File, the I/O mem-
ory, Extended I/O memory, and the internal data SRAM. The first 32 locations address the
Register File, the next 64 location the standard I/O memory, then 160 locations of Extended I/O
memory, and the next 512/1024/1024 locations address the internal data SRAM.
The five different addressing modes for the data memory cover: Direct, Indirect with Displace-
ment, Indirect, Indirect with Pre-decrement, and Indirect with Post-increment. In the Register
File, registers R26 to R31 feature the indirect addressing pointer registers.
The direct addressing reaches the entire data space.
The Indirect with Displacement mode reaches 63 address locations from the base address given
by the Y- or Z-register.
When using register indirect addressing modes with automatic pre-decrement and post-incre-
ment, the address registers X, Y, and Z are decremented or incremented.
The 32 general purpose working registers, 64 I/O Registers, 160 Extended I/O Registers, and
the 512/1024/1024 bytes of internal data SRAM in the ATA6602/ATA6603 are all accessible
through all these addressing modes. The Register File is described in “General Purpose Regis-
ter File” on page 33.
40 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
clkCPU
Data
Write
WR
Data
Read
RD
41
4921C–AUTO–01/07
4.5.3.2 The EEPROM Address Register – EEARH and EEARL
Bit 15 14 13 12 11 10 9 8
– – – – – – – EEAR8 EEARH
7 6 5 4 3 2 1 0
Read/Write R R R R R R R R/W
Initial Value 0 0 0 0 0 0 0 X
X X X X X X X X
Initial Value 0 0 0 0 0 0 0 0
Initial Value 0 0 X X 0 0 X 0
42 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The Programming times for the different modes are shown in Table 4-2. While EEPE is set,
any write to EEPMn will be ignored. During reset, the EEPMn bits will be reset to 0b00
unless the EEPROM is busy programming.
43
4921C–AUTO–01/07
When the write access time has elapsed, the EEPE bit is cleared by hardware. The user
software can poll this bit and wait for a zero before writing the next byte. When EEPE has
been set, the CPU is halted for two cycles before the next instruction is executed.
• Bit 0 – EERE: EEPROM Read Enable
The EEPROM Read Enable Signal EERE is the read strobe to the EEPROM. When the cor-
rect address is set up in the EEAR Register, the EERE bit must be written to a logic one to
trigger the EEPROM read. The EEPROM read access takes one instruction, and the
requested data is available immediately. When the EEPROM is read, the CPU is halted for
four cycles before the next instruction is executed.
The user should poll the EEPE bit before starting the read operation. If a write operation is in
progress, it is neither possible to read the EEPROM, nor to change the EEAR Register.
The calibrated Oscillator is used to time the EEPROM accesses. Table 4-3 lists the typical
programming time for EEPROM access from the CPU.
The following code examples show one assembly and one C function for writing to the
EEPROM. The examples assume that interrupts are controlled (e.g. by disabling interrupts glo-
bally) so that no interrupts will occur during execution of these functions. The examples also
assume that no Flash Boot Loader is present in the software. If such code is present, the
EEPROM write function must also wait for any ongoing SPM command to finish.
44 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The next code examples show assembly and C functions for reading the EEPROM. The exam-
ples assume that interrupts are controlled so that no interrupts will occur during execution of
these functions.
45
4921C–AUTO–01/07
Assembly Code Example
EEPROM_read:
; Wait for completion of previous write
sbic EECR,EEPE
rjmp EEPROM_read
; Set up address (r18:r17) in address register
out EEARH, r18
out EEARL, r17
; Start eeprom read by writing EERE
sbi EECR,EERE
; Read data from Data Register
in r16,EEDR
ret
C Code Example
unsigned char EEPROM_read(unsigned int uiAddress)
{
/* Wait for completion of previous write */
while(EECR & (1<<EEPE))
;
/* Set up address register */
EEAR = uiAddress;
/* Start eeprom read by writing EERE */
EECR |= (1<<EERE);
/* Return data from Data Register */
return EEDR;
}
46 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Initial Value 0 0 0 0 0 0 0 0
Initial Value 0 0 0 0 0 0 0 0
Initial Value 0 0 0 0 0 0 0 0
47
4921C–AUTO–01/07
4.6 System Clock and Clock Options
clkADC
clkASY clkFLASH
Clock Watchdog
Multiplexer Oscillator
48 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Note: 1. For all fuses “1” means unprogrammed while “0” means programmed.
49
4921C–AUTO–01/07
Table 4-5. Number of Watchdog Oscillator Cycles
Typ Time-out (VCC = 5.0V) Typ Time-out (VCC = 3.0V) Number of Cycles
0 ms 0 ms 0
4.1 ms 4.3 ms 4K (4,096)
65 ms 69 ms 8K (8,192)
Main purpose of the delay is to keep the AVR in reset until it is supplied with minimum VCC. The
delay will not monitor the actual voltage and it will be required to select a delay longer than the
VCC rise time. If this is not possible, an internal or external Brown-Out Detection circuit should be
used. A BOD circuit will ensure sufficient VCC before it releases the reset, and the time-out delay
can be disabled. Disabling the time-out delay without utilizing a Brown-Out Detection circuit is
not recommended.
The oscillator is required to oscillate for a minimum number of cycles before the clock is consid-
ered stable. An internal ripple counter monitors the oscillator output clock, and keeps the internal
reset active for a given number of clock cycles. The reset is then released and the device will
start to execute. The recommended oscillator start-up time is dependent on the clock type, and
varies from 6 cycles for an externally applied clock to 32K cycles for a low frequency crystal.
The start-up sequence for the clock includes both the time-out delay and the start-up time when
the device starts up from reset. When starting up from Power-save or Power-down mode, VCC is
assumed to be at a sufficient level and only the start-up time is included.
C2
XTAL2
C1
XTAL1
GND
The Low Power Oscillator can operate in three different modes, each optimized for a specific fre-
quency range. The operating mode is selected by the fuses CKSEL3..1 as shown in Table 4-6
on page 51.
50 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Table 4-7. Start-up Times for the Low Power Crystal Oscillator Clock Selection
Start-up Time from Additional Delay
Oscillator Source/ Power-down and from Reset
Power Conditions Power-save (VCC = 5.0V) CKSEL0 SUT1..0
Ceramic resonator, fast
258 CK 14CK + 4.1 ms(1) 0 00
rising power
Ceramic resonator, slowly
258 CK 14CK + 65 ms(1) 0 01
rising power
Ceramic resonator, BOD
1K CK 14CK(2) 0 10
enabled
Ceramic resonator, fast
1K CK 14CK + 4.1 ms(2) 0 11
rising power
Ceramic resonator, slowly
1K CK 14CK + 65 ms(2) 1 00
rising power
Crystal Oscillator, BOD
16K CK 14CK 1 01
enabled
Crystal Oscillator, fast
16K CK 14CK + 4.1 ms 1 10
rising power
Crystal Oscillator, slowly
16K CK 14CK + 65 ms 1 11
rising power
Notes: 1. These options should only be used when not operating close to the maximum frequency of the
device, and only if frequency stability at start-up is not important for the application. These
options are not suitable for crystals.
2. These options are intended for use with ceramic resonators and will ensure frequency stability
at start-up. They can also be used with crystals when not operating close to the maximum fre-
quency of the device, and if frequency stability at start-up is not important for the application.
51
4921C–AUTO–01/07
4.6.4 Full Swing Crystal Oscillator
Pins XTAL1 and XTAL2 are input and output, respectively, of an inverting amplifier which can be
configured for use as an On-chip Oscillator, as shown in Figure 4-12 on page 50. Either a quartz
crystal or a ceramic resonator may be used.
This Crystal Oscillator is a full swing oscillator, with rail-to-rail swing on the XTAL2 output. This is
useful for driving other clock inputs and in noisy environments. The current consumption is
higher than the “Low Power Crystal Oscillator” on page 50. Note that the Full Swing Crystal
Oscillator will only operate for VCC = 2.7 - 5.5V.
C1 and C2 should always be equal for both crystals and resonators. The optimal value of the
capacitors depends on the crystal or resonator in use, the amount of stray capacitance, and the
electromagnetic noise of the environment. Some initial guidelines for choosing capacitors for
use with crystals are given in Table 4-9 on page 53. For ceramic resonators, the capacitor val-
ues given by the manufacturer should be used.
The operating mode is selected by the fuses CKSEL3..1 as shown in Table 4-8.
Notes: 1. The frequency ranges are preliminary values. Actual values are TBD.
2. If 8 MHz frequency exceeds the specification of the device (depends on VCC), the CKDIV8
Fuse can be programmed in order to divide the internal frequency by 8. It must be ensured
that the resulting divided clock meets the frequency specification of the device.
C2
XTAL2
C1
XTAL1
GND
52 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Table 4-9. Start-up Times for the Full Swing Crystal Oscillator Clock Selection
Start-up Time from Additional Delay
Oscillator Source/ Power-down and from Reset
Power Conditions Power-save (VCC = 5.0V) CKSEL0 SUT1..0
Ceramic resonator, fast
258 CK 14CK + 4.1 ms(1) 0 00
rising power
Ceramic resonator, slowly
258 CK 14CK + 65 ms(1) 0 01
rising power
Ceramic resonator, BOD
1K CK 14CK(2) 0 10
enabled
Ceramic resonator, fast
1K CK 14CK + 4.1 ms(2) 0 11
rising power
Ceramic resonator, slowly
1K CK 14CK + 65 ms(2) 1 00
rising power
Crystal Oscillator, BOD
16K CK 14CK 1 01
enabled
Crystal Oscillator, fast
16K CK 14CK + 4.1 ms 1 10
rising power
Crystal Oscillator, slowly
16K CK 14CK + 65 ms 1 11
rising power
Notes: 1. These options should only be used when not operating close to the maximum frequency of the
device, and only if frequency stability at start-up is not important for the application. These
options are not suitable for crystals.
2. These options are intended for use with ceramic resonators and will ensure frequency stability
at start-up. They can also be used with crystals when not operating close to the maximum fre-
quency of the device, and if frequency stability at start-up is not important for the application.
Table 4-10. Start-up Times for the Low Frequency Crystal Oscillator Clock Selection
Start-up Time from Additional Delay
Power-down and from Reset
Power Conditions Power-save (VCC = 5.0V) CKSEL0 SUT1..0
(1)
BOD enabled 1K CK 14CK 0 00
(1)
Fast rising power 1K CK 14CK + 4.1 ms 0 01
Slowly rising power 1K CK 14CK + 65 ms(1) 0 10
Reserved 0 11
BOD enabled 32K CK 14CK 1 00
Fast rising power 32K CK 14CK + 4.1 ms 1 01
Slowly rising power 32K CK 14CK + 65 ms 1 10
Reserved 1 11
Note: 1. These options should only be used if frequency stability at start-up is not important for the
application.
53
4921C–AUTO–01/07
4.6.6 Calibrated Internal RC Oscillator
The calibrated internal RC Oscillator by default provides a 8.0 MHz clock. The frequency is nom-
inal value at 3V and 25°C. The device is shipped with the CKDIV8 Fuse programmed. See
“System Clock Prescaler” on page 57 for more details. This clock may be selected as the system
clock by programming the CKSEL Fuses as shown in Table 4-11. If selected, it will operate with
no external components. During reset, hardware loads the calibration byte into the OSCCAL
Register and thereby automatically calibrates the RC Oscillator. At 3V and 25° C, this calibration
gives a frequency of 8 MHz ±1%. The tolerance of the internal RC oscillator remains better than
±10% within the whole automotive temperature and voltage ranges (2.7V to 5.5V, –40°C to
+125°C. The oscillator can be calibrated to any frequency in the range 7.3 - 8.1 MHz within ±1%
accuracy, by changing the OSCCAL register. When this Oscillator is used as the chip clock, the
Watchdog Oscillator will still be used for the Watchdog Timer and for the Reset Time-out. For
more information on the pre-programmed calibration value (see “Calibration Byte” on page 301).
Table 4-12. Start-up Times for the Internal Calibrated RC Oscillator Clock Selection
Start-up Time from Additional Delay from
Power Conditions Power-down and Power-save Reset (VCC = 5.0V) SUT1..0
(1)
BOD enabled 6 CK 14CK 00
Fast rising power 6 CK 14CK + 4.1 ms 01
Slowly rising power 6 CK 14CK + 65 ms(2) 10
Reserved 11
Note: 1. If the RSTDISBL fuse is programmed, this start-up time will be increased to
14CK + 4.1 ms to ensure programming mode can be entered.
2. The device is shipped with this option selected.
54 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
55
4921C–AUTO–01/07
Table 4-14. Start-up Times for the 128 kHz Internal Oscillator
Start-up Time from Additional Delay from
Power Conditions Power-down and Power-save Reset SUT1..0
(1)
BOD enabled 6 CK 14CK 00
Fast rising power 6 CK 14CK + 4 ms 01
Slowly rising power 6 CK 14CK + 64 ms 10
Reserved 11
Note: 1. If the RSTDISBL fuse is programmed, this start-up time will be increased to
14CK + 4.1 ms to ensure programming mode can be entered.
Notes: 1. The frequency ranges are preliminary values. Actual values are TBD.
2. If 8 MHz frequency exceeds the specification of the device (depends on VCC), the CKDIV8
Fuse can be programmed in order to divide the internal frequency by 8. It must be ensured
that the resulting divided clock meets the frequency specification of the device.
NC XTAL2
EXTERNAL
CLOCK XTAL1
SIGNAL
GND
When this clock source is selected, start-up times are determined by the SUT Fuses as shown in
Table 4-16.
56 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
When applying an external clock, it is required to avoid sudden changes in the applied clock fre-
quency to ensure stable operation of the MCU. A variation in frequency of more than 2% from
one clock cycle to the next can lead to unpredictable behavior. If changes of more than 2% is
required, ensure that the MCU is kept in Reset during the changes.
Note that the System Clock Prescaler can be used to implement run-time changes of the internal
clock frequency while still ensuring stable operation. Refer to “System Clock Prescaler” on page
57 for details.
57
4921C–AUTO–01/07
To avoid unintentional changes of clock frequency, a special write procedure must be followed
to change the CLKPS bits:
1. Write the Clock Prescaler Change Enable (CLKPCE) bit to one and all other bits in
CLKPR to zero.
2. Within four cycles, write the desired value to CLKPS while writing a zero to CLKPCE.
Interrupts must be disabled when changing prescaler setting to make sure the write procedure is
not interrupted.
58 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
59
4921C–AUTO–01/07
4.7.1 Sleep Mode Control Register – SMCR
The Sleep Mode Control Register contains control bits for power management.
Bit 7 6 5 4 3 2 1 0
– – – – SM2 SM1 SM0 SE SMCR
Read/Write R R R R R/W R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0
Note: 1. Standby mode is only recommended for use with external crystals or resonators.
• Bit 0 – SE: Sleep Enable
The SE bit must be written to logic one to make the MCU enter the sleep mode when the
SLEEP instruction is executed. To avoid the MCU entering the sleep mode unless it is the
programmer’s purpose, it is recommended to write the Sleep Enable (SE) bit to one just
before the execution of the SLEEP instruction and to clear it immediately after waking up.
60 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
61
4921C–AUTO–01/07
4.7.6 Standby Mode
When the SM2..0 bits are 110 and an external crystal/resonator clock option is selected, the
SLEEP instruction makes the MCU enter Standby mode. This mode is identical to Power-down
with the exception that the Oscillator is kept running. From Standby mode, the device wakes up
in six clock cycles.
Table 4-19. Active Clock Domains and Wake-up Sources in the Different Sleep Modes
Active Clock Domains Oscillators Wake-up Sources
Source Enabled
Timer Oscillator
SPM/EEPROM
INT1, INT0 and
TWI Address
Pin Change
Main Clock
Other I/O
Enabled
clkFLASH
Timer2
Ready
Match
clkCPU
clkADC
clkASY
WDT
ADC
clkIO
Sleep Mode
Idle X X X X X(2) X X X X X X X
ADC Noise
X X X X(2) X(3) X X X X X
Reduction
Power-down X(3) X X
(3)
Power-save X X X X X X
(1) (3)
Standby X X X X
Notes: 1. Only recommended with external crystal or resonator selected as clock source.
2. If Timer/Counter2 is running in asynchronous mode.
3. For INT1 and INT0, only level interrupt.
62 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
63
4921C–AUTO–01/07
4.7.8 Minimizing Power Consumption
There are several possibilities to consider when trying to minimize the power consumption in an
AVR controlled system. In general, sleep modes should be used as much as possible, and the
sleep mode should be selected so that as few as possible of the device’s functions are operat-
ing. All functions not needed should be disabled. In particular, the following modules may need
special consideration when trying to achieve the lowest possible power consumption.
64 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
65
4921C–AUTO–01/07
4.8.2 Reset Sources
The ATA6602/ATA6603 has four sources of reset:
• Power-on Reset. The MCU is reset when the supply voltage is below the Power-on Reset
threshold (VPOT).
• External Reset. The MCU is reset when a low level is present on the RESET pin for longer
than the minimum pulse length.
• Watchdog System Reset. The MCU is reset when the Watchdog Timer period expires and
the Watchdog System Reset mode is enabled.
• Brown-out Reset. The MCU is reset when the supply voltage VCC is below the Brown-out
Reset threshold (VBOT) and the Brown-out Detector is enabled.
MCU Status
Register (MCUSR)
PORF
BORF
EXTRF
WDRF
VCC
Power-on Reset
Circuit
Brown-out
BODLEVEL [2..0] Reset Circuit
INTERNAL RESET
Pull-up Resistor
Reset Q
Circuit S
R
COUNTER RESET
SPIKE
RESET FILTER Watchdog
Timer
RSTDISBL
Watchdog
Oscillator
CKSEL[3:0]
SUT[1:0]
66 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
VPOT
VCC
VRST
RESET
tTOUT
TIME-OUT
INTERNAL
RESET
VPOT
VCC
VRST
RESET
tTOUT
TIME-OUT
INTERNAL
RESET
67
4921C–AUTO–01/07
4.8.4 External Reset
An External Reset is generated by a low level on the RESET pin. Reset pulses longer than the
minimum pulse width (see Table 4-20 on page 67) will generate a reset, even if the clock is not
running. Shorter pulses are not guaranteed to generate a reset. When the applied signal
reaches the Reset Threshold Voltage – VRST – on its positive edge, the delay counter starts the
MCU after the Time-out period – tTOUT – has expired. The External Reset can be disabled by the
RSTDISBL fuse, see Table 4-117 on page 299.
RESET
VRST
tTOUT
TIME-OUT
INTERNAL
RESET
Notes: 1. VBOT may be below nominal minimum operating voltage for some devices. For devices where
this is the case, the device is tested down to VCC = VBOT during the production test. This guar-
antees that a Brown-Out Reset will occur before VCC drops to a voltage where correct
operation of the microcontroller is no longer guaranteed. The test is performed using
BODLEVEL = 110 and BODLEVEL = 101 for ATA6602V/ATA6603V, and BODLEVEL = 101
and BODLEVEL = 101 for ATA6602/ATA6603.
68 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
VCC VBOT+
VBOT-
RESET
TIME-OUT tTOUT
INTERNAL
RESET
RESET
1 CK Cycle
WDT
TIME-OUT
RESET tTOUT
TIME-OUT
INTERNAL
RESET
69
4921C–AUTO–01/07
4.8.7 MCU Status Register – MCUSR
The MCU Status Register provides information on which reset source caused an MCU reset.
Bit 7 6 5 4 3 2 1 0
– – – – WDRF BORF EXTRF PORF MCUSR
Read/Write R R R R R/W R/W R/W R/W
Initial Value 0 0 0 0 See Bit Description
70 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
WATCHOG
128kHz PRESCALER
OSCILLATOR
OSC/2K
OSC/4K
OSC/8K
OSC/16K
OSC/32K
OSC/64K
OSC/128K
OSC/256K
OSC/512K
OSC/1024K
WDP0
WDP1
WATCHDOG WDP2
RESET
WDP3
WDE
MCU RESET
WDIF
INTERRUPT
WDIE
The Watchdog Timer (WDT) is a timer counting cycles of a separate on-chip 128 kHz oscillator.
The WDT gives an interrupt or a system reset when the counter reaches a given time-out value.
In normal operation mode, it is required that the system uses the WDR - Watchdog Timer Reset
- instruction to restart the counter before the time-out value is reached. If the system doesn't
restart the counter, an interrupt or system reset will be issued.
71
4921C–AUTO–01/07
In Interrupt mode, the WDT gives an interrupt when the timer expires. This interrupt can be used
to wake the device from sleep-modes, and also as a general system timer. One example is to
limit the maximum time allowed for certain operations, giving an interrupt when the operation
has run longer than expected. In System Reset mode, the WDT gives a reset when the timer
expires. This is typically used to prevent system hang-up in case of runaway code. The third
mode, Interrupt and System Reset mode, combines the other two modes by first giving an inter-
rupt and then switch to System Reset mode. This mode will for instance allow a safe shutdown
by saving critical parameters before a system reset.
The Watchdog always on (WDTON) fuse, if programmed, will force the Watchdog Timer to Sys-
tem Reset mode. With the fuse programmed the System Reset mode bit (WDE) and Interrupt
mode bit (WDIE) are locked to 1 and 0 respectively. To further ensure program security, alter-
ations to the Watchdog set-up must follow timed sequences. The sequence for clearing WDE
and changing time-out configuration is as follows:
1. In the same operation, write a logic one to the Watchdog change enable bit (WDCE)
and WDE. A logic one must be written to WDE regardless of the previous value of the
WDE bit.
2. Within the next four clock cycles, write the WDE and Watchdog prescaler bits (WDP) as
desired, but with the WDCE bit cleared. This must be done in one operation.
The following code example shows one assembly and one C function for turning off the Watch-
dog Timer. The example assumes that interrupts are controlled (e.g. by disabling interrupts
globally) so that no interrupts will occur during the execution of these functions.
72 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
73
4921C–AUTO–01/07
The following code example shows one assembly and one C function for changing the time-out
value of the Watchdog Timer.
74 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
75
4921C–AUTO–01/07
• Bit 5, 2..0 - WDP3..0: Watchdog Timer Prescaler 3, 2, 1 and 0
The WDP3..0 bits determine the Watchdog Timer prescaling when the Watchdog Timer is
running. The different prescaling values and their corresponding time-out periods are shown
in Table 4-25.
4.9 Interrupts
This section describes the specifics of the interrupt handling as performed in
ATA6602/ATA6603. For a general explanation of the AVR interrupt handling, refer to “Reset and
Interrupt Handling” on page 36.
The interrupt vectors in ATA6602 and ATA6603 are generally the same, with the following
differences:
• Each Interrupt Vector occupies two instruction words in ATA6603, and one instruction word in
ATA6602.
• In ATA6602 and ATA6603, the Reset Vector is affected by the BOOTRST fuse, and the
Interrupt Vector start address is affected by the IVSEL bit in MCUCR.
76 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
77
4921C–AUTO–01/07
Table 4-27. Reset and Interrupt Vectors Placement in ATA6602(1)
BOOTRST IVSEL Reset Address Interrupt Vectors Start Address
1 0 0x000 0x001
1 1 0x000 Boot Reset Address + 0x001
0 0 Boot Reset Address 0x001
0 1 Boot Reset Address Boot Reset Address + 0x001
Note: 1. The Boot Reset Address is shown in Table 4-107 on page 295. For the BOOTRST Fuse “1”
means unprogrammed while “0” means programmed.
The most typical and general program setup for the Reset and Interrupt Vector Addresses in
ATA6602 is:
Address Labels Code Comments
0x000 rjmp RESET ; Reset Handler
0x001 rjmp EXT_INT0 ; IRQ0 Handler
0x002 rjmp EXT_INT1 ; IRQ1 Handler
0x003 rjmp PCINT0 ; PCINT0 Handler
0x004 rjmp PCINT1 ; PCINT1 Handler
0x005 rjmp PCINT2 ; PCINT2 Handler
0x006 rjmp WDT ; Watchdog Timer Handler
0x007 rjmp TIM2_COMPA ; Timer2 Compare A Handler
0X008 rjmp TIM2_COMPB ; Timer2 Compare B Handler
0x009 rjmp TIM2_OVF ; Timer2 Overflow Handler
0x00A rjmp TIM1_CAPT ; Timer1 Capture Handler
0x00B rjmp TIM1_COMPA ; Timer1 Compare A Handler
0x00C rjmp TIM1_COMPB ; Timer1 Compare B Handler
0x00D rjmp TIM1_OVF ; Timer1 Overflow Handler
0x00E rjmp TIM0_COMPA ; Timer0 Compare A Handler
0x00F rjmp TIM0_COMPB ; Timer0 Compare B Handler
0x010 rjmp TIM0_OVF ; Timer0 Overflow Handler
0x011 rjmp SPI_STC ; SPI Transfer Complete Handler
0x012 rjmp USART_RXC ; USART, RX Complete Handler
0x013 rjmp USART_UDRE ; USART, UDR Empty Handler
0x014 rjmp USART_TXC ; USART, TX Complete Handler
0x015 rjmp ADC ; ADC Conversion Complete Handler
0x016 rjmp EE_RDY ; EEPROM Ready Handler
0x017 rjmp ANA_COMP ; Analog Comparator Handler
0x018 rjmp TWI ; 2-wire Serial Interface Handler
0x019 rjmp SPM_RDY ; Store Program Memory Ready Handler
;
0x01ARESET: ldi r16, high(RAMEND); Main program start
0x01B out SPH,r16 ; Set Stack Pointer to top of RAM
0x01C ldi r16, low(RAMEND)
0x01D out SPL,r16
0x01E sei ; Enable interrupts
0x01F <instr> xxx
... ... ... ...
78 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
When the BOOTRST Fuse is unprogrammed, the Boot section size set to 2K bytes and the
IVSEL bit in the MCUCR Register is set before any interrupts are enabled, the most typical and
general program setup for the Reset and Interrupt Vector Addresses in ATA6602 is:
Address Labels Code Comments
0x000 RESET: ldi r16,high(RAMEND); Main program start
0x001 out SPH,r16 ; Set Stack Pointer to top of RAM
0x002 ldi r16,low(RAMEND)
0x003 out SPL,r16
0x004 sei ; Enable interrupts
0x005 <instr> xxx
;
.org 0xC01
0xC01 rjmp EXT_INT0 ; IRQ0 Handler
0xC02 rjmp EXT_INT1 ; IRQ1 Handler
... ... ... ;
0xC19 rjmp SPM_RDY ; Store Program Memory Ready Handler
When the BOOTRST Fuse is programmed and the Boot section size set to 2K bytes, the most
typical and general program setup for the Reset and Interrupt Vector Addresses in ATA6602 is:
Address Labels Code Comments
.org 0x001
0x001 rjmp EXT_INT0 ; IRQ0 Handler
0x002 rjmp EXT_INT1 ; IRQ1 Handler
... ... ... ;
0x019 rjmp SPM_RDY ; Store Program Memory Ready Handler
;
.org 0xC00
0xC00 RESET: ldi r16,high(RAMEND); Main program start
0xC01 out SPH,r16 ; Set Stack Pointer to top of RAM
0xC02 ldi r16,low(RAMEND)
0xC03 out SPL,r16
0xC04 sei ; Enable interrupts
0xC05 <instr> xxx
79
4921C–AUTO–01/07
When the BOOTRST Fuse is programmed, the Boot section size set to 2K bytes and the IVSEL
bit in the MCUCR Register is set before any interrupts are enabled, the most typical and general
program setup for the Reset and Interrupt Vector Addresses in ATA6602 is:
80 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Note: 1. The Boot Reset Address is shown in Table 4-107 on page 295. For the BOOTRST Fuse “1”
means unprogrammed while “0” means programmed.
81
4921C–AUTO–01/07
The most typical and general program setup for the Reset and Interrupt Vector Addresses in
ATA6603 is:
Address Labels Code Comments
0x0000 jmp RESET ; Reset Handler
0x0002 jmp EXT_INT0 ; IRQ0 Handler
0x0004 jmp EXT_INT1 ; IRQ1 Handler
0x0006 jmp PCINT0 ; PCINT0 Handler
0x0008 jmp PCINT1 ; PCINT1 Handler
0x000A jmp PCINT2 ; PCINT2 Handler
0x000C jmp WDT ; Watchdog Timer Handler
0x000E jmp TIM2_COMPA ; Timer2 Compare A Handler
0x0010 jmp TIM2_COMPB ; Timer2 Compare B Handler
0x0012 jmp TIM2_OVF ; Timer2 Overflow Handler
0x0014 jmp TIM1_CAPT ; Timer1 Capture Handler
0x0016 jmp TIM1_COMPA ; Timer1 Compare A Handler
0x0018 jmp TIM1_COMPB ; Timer1 Compare B Handler
0x001A jmp TIM1_OVF ; Timer1 Overflow Handler
0x001C jmp TIM0_COMPA ; Timer0 Compare A Handler
0x001E jmp TIM0_COMPB ; Timer0 Compare B Handler
0x0020 jmp TIM0_OVF ; Timer0 Overflow Handler
0x0022 jmp SPI_STC ; SPI Transfer Complete Handler
0x0024 jmp USART_RXC ; USART, RX Complete Handler
0x0026 jmp USART_UDRE ; USART, UDR Empty Handler
0x0028 jmp USART_TXC ; USART, TX Complete Handler
0x002A jmp ADC ; ADC Conversion Complete Handler
0x002C jmp EE_RDY ; EEPROM Ready Handler
0x002E jmp ANA_COMP ; Analog Comparator Handler
0x0030 jmp TWI ; 2-wire Serial Interface Handler
0x0032 jmp SPM_RDY ; Store Program Memory Ready Handler
;
0x0033RESET: ldi r16, high(RAMEND); Main program start
0x0034 out SPH,r16 ; Set Stack Pointer to top of RAM
0x0035 ldi r16, low(RAMEND)
0x0036 out SPL,r16
0x0037 sei ; Enable interrupts
0x0038 <instr> xxx
... ... ... ...
82 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
When the BOOTRST Fuse is unprogrammed, the Boot section size set to 2K bytes and the
IVSEL bit in the MCUCR Register is set before any interrupts are enabled, the most typical and
general program setup for the Reset and Interrupt Vector Addresses in ATA6603 is:
Address Labels Code Comments
0x0000 RESET: ldi r16,high(RAMEND); Main program start
0x0001 out SPH,r16 ; Set Stack Pointer to top of RAM
0x0002 ldi r16,low(RAMEND)
0x0003 out SPL,r16
0x0004 sei ; Enable interrupts
0x0005 <instr> xxx
;
.org 0xC02
0x1C02 jmp EXT_INT0 ; IRQ0 Handler
0x1C04 jmp EXT_INT1 ; IRQ1 Handler
... ... ... ;
0x1C32 jmp SPM_RDY ; Store Program Memory Ready Handler
When the BOOTRST Fuse is programmed and the Boot section size set to 2K bytes, the most
typical and general program setup for the Reset and Interrupt Vector Addresses in ATA6603 is:
Address Labels Code Comments
.org 0x0002
0x0002 jmp EXT_INT0 ; IRQ0 Handler
0x0004 jmp EXT_INT1 ; IRQ1 Handler
... ... ... ;
0x0032 jmp SPM_RDY ; Store Program Memory Ready Handler
;
.org 0x1C00
0x1C00 RESET: ldi r16,high(RAMEND); Main program start
0x1C01 out SPH,r16 ; Set Stack Pointer to top of RAM
0x1C02 ldi r16,low(RAMEND)
0x1C03 out SPL,r16
0x1C04 sei ; Enable interrupts
0x1C05 <instr> xxx
83
4921C–AUTO–01/07
When the BOOTRST Fuse is programmed, the Boot section size set to 2K bytes and the IVSEL
bit in the MCUCR Register is set before any interrupts are enabled, the most typical and general
program setup for the Reset and Interrupt Vector Addresses in ATA6603 is:
Address Labels Code Comments
;
.org 0x1C00
0x1C00 jmp RESET ; Reset handler
0x1C02 jmp EXT_INT0 ; IRQ0 Handler
0x1C04 jmp EXT_INT1 ; IRQ1 Handler
... ... ... ;
0x1C32 jmp SPM_RDY ; Store Program Memory Ready Handler
;
0x1C33 RESET: ldi r16,high(RAMEND); Main program start
0x1C34 out SPH,r16 ; Set Stack Pointer to top of RAM
0x1C35 ldi r16,low(RAMEND)
0x1C36 out SPL,r16
0x1C37 sei ; Enable interrupts
0x1C38 <instr> xxx
4.9.2.1 Moving Interrupts Between Application and Boot Space, ATA6602 and ATA6603
The MCU Control Register controls the placement of the Interrupt Vector table.
84 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
4.10 I/O-Ports
4.10.1 Introduction
All AVR ports have true Read-Modify-Write functionality when used as general digital I/O ports.
This means that the direction of one port pin can be changed without unintentionally changing
the direction of any other pin with the SBI and CBI instructions. The same applies when chang-
ing drive value (if configured as output) or enabling/disabling of pull-up resistors (if configured as
input). Each output buffer has symmetrical drive characteristics with both high sink and source
capability. The pin driver is strong enough to drive LED displays directly. All port pins have indi-
vidually selectable pull-up resistors with a supply-voltage invariant resistance. All I/O pins have
protection diodes to both VCC and Ground as indicated in Figure 4-22 on page 86. Refer to
“Electrical Characteristics” on page 317 for a complete list of parameters.
85
4921C–AUTO–01/07
Figure 4-22. I/O Pin Equivalent Schematic
Rpu
Pxn Logic
Cpin
See Figure
"General Digital I/O" for
Details
All registers and bit references in this section are written in general form. A lower case “x” repre-
sents the numbering letter for the port, and a lower case “n” represents the bit number. However,
when using the register or bit defines in a program, the precise form must be used. For example,
PORTB3 for bit no. 3 in Port B, here documented generally as PORTxn. The physical I/O Regis-
ters and bit locations are listed in “Register Description for I/O Ports” on page 104.
Three I/O memory address locations are allocated for each port, one each for the Data Register
– PORTx, Data Direction Register – DDRx, and the Port Input Pins – PINx. The Port Input Pins
I/O location is read only, while the Data Register and the Data Direction Register are read/write.
However, writing a logic one to a bit in the PINx Register, will result in a toggle in the correspond-
ing bit in the Data Register. In addition, the Pull-up Disable – PUD bit in MCUCR disables the
pull-up function for all pins in all ports when set.
Using the I/O port as General Digital I/O is described in “Ports as General Digital I/O” on page
87. Most port pins are multiplexed with alternate functions for the peripheral features on the
device. How each alternate function interferes with the port pin is described in “Alternate Port
Functions” on page 92. Refer to the individual module sections for a full description of the alter-
nate functions.
Note that enabling the alternate function of some of the port pins does not affect the use of the
other pins in the port as general digital I/O.
86 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
PUD
Q D
DDxn
QCLR
WDx
RESET
RDx
1
Pxn Q D
DATA BUS
PORTxn 0
QCLR
RESET
WPx
WRx
SLEEP RRx
SYNCHRONIZER
RPx
D Q D Q
PINxn
L Q Q
clk I/O
Note: 1. WRx, WPx, WDx, RRx, RPx, and RDx are common to all pins within the same port. clkI/O,
SLEEP, and PUD are common to all ports.
87
4921C–AUTO–01/07
4.10.2.2 Toggling the Pin
Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn.
Note that the SBI instruction can be used to toggle one single bit in a port.
88 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
SYSTEM CLK
SYNC LATCH
PINxn
Consider the clock period starting shortly after the first falling edge of the system clock. The latch
is closed when the clock is low, and goes transparent when the clock is high, as indicated by the
shaded region of the “SYNC LATCH” signal. The signal value is latched when the system clock
goes low. It is clocked into the PINxn Register at the succeeding positive clock edge. As indi-
cated by the two arrows tpd,max and tpd,min, a single signal transition on the pin will be delayed
between ½ and 1½ system clock period depending upon the time of assertion.
When reading back a software assigned pin value, a nop instruction must be inserted as indi-
cated in Figure 4-25. The out instruction sets the “SYNC LATCH” signal at the positive edge of
the clock. In this case, the delay tpd through the synchronizer is 1 system clock period.
SYSTEM CLK
r16 0xFF
SYNC LATCH
PINxn
89
4921C–AUTO–01/07
The following code example shows how to set port B pins 0 and 1 high, 2 and 3 low, and define
the port pins from 4 to 7 as input with pull-ups assigned to port pins 6 and 7. The resulting pin
values are read back again, but as previously discussed, a nop instruction is included to be able
to read back the value recently assigned to some of the pins.
Note: 1. For the assembly program, two temporary registers are used to minimize the time from
pull-ups are set on pins 0, 1, 6, and 7, until the direction bits are correctly set, defining bit 2 and
3 as low and redefining bits 0 and 1 as strong high drivers.
90 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
91
4921C–AUTO–01/07
4.10.3 Alternate Port Functions
Most port pins have alternate functions in addition to being general digital I/Os. Figure 4-26
shows how the port pin control signals from the simplified Figure 4-23 on page 87 can be over-
ridden by alternate functions. The overriding signals may not be present in all port pins, but the
figure serves as a generic description applicable to all port pins in the AVR microcontroller
family.
PUOExn
PUOVxn
1
0
PUD
DDOExn
DDOVxn
1
0 Q D
DDxn
Q CLR
WDx
PVOExn RESET
RDx
PVOVxn
DATA BUS
1 1
Pxn
0 Q D 0
PORTxn
PTOExn
Q CLR
DIEOExn
WPx
DIEOVxn RESET
1 WRx
RRx
0 SLEEP
SYNCHRONIZER
RPx
D SETQ D Q
PINxn
L CLR Q
CLR Q
clk I/O
DIxn
AIOxn
Note: 1. WRx, WPx, WDx, RRx, RPx, and RDx are common to all pins within the same port. clkI/O,
SLEEP, and PUD are common to all ports. All other signals are unique for each pin.
92 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Table 4-31 summarizes the function of the overriding signals. The pin and port indexes from Fig-
ure 4-26 on page 92 are not shown in the succeeding tables. The overriding signals are
generated internally in the modules having the alternate function.
The following subsections shortly describe the alternate functions for each port, and relate the
overriding signals to the alternate function. Refer to the alternate function description for further
details.
93
4921C–AUTO–01/07
4.10.3.1 MCU Control Register – MCUCR
Bit 7 6 5 4 3 2 1 0
– – – PUD – – IVSEL IVCE MCUCR
Read/Write R R R R/W R R R/W R/W
Initial Value 0 0 0 0 0 0 0 0
94 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
95
4921C–AUTO–01/07
• MOSI/OC2/PCINT3 – Port B, Bit 3
MOSI: SPI Master Data output, Slave Data input for SPI channel. When the SPI is enabled
as a Slave, this pin is configured as an input regardless of the setting of DDB3. When the
SPI is enabled as a Master, the data direction of this pin is controlled by DDB3. When the
pin is forced by the SPI to be an input, the pull-up can still be controlled by the PORTB3 bit.
OC2, Output Compare Match Output: The PB3 pin can serve as an external output for the
Timer/Counter2 Compare Match. The PB3 pin has to be configured as an output (DDB3 set
(one)) to serve this function. The OC2 pin is also the output pin for the PWM mode timer
function.
PCINT3: Pin Change Interrupt source 3. The PB3 pin can serve as an external interrupt
source.
• SS/OC1B/PCINT2 – Port B, Bit 2
SS: Slave Select input. When the SPI is enabled as a Slave, this pin is configured as an
input regardless of the setting of DDB2. As a Slave, the SPI is activated when this pin is
driven low. When the SPI is enabled as a Master, the data direction of this pin is controlled
by DDB2. When the pin is forced by the SPI to be an input, the pull-up can still be controlled
by the PORTB2 bit.
OC1B, Output Compare Match output: The PB2 pin can serve as an external output for the
Timer/Counter1 Compare Match B. The PB2 pin has to be configured as an output (DDB2
set (one)) to serve this function. The OC1B pin is also the output pin for the PWM mode
timer function.
PCINT2: Pin Change Interrupt source 2. The PB2 pin can serve as an external interrupt
source.
• OC1A/PCINT1 – Port B, Bit 1
OC1A, Output Compare Match output: The PB1 pin can serve as an external output for the
Timer/Counter1 Compare Match A. The PB1 pin has to be configured as an output (DDB1
set (one)) to serve this function. The OC1A pin is also the output pin for the PWM mode
timer function.
PCINT1: Pin Change Interrupt source 1. The PB1 pin can serve as an external interrupt
source.
• ICP1/CLKO/PCINT0 – Port B, Bit 0
ICP1, Input Capture Pin: The PB0 pin can act as an Input Capture Pin for Timer/Counter1.
CLKO, Divided System Clock: The divided system clock can be output on the PB0 pin. The
divided system clock will be output if the CKOUT Fuse is programmed, regardless of the
PORTB0 and DDB0 settings. It will also be output during reset.
PCINT0: Pin Change Interrupt source 0. The PB0 pin can serve as an external interrupt
source.
Table 4-33 on page 97 and Table 4-34 on page 97 relate the alternate functions of Port B to
the overriding signals shown in Figure 4-26 on page 92. SPI MSTR INPUT and SPI SLAVE
OUTPUT constitute the MISO signal, while MOSI is divided into SPI MSTR OUTPUT and
SPI SLAVE INPUT.
96 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Notes: 1. INTRC means that one of the internal RC Oscillators are selected (by the CKSEL fuses),
EXTCK means that external clock is selected (by the CKSEL fuses).
97
4921C–AUTO–01/07
4.10.3.3 Alternate Functions of Port C
The Port C pins with alternate functions are shown in Table 4-35.
98 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
99
4921C–AUTO–01/07
Table 4-36 and Table 4-37 relate the alternate functions of Port C to the overriding signals
shown in Figure 4-26 on page 92.
Note: 1. When enabled, the 2-wire Serial Interface enables slew-rate controls on the output pins PC4
and PC5. This is not shown in the figure. In addition, spike filters are connected between the
AIO outputs shown in the port figure and the digital logic of the TWI module.
100 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
101
4921C–AUTO–01/07
• T1/OC0B/PCINT21 – Port D, Bit 5
T1, Timer/Counter1 counter source.
OC0B, Output Compare Match output: The PD5 pin can serve as an external output for the
Timer/Counter0 Compare Match B. The PD5 pin has to be configured as an output (DDD5
set (one)) to serve this function. The OC0B pin is also the output pin for the PWM mode
timer function.
PCINT21: Pin Change Interrupt source 21. The PD5 pin can serve as an external interrupt
source.
• XCK/T0/PCINT20 – Port D, Bit 4
XCK, USART external clock.
T0, Timer/Counter0 counter source.
PCINT20: Pin Change Interrupt source 20. The PD4 pin can serve as an external interrupt
source.
• INT1/OC2B/PCINT19 – Port D, Bit 3
INT1, External Interrupt source 1: The PD3 pin can serve as an external interrupt source.
OC2B, Output Compare Match output: The PD3 pin can serve as an external output for the
Timer/Counter0 Compare Match B. The PD3 pin has to be configured as an output (DDD3
set (one)) to serve this function. The OC2B pin is also the output pin for the PWM mode
timer function.
PCINT19: Pin Change Interrupt source 19. The PD3 pin can serve as an external interrupt
source.
• INT0/PCINT18 – Port D, Bit 2
INT0, External Interrupt source 0: The PD2 pin can serve as an external interrupt source.
PCINT18: Pin Change Interrupt source 18. The PD2 pin can serve as an external interrupt
source.
• TXD/PCINT17 – Port D, Bit 1
TXD, Transmit Data (Data output pin for the USART). When the USART Transmitter is
enabled, this pin is configured as an output regardless of the value of DDD1.
PCINT17: Pin Change Interrupt source 17. The PD1 pin can serve as an external interrupt
source.
• RXD/PCINT16 – Port D, Bit 0
RXD, Receive Data (Data input pin for the USART). When the USART Receiver is enabled
this pin is configured as an input regardless of the value of DDD0. When the USART forces
this pin to be an input, the pull-up can still be controlled by the PORTD0 bit.
PCINT16: Pin Change Interrupt source 16. The PD0 pin can serve as an external interrupt
source.
102 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Table 4-39 and Table 4-40 relate the alternate functions of Port D to the overriding signals
shown in Figure 4-26 on page 92.
103
4921C–AUTO–01/07
4.10.4 Register Description for I/O Ports
104 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
105
4921C–AUTO–01/07
4.11.1 External Interrupt Control Register A – EICRA
The External Interrupt Control Register A contains control bits for interrupt sense control.
Bit 7 6 5 4 3 2 1 0
– – – – ISC11 ISC10 ISC01 ISC00 EICRA
Read/Write R R R R R/W R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0
106 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
107
4921C–AUTO–01/07
4.11.4 Pin Change Interrupt Control Register - PCICR
Bit 7 6 5 4 3 2 1 0
– – – – – PCIE2 PCIE1 PCIE0 PCICR
Read/Write R R R R R R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0
Bit 7 6 5 4 3 2 1 0
– – – – – PCIF2 PCIF1 PCIF0 PCIFR
Read/Write R R R R R R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0
108 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
109
4921C–AUTO–01/07
4.12 8-bit Timer/Counter0 with PWM
Timer/Counter0 is a general purpose 8-bit Timer/Counter module, with two independent Output
Compare Units, and with PWM support. It allows accurate program execution timing (event man-
agement) and wave generation. The main features are:
• Two Independent Output Compare Units
• Double Buffered Output Compare Registers
• Clear Timer on Compare Match (Auto Reload)
• Glitch Free, Phase Correct Pulse Width Modulator (PWM)
• Variable PWM Period
• Frequency Generator
• Three Independent Interrupt Sources (TOV0, OCF0A, and OCF0B)
4.12.1 Overview
A simplified block diagram of the 8-bit Timer/Counter is shown in Figure 4-27. The device-spe-
cific I/O Register and bit locations are listed in the “8-bit Timer/Counter Register Description” on
page 122.
The PRTIM0 bit in “Power Reduction Register - PRR” on page 63 must be written to zero to
enable Timer/Counter0 module.
Timer/Counter
TCNTn
= = 0
OCnA
(Int.Req.)
Waveform
= OCnA
Generation
OCRnA
Fixed OCnB
TOP (Int.Req.)
DATA BUS
Value
Waveform
= OCnB
Generation
OCRnB
TCCRnA TCCRnB
110 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
4.12.1.1 Definitions
Many register and bit references in this section are written in general form. A lower case “n”
replaces the Timer/Counter number, in this case 0. A lower case “x” replaces the Output Com-
pare Unit, in this case Compare Unit A or Compare Unit B. However, when using the register or
bit defines in a program, the precise form must be used, i.e., TCNT0 for accessing
Timer/Counter0 counter value and so on.
The definitions in Table 4-43 are also used extensively throughout the document.
4.12.1.2 Registers
The Timer/Counter (TCNT0) and Output Compare Registers (OCR0A and OCR0B) are 8-bit
registers. Interrupt request (abbreviated to Int.Req. in the figure) signals are all visible in the
Timer Interrupt Flag Register (TIFR0). All interrupts are individually masked with the Timer Inter-
rupt Mask Register (TIMSK0). TIFR0 and TIMSK0 are not shown in the figure.
The Timer/Counter can be clocked internally, via the prescaler, or by an external clock source on
the T0 pin. The Clock Select logic block controls which clock source and edge the Timer/Counter
uses to increment (or decrement) its value. The Timer/Counter is inactive when no clock source
is selected. The output from the Clock Select logic is referred to as the timer clock (clkT0).
The double buffered Output Compare Registers (OCR0A and OCR0B) are compared with the
Timer/Counter value at all times. The result of the compare can be used by the Waveform Gen-
erator to generate a PWM or variable frequency output on the Output Compare pins (OC0A and
OC0B). See “Using the Output Compare Unit” on page 140 for details. The compare match
event will also set the Compare Flag (OCF0A or OCF0B) which can be used to generate an Out-
put Compare interrupt request.
111
4921C–AUTO–01/07
4.12.3 Counter Unit
The main part of the 8-bit Timer/Counter is the programmable bi-directional counter unit. Figure
4-28 shows a block diagram of the counter and its surroundings.
Clock Select
count Edge
Tn
clear clkTn Detector
TCNTn Control Logic
direction
(From Prescaler)
bottom top
112 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
OCRnx TCNTn
= (8-bit Comparator)
OCFnx (Int.Req.)
top
bottom
Waveform Generator OCnx
FOCn
WGMn1:0 COMnX1:0
The OCR0x Registers are double buffered when using any of the Pulse Width Modulation
(PWM) modes. For the normal and Clear Timer on Compare (CTC) modes of operation, the dou-
ble buffering is disabled. The double buffering synchronizes the update of the OCR0x Compare
Registers to either top or bottom of the counting sequence. The synchronization prevents the
occurrence of odd-length, non-symmetrical PWM pulses, thereby making the output glitch-free.
The OCR0x Register access may seem complex, but this is not case. When the double buffering
is enabled, the CPU has access to the OCR0x Buffer Register, and if double buffering is dis-
abled the CPU will access the OCR0x directly.
113
4921C–AUTO–01/07
4.12.4.2 Compare Match Blocking by TCNT0 Write
All CPU write operations to the TCNT0 Register will block any compare match that occur in the
next timer clock cycle, even when the timer is stopped. This feature allows OCR0x to be initial-
ized to the same value as TCNT0 without triggering an interrupt when the Timer/Counter clock is
enabled.
COMnx1
COMnx0 Waveform
D Q
FOCnx Generator
1
OCnx
OCnx Pin
0
D Q
DATA BUS
PORT
D Q
DDR
clkI/O
114 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The general I/O port function is overridden by the Output Compare (OC0x) from the Waveform
Generator if either of the COM0x1:0 bits are set. However, the OC0x pin direction (input or out-
put) is still controlled by the Data Direction Register (DDR) for the port pin. The Data Direction
Register bit for the OC0x pin (DDR_OC0x) must be set as output before the OC0x value is visi-
ble on the pin. The port override function is independent of the Waveform Generation mode.
The design of the Output Compare pin logic allows initialization of the OC0x state before the out-
put is enabled. Note that some COM0x1:0 bit settings are reserved for certain modes of
operation (see “8-bit Timer/Counter Register Description” on page 122).
115
4921C–AUTO–01/07
4.12.6.2 Clear Timer on Compare Match (CTC) Mode
In Clear Timer on Compare or CTC mode (WGM02:0 = 2), the OCR0A Register is used to
manipulate the counter resolution. In CTC mode the counter is cleared to zero when the counter
value (TCNT0) matches the OCR0A. The OCR0A defines the top value for the counter, hence
also its resolution. This mode allows greater control of the compare match output frequency. It
also simplifies the operation of counting external events.
The timing diagram for the CTC mode is shown in Figure 4-31. The counter value (TCNT0)
increases until a compare match occurs between TCNT0 and OCR0A, and then counter
(TCNT0) is cleared.
TCNTn
OCn
(COMnx1:0 = 1)
(Toggle)
Period 1 2 3 4
An interrupt can be generated each time the counter value reaches the TOP value by using the
OCF0A Flag. If the interrupt is enabled, the interrupt handler routine can be used for updating
the TOP value. However, changing TOP to a value close to BOTTOM when the counter is run-
ning with none or a low prescaler value must be done with care since the CTC mode does not
have the double buffering feature. If the new value written to OCR0A is lower than the current
value of TCNT0, the counter will miss the compare match. The counter will then have to count to
its maximum value (0xFF) and wrap around starting at 0x00 before the compare match can
occur.
For generating a waveform output in CTC mode, the OC0A output can be set to toggle its logical
level on each compare match by setting the Compare Output mode bits to toggle mode
(COM0A1:0 = 1). The OC0A value will not be visible on the port pin unless the data direction for
the pin is set to output. The waveform generated will have a maximum frequency of fOC0 =
fclk_I/O/2 when OCR0A is set to zero (0x00). The waveform frequency is defined by the following
equation:
f clk_I/O
f OCnx = ------------------------------------------------------
-
2 ⋅ N ⋅ ( 1 + OCRnx )
The N variable represents the prescale factor (1, 8, 64, 256, or 1024).
As for the Normal mode of operation, the TOV0 Flag is set in the same timer clock cycle that the
counter counts from MAX to 0x00.
116 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
OCRnx Interrupt
Flag Set
TCNTn
OCn (COMnx1:0 = 2)
OCn (COMnx1:0 = 3)
Period 1 2 3 4 5 6 7
The Timer/Counter Overflow Flag (TOV0) is set each time the counter reaches TOP. If the inter-
rupt is enabled, the interrupt handler routine can be used for updating the compare value.
In fast PWM mode, the compare unit allows generation of PWM waveforms on the OC0x pins.
Setting the COM0x1:0 bits to two will produce a non-inverted PWM and an inverted PWM output
can be generated by setting the COM0x1:0 to three: Setting the COM0A1:0 bits to one allows
the OC0A pin to toggle on Compare Matches if the WGM02 bit is set. This option is not available
for the OC0B pin (see Table 4-48 on page 123). The actual OC0x value will only be visible on
the port pin if the data direction for the port pin is set as output. The PWM waveform is gener-
ated by setting (or clearing) the OC0x Register at the compare match between OCR0x and
TCNT0, and clearing (or setting) the OC0x Register at the timer clock cycle the counter is
cleared (changes from TOP to BOTTOM).
117
4921C–AUTO–01/07
The PWM frequency for the output can be calculated by the following equation:
f clk_I/O
f OCnxPWM = --------------------
-
N ⋅ 256
The N variable represents the prescale factor (1, 8, 64, 256, or 1024).
The extreme values for the OCR0A Register represents special cases when generating a PWM
waveform output in the fast PWM mode. If the OCR0A is set equal to BOTTOM, the output will
be a narrow spike for each MAX+1 timer clock cycle. Setting the OCR0A equal to MAX will result
in a constantly high or low output (depending on the polarity of the output set by the COM0A1:0
bits.)
A frequency (with 50% duty cycle) waveform output in fast PWM mode can be achieved by set-
ting OC0x to toggle its logical level on each compare match (COM0x1:0 = 1). The waveform
generated will have a maximum frequency of fOC0 = fclk_I/O/2 when OCR0A is set to zero. This
feature is similar to the OC0A toggle in CTC mode, except the double buffer feature of the Out-
put Compare unit is enabled in the fast PWM mode.
118 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
OCnx Interrupt
Flag Set
OCRnx Update
TOVn Interrupt
Flag Set
TCNTn
OCn (COMnx1:0 = 2)
OCn (COMnx1:0 = 3)
Period 1 2 3
The Timer/Counter Overflow Flag (TOV0) is set each time the counter reaches BOTTOM. The
Interrupt Flag can be used to generate an interrupt each time the counter reaches the BOTTOM
value.
In phase correct PWM mode, the compare unit allows generation of PWM waveforms on the
OC0x pins. Setting the COM0x1:0 bits to two will produce a non-inverted PWM. An inverted
PWM output can be generated by setting the COM0x1:0 to three: Setting the COM0A0 bits to
one allows the OC0A pin to toggle on Compare Matches if the WGM02 bit is set. This option is
not available for the OC0B pin (see Table 4-49 on page 124). The actual OC0x value will only be
visible on the port pin if the data direction for the port pin is set as output. The PWM waveform is
generated by clearing (or setting) the OC0x Register at the compare match between OCR0x and
TCNT0 when the counter increments, and setting (or clearing) the OC0x Register at compare
match between OCR0x and TCNT0 when the counter decrements. The PWM frequency for the
output when using phase correct PWM can be calculated by the following equation:
f clk_I/O
f OCnxPCPWM = --------------------
-
N ⋅ 510
The N variable represents the prescale factor (1, 8, 64, 256, or 1024).
The extreme values for the OCR0A Register represent special cases when generating a PWM
waveform output in the phase correct PWM mode. If the OCR0A is set equal to BOTTOM, the
output will be continuously low and if set equal to MAX the output will be continuously high for
non-inverted PWM mode. For inverted PWM the output will have the opposite logic values.
119
4921C–AUTO–01/07
At the very start of period 2 in Figure 4-33 on page 119 OCnx has a transition from high to low
even though there is no Compare Match. The point of this transition is to guarantee symmetry
around BOTTOM. There are two cases that give a transition without Compare Match.
• OCRnx changes its value from MAX, like in Figure 4-33 on page 119. When the OCR0A
value is MAX the OCn pin value is the same as the result of a down-counting Compare
Match. To ensure symmetry around BOTTOM the OCnx value at MAX must correspond to
the result of an up-counting Compare Match.
• The timer starts counting from a value higher than the one in OCRnx, and for that reason
misses the Compare Match and hence the OCnx change that would have happened on the
way up.
clkI/O
clkTN
(clkI/O/1)
TOVn
Figure 4-35 shows the same timing data, but with the prescaler enabled.
clkI/O
clkTN
(clkI/O/8)
TOVn
120 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Figure 4-36 shows the setting of OCF0B in all modes and OCF0A in all modes except CTC
mode and PWM mode, where OCR0A is TOP.
Figure 4-36. Timer/Counter Timing Diagram, Setting of OCF0x, with Prescaler (fclk_I/O/8)
clkI/O
clkTn
(clkI/O/8)
OCFnx
Figure 4-37 shows the setting of OCF0A and the clearing of TCNT0 in CTC mode and fast PWM
mode where OCR0A is TOP.
Figure 4-37. Timer/Counter Timing Diagram, Clear Timer on Compare Match Mode, with Pres-
caler (fclk_I/O/8)
clkI/O
clkTN
(clkI/O/8)
TCNTn
TOP - 1 TOP BOTTOM BOTTOM + 1
(CTC)
OCRnx TOP
OCFnx
121
4921C–AUTO–01/07
4.12.8 8-bit Timer/Counter Register Description
Table 4-45 shows the COM0A1:0 bit functionality when the WGM01:0 bits are set to fast PWM
mode.
Note: 1. A special case occurs when OCR0A equals TOP and COM0A1 is set. In this case, the Com-
pare Match is ignored, but the set or clear is done at TOP. See “Fast PWM Mode” on page 117
for more details.
122 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Table 4-46 shows the COM0A1:0 bit functionality when the WGM02:0 bits are set to phase cor-
rect PWM mode.
Note: 1. A special case occurs when OCR0A equals TOP and COM0A1 is set. In this case, the Com-
pare Match is ignored, but the set or clear is done at TOP. See “Phase Correct PWM Mode” on
page 146 for more details.
• Bits 5:4 – COM0B1:0: Compare Match Output B Mode
These bits control the Output Compare pin (OC0B) behavior. If one or both of the
COM0B1:0 bits are set, the OC0B output overrides the normal port functionality of the I/O
pin it is connected to. However, note that the Data Direction Register (DDR) bit correspond-
ing to the OC0B pin must be set in order to enable the output driver.
When OC0B is connected to the pin, the function of the COM0B1:0 bits depends on the
WGM02:0 bit setting. Table 4-47 shows the COM0B1:0 bit functionality when the WGM02:0
bits are set to a normal or CTC mode (non-PWM).
Table 4-48 shows the COM0B1:0 bit functionality when the WGM02:0 bits are set to fast PWM
mode.
Table 4-48. Compare Output Mode, Fast PWM Mode(1)
COM0B1 COM0B0 Description
0 0 Normal port operation, OC0B disconnected.
0 1 Reserved
1 0 Clear OC0B on Compare Match, set OC0B at TOP
1 1 Set OC0B on Compare Match, clear OC0B at TOP
Note: 1. A special case occurs when OCR0B equals TOP and COM0B1 is set. In this case, the Com-
pare Match is ignored, but the set or clear is done at TOP. See “Fast PWM Mode” on page 117
for more details.
123
4921C–AUTO–01/07
Table 4-49 shows the COM0B1:0 bit functionality when the WGM02:0 bits are set to phase cor-
rect PWM mode.
Note: 1. A special case occurs when OCR0B equals TOP and COM0B1 is set. In this case, the Com-
pare Match is ignored, but the set or clear is done at TOP. See “Phase Correct PWM Mode” on
page 118 for more details.
• Bits 3, 2 – Res: Reserved Bits
These bits are reserved bits in the ATA6602/ATA6603 and will always read as zero.
• Bits 1:0 – WGM01:0: Waveform Generation Mode
Combined with the WGM02 bit found in the TCCR0B Register, these bits control the count-
ing sequence of the counter, the source for maximum (TOP) counter value, and what type of
waveform generation to be used (see Table 4-50). Modes of operation supported by the
Timer/Counter unit are: Normal mode (counter), Clear Timer on Compare Match (CTC)
mode, and two types of Pulse Width Modulation (PWM) modes (see “Modes of Operation”
on page 115).
124 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
125
4921C–AUTO–01/07
Table 4-51. Clock Select Bit Description
CS02 CS01 CS00 Description
0 0 0 No clock source (Timer/Counter stopped)
0 0 1 clkI/O/(No prescaling)
0 1 0 clkI/O/8 (From prescaler)
0 1 1 clkI/O/64 (From prescaler)
1 0 0 clkI/O/256 (From prescaler)
1 0 1 clkI/O/1024 (From prescaler)
1 1 0 External clock source on T0 pin. Clock on falling edge.
1 1 1 External clock source on T0 pin. Clock on rising edge.
If external pin modes are used for the Timer/Counter0, transitions on the T0 pin will clock the
counter even if the pin is configured as an output. This feature allows software control of the
counting.
The Timer/Counter Register gives direct access, both for read and write operations, to the
Timer/Counter unit 8-bit counter. Writing to the TCNT0 Register blocks (removes) the Compare
Match on the following timer clock. Modifying the counter (TCNT0) while the counter is running,
introduces a risk of missing a Compare Match between TCNT0 and the OCR0x Registers.
The Output Compare Register A contains an 8-bit value that is continuously compared with the
counter value (TCNT0). A match can be used to generate an Output Compare interrupt, or to
generate a waveform output on the OC0A pin.
The Output Compare Register B contains an 8-bit value that is continuously compared with the
counter value (TCNT0). A match can be used to generate an Output Compare interrupt, or to
generate a waveform output on the OC0B pin.
126 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
127
4921C–AUTO–01/07
• Bit 0 – TOV0: Timer/Counter0 Overflow Flag
The bit TOV0 is set when an overflow occurs in Timer/Counter0. TOV0 is cleared by hard-
ware when executing the corresponding interrupt handling vector. Alternatively, TOV0 is
cleared by writing a logic one to the flag. When the SREG I-bit, TOIE0 (Timer/Counter0
Overflow Interrupt Enable), and TOV0 are set, the Timer/Counter0 Overflow interrupt is
executed.
The setting of this flag is dependent of the WGM02:0 bit setting. Refer to Table 4-50 on page
124 and “Waveform Generation Mode Bit Description” on page 124.
128 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Tn D Q D Q D Q Tn_sync
(To Clock
Select Logic)
LE
clkI/O
The synchronization and edge detector logic introduces a delay of 2.5 to 3.5 system clock cycles
from an edge has been applied to the T1/T0 pin to the counter is updated.
Enabling and disabling of the clock input must be done when T1/T0 has been stable for at least
one system clock cycle, otherwise it is a risk that a false Timer/Counter clock pulse is generated.
Each half period of the external clock applied must be longer than one system clock cycle to
ensure correct sampling. The external clock must be guaranteed to have less than half the sys-
tem clock frequency (fExtClk < fclk_I/O/2) given a 50/50% duty cycle. Since the edge detector uses
sampling, the maximum frequency of an external clock it can detect is half the sampling fre-
quency (Nyquist sampling theorem). However, due to variation of the system clock frequency
and duty cycle caused by Oscillator source (crystal, resonator, and capacitors) tolerances, it is
recommended that maximum frequency of an external clock source is less than fclk_I/O/2.5.
An external clock source can not be prescaled.
CK/1024
CK/256
CK/8
PSRSYNC
T0
Synchronization
T1
Synchronization 0 0
CS10 CS00
CS11 CS01
CS12 CS02
Note: 1. The synchronization logic on the input pins (T1/T0) is shown in Figure 4-38.
129
4921C–AUTO–01/07
4.13.4 General Timer/Counter Control Register – GTCCR
Bit 7 6 5 4 3 2 1 0
TSM – – – – – PSRASY PSRSYNC GTCCR
Read/Write R/W R R R R R R/W R/W
Initial Value 0 0 0 0 0 0 0 0
4.14.1 Overview
Most register and bit references in this section are written in general form. A lower case “n”
replaces the Timer/Counter number, and a lower case “x” replaces the Output Compare unit
channel. However, when using the register or bit defines in a program, the precise form must be
used, i.e., TCNT1 for accessing Timer/Counter1 counter value and so on.
A simplified block diagram of the 16-bit Timer/Counter is shown in Figure 4-40 on page 131. The
device-specific I/O Register and bit locations are listed in the “16-bit Timer/Counter Register
Description” on page 152.
The PRTIM1 bit in “Power Reduction Register - PRR” on page 63 must be written to zero to
enable Timer/Counter1 module.
130 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Edge
Tn
Detector
TOP BOTTOM
(From Prescaler)
Timer/Counter
TCNTn
= =0
OCnA
(Int.Req.)
Waveform
= OCnA
Generation
OCRnA
Fixed OCnB
TOP (Int.Req.)
Values
Waveform
OCnB
DATA BUS
= Generation
Edge Noise
ICRn
Detector Canceler
ICPn
TCCRnA TCCRnB
Note: 1. Refer to Table 4-32 on page 94 and Table 4-38 on page 101 for Timer/Counter1 pin
placement and description.
4.14.1.1 Registers
The Timer/Counter (TCNT1), Output Compare Registers (OCR1A/B), and Input Capture Regis-
ter (ICR1) are all 16-bit registers. Special procedures must be followed when accessing the
16-bit registers. These procedures are described in the section “Accessing 16-bit Registers” on
page 132. The Timer/Counter Control Registers (TCCR1A/B) are 8-bit registers and have no
CPU access restrictions. Interrupt requests (abbreviated to Int.Req. in the figure) signals are all
visible in the Timer Interrupt Flag Register (TIFR1). All interrupts are individually masked with
the Timer Interrupt Mask Register (TIMSK1). TIFR1 and TIMSK1 are not shown in the figure.
The Timer/Counter can be clocked internally, via the prescaler, or by an external clock source on
the T1 pin. The Clock Select logic block controls which clock source and edge the Timer/Counter
uses to increment (or decrement) its value. The Timer/Counter is inactive when no clock source
is selected. The output from the Clock Select logic is referred to as the timer clock (clkT1).
131
4921C–AUTO–01/07
The double buffered Output Compare Registers (OCR1A/B) are compared with the
Timer/Counter value at all time. The result of the compare can be used by the Waveform Gener-
ator to generate a PWM or variable frequency output on the Output Compare pin (OC1A/B), see
“Output Compare Units” on page 139. The compare match event will also set the Compare
Match Flag (OCF1A/B) which can be used to generate an Output Compare interrupt request.
The Input Capture Register can capture the Timer/Counter value at a given external (edge trig-
gered) event on either the Input Capture pin (ICP1) or on the Analog Comparator pins (see
“Analog Comparator” on page 259). The Input Capture unit includes a digital filtering unit (Noise
Canceler) for reducing the chance of capturing noise spikes.
The TOP value, or maximum Timer/Counter value, can in some modes of operation be defined
by either the OCR1A Register, the ICR1 Register, or by a set of fixed values. When using
OCR1A as TOP value in a PWM mode, the OCR1A Register can not be used for generating a
PWM output. However, the TOP value will in this case be double buffered allowing the TOP
value to be changed in run time. If a fixed TOP value is required, the ICR1 Register can be used
as an alternative, freeing the OCR1A to be used as PWM output.
4.14.1.2 Definitions
The following definitions are used extensively throughout the section:
Table 4-52. General Counter Definitions
BOTTOM The counter reaches the BOTTOM when it becomes 0x0000.
MAX The counter reaches its MAXimum when it becomes 0xFFFF (decimal 65535).
The counter reaches the TOP when it becomes equal to the highest value in the count
sequence. The TOP value can be assigned to be one of the fixed values: 0x00FF, 0x01FF,
TOP
or 0x03FF, or to the value stored in the OCR1A or ICR1 Register. The assignment is depen-
dent of the mode of operation.
132 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
133
4921C–AUTO–01/07
Assembly Code Example(1)
TIM16_ReadTCNT1:
; Save global interrupt flag
in r18,SREG
; Disable interrupts
cli
; Read TCNT1 into r17:r16
in r16,TCNT1L
in r17,TCNT1H
; Restore global interrupt flag
out SREG,r18
ret
C Code Example(1)
unsigned int TIM16_ReadTCNT1( void )
{
unsigned char sreg;
unsigned int i;
/* Save global interrupt flag */
sreg = SREG;
/* Disable interrupts */
_CLI();
/* Read TCNT1 into i */
i = TCNT1;
/* Restore global interrupt flag */
SREG = sreg;
return i;
}
Note: 1. The example code assumes that the part specific header file is included.
For I/O Registers located in extended I/O map, “IN”, “OUT”, “SBIS”, “SBIC”, “CBI”, and “SBI”
instructions must be replaced with instructions that allow access to extended I/O. Typically
“LDS” and “STS” combined with “SBRS”, “SBRC”, “SBR”, and “CBR”.
The assembly code example returns the TCNT1 value in the r17:r16 register pair.
134 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The following code examples show how to do an atomic write of the TCNT1 Register contents.
Writing any of the OCR1A/B or ICR1 Registers can be done by using the same principle.
Note: 1. The example code assumes that the part specific header file is included.
For I/O Registers located in extended I/O map, “IN”, “OUT”, “SBIS”, “SBIC”, “CBI”, and “SBI”
instructions must be replaced with instructions that allow access to extended I/O. Typically
“LDS” and “STS” combined with “SBRS”, “SBRC”, “SBR”, and “CBR”.
The assembly code example requires that the r17:r16 register pair contains the value to be writ-
ten to TCNT1.
135
4921C–AUTO–01/07
4.14.3 Timer/Counter Clock Sources
The Timer/Counter can be clocked by an internal or an external clock source. The clock source
is selected by the Clock Select logic which is controlled by the Clock Select (CS12:0) bits
located in the Timer/Counter control Register B (TCCR1B). For details on clock sources and
prescaler (see “Timer/Counter0 and Timer/Counter1 Prescalers” on page 128).
TEMP (8-bit)
Clock Select
Count Edge
Tn
TCNTnH (8-bit) TCNTnL (8-bit) Clear clkTn Detector
Control Logic
Direction
TCNTn (16-bit Counter)
(From Prescaler)
TOP BOTTOM
136 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The counting sequence is determined by the setting of the Waveform Generation mode bits
(WGM13:0) located in the Timer/Counter Control Registers A and B (TCCR1A and TCCR1B).
There are close connections between how the counter behaves (counts) and how waveforms
are generated on the Output Compare outputs OC1x. For more details about advanced counting
sequences and waveform generation (see “Modes of Operation” on page 142).
The Timer/Counter Overflow Flag (TOV1) is set according to the mode of operation selected by
the WGM13:0 bits. TOV1 can be used for generating a CPU interrupt.
TEMP (8-bit)
Analog
Comparator Noise Edge
ICFn (Int.Req.)
Canceler Detector
ICPn
When a change of the logic level (an event) occurs on the Input Capture pin (ICP1), alternatively
on the Analog Comparator output (ACO), and this change confirms to the setting of the edge
detector, a capture will be triggered. When a capture is triggered, the 16-bit value of the counter
(TCNT1) is written to the Input Capture Register (ICR1). The Input Capture Flag (ICF1) is set at
the same system clock as the TCNT1 value is copied into ICR1 Register. If enabled (ICIE1 = 1),
the Input Capture Flag generates an Input Capture interrupt. The ICF1 Flag is automatically
cleared when the interrupt is executed. Alternatively the ICF1 Flag can be cleared by software
by writing a logical one to its I/O bit location.
137
4921C–AUTO–01/07
Reading the 16-bit value in the Input Capture Register (ICR1) is done by first reading the low
byte (ICR1L) and then the high byte (ICR1H). When the low byte is read the high byte is copied
into the high byte temporary register (TEMP). When the CPU reads the ICR1H I/O location it will
access the TEMP Register.
The ICR1 Register can only be written when using a Waveform Generation mode that utilizes
the ICR1 Register for defining the counter’s TOP value. In these cases the Waveform Genera-
tion mode (WGM13:0) bits must be set before the TOP value can be written to the ICR1
Register. When writing the ICR1 Register the high byte must be written to the ICR1H I/O location
before the low byte is written to ICR1L.
For more information on how to access the 16-bit registers refer to “Accessing 16-bit Registers”
on page 132.
138 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Using the Input Capture unit in any mode of operation when the TOP value (resolution) is
actively changed during operation, is not recommended.
Measurement of an external signal’s duty cycle requires that the trigger edge is changed after
each capture. Changing the edge sensing must be done as early as possible after the ICR1
Register has been read. After a change of the edge, the Input Capture Flag (ICF1) must be
cleared by software (writing a logical one to the I/O bit location). For measuring frequency only,
the clearing of the ICF1 Flag is not required (if an interrupt handler is used).
TEMP (8-bit)
OCRnxH Buf. (8-bit) OCRnxL Buf. (8-bit) TCNTnH (8-bit) TCNTnL (8-bit)
= (16-bit Comparator)
OCFnx (Int.Req.)
TOP
Waveform Generator OCnx
BOTTOM
WGMn3:0 COMnx1:0
139
4921C–AUTO–01/07
The OCR1x Register is double buffered when using any of the twelve Pulse Width Modulation
(PWM) modes. For the Normal and Clear Timer on Compare (CTC) modes of operation, the
double buffering is disabled. The double buffering synchronizes the update of the OCR1x Com-
pare Register to either TOP or BOTTOM of the counting sequence. The synchronization
prevents the occurrence of odd-length, non-symmetrical PWM pulses, thereby making the out-
put glitch-free.
The OCR1x Register access may seem complex, but this is not case. When the double buffering
is enabled, the CPU has access to the OCR1x Buffer Register, and if double buffering is dis-
abled the CPU will access the OCR1x directly. The content of the OCR1x (Buffer or Compare)
Register is only changed by a write operation (the Timer/Counter does not update this register
automatically as the TCNT1 and ICR1 Register). Therefore OCR1x is not read via the high byte
temporary register (TEMP). However, it is a good practice to read the low byte first as when
accessing other 16-bit registers. Writing the OCR1x Registers must be done via the TEMP Reg-
ister since the compare of all 16 bits is done continuously. The high byte (OCR1xH) has to be
written first. When the high byte I/O location is written by the CPU, the TEMP Register will be
updated by the value written. Then when the low byte (OCR1xL) is written to the lower eight bits,
the high byte will be copied into the upper 8-bits of either the OCR1x buffer or OCR1x Compare
Register in the same system clock cycle.
For more information of how to access the 16-bit registers refer to “Accessing 16-bit Registers”
on page 132.
140 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
COMnx1
COMnx0 Waveform
D Q
FOCnx Generator
1
OCnx
OCnx Pin
0
D Q
DATA BUS
PORT
D Q
DDR
clkI/O
The general I/O port function is overridden by the Output Compare (OC1x) from the Waveform
Generator if either of the COM1x1:0 bits are set. However, the OC1x pin direction (input or out-
put) is still controlled by the Data Direction Register (DDR) for the port pin. The Data Direction
Register bit for the OC1x pin (DDR_OC1x) must be set as output before the OC1x value is visi-
ble on the pin. The port override function is generally independent of the Waveform Generation
mode, but there are some exceptions. Refer to Table 4-53 on page 152, Table 4-54 on page 152
and Table 4-55 on page 153 for details.
The design of the Output Compare pin logic allows initialization of the OC1x state before the out-
put is enabled. Note that some COM1x1:0 bit settings are reserved for certain modes of
operation (see “16-bit Timer/Counter Register Description” on page 152).
The COM1x1:0 bits have no effect on the Input Capture unit.
141
4921C–AUTO–01/07
4.14.7.1 Compare Output Mode and Waveform Generation
The Waveform Generator uses the COM1x1:0 bits differently in normal, CTC, and PWM modes.
For all modes, setting the COM1x1:0 = 0 tells the Waveform Generator that no action on the
OC1x Register is to be performed on the next compare match. For compare output actions in the
non-PWM modes refer to Table 4-53 on page 152. For fast PWM mode refer to Table 4-54 on
page 152, and for phase correct and phase and frequency correct PWM refer to Table 4-55 on
page 153.
A change of the COM1x1:0 bits state will have effect at the first compare match after the bits are
written. For non-PWM modes, the action can be forced to have immediate effect by using the
FOC1x strobe bits.
142 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
TCNTn
OCnA
(COMnA1:0 = 1)
(Toggle)
Period 1 2 3 4
An interrupt can be generated at each time the counter value reaches the TOP value by either
using the OCF1A or ICF1 Flag according to the register used to define the TOP value. If the
interrupt is enabled, the interrupt handler routine can be used for updating the TOP value. How-
ever, changing the TOP to a value close to BOTTOM when the counter is running with none or a
low prescaler value must be done with care since the CTC mode does not have the double buff-
ering feature. If the new value written to OCR1A or ICR1 is lower than the current value of
TCNT1, the counter will miss the compare match. The counter will then have to count to its max-
imum value (0xFFFF) and wrap around starting at 0x0000 before the compare match can occur.
In many cases this feature is not desirable. An alternative will then be to use the fast PWM mode
using OCR1A for defining TOP (WGM13:0 = 15) since the OCR1A then will be double buffered.
For generating a waveform output in CTC mode, the OC1A output can be set to toggle its logical
level on each compare match by setting the Compare Output mode bits to toggle mode
(COM1A1:0 = 1). The OC1A value will not be visible on the port pin unless the data direction for
the pin is set to output (DDR_OC1A = 1). The waveform generated will have a maximum fre-
quency of fOC1A = fclk_I/O/2 when OCR1A is set to zero (0x0000). The waveform frequency is
defined by the following equation:
f clk_I/O
f OCnA = -------------------------------------------------------
-
2 ⋅ N ⋅ ( 1 + OCRnA )
The N variable represents the prescaler factor (1, 8, 64, 256, or 1024).
As for the Normal mode of operation, the TOV1 Flag is set in the same timer clock cycle that the
counter counts from MAX to 0x0000.
143
4921C–AUTO–01/07
4.14.8.3 Fast PWM Mode
The fast Pulse Width Modulation or fast PWM mode (WGM13:0 = 5, 6, 7, 14, or 15) provides a
high frequency PWM waveform generation option. The fast PWM differs from the other PWM
options by its single-slope operation. The counter counts from BOTTOM to TOP then restarts
from BOTTOM. In non-inverting Compare Output mode, the Output Compare (OC1x) is set on
the compare match between TCNT1 and OCR1x, and cleared at TOP. In inverting Compare
Output mode output is cleared on compare match and set at TOP. Due to the single-slope oper-
ation, the operating frequency of the fast PWM mode can be twice as high as the phase correct
and phase and frequency correct PWM modes that use dual-slope operation. This high fre-
quency makes the fast PWM mode well suited for power regulation, rectification, and DAC
applications. High frequency allows physically small sized external components (coils, capaci-
tors), hence reduces total system cost.
The PWM resolution for fast PWM can be fixed to 8-, 9-, or 10-bit, or defined by either ICR1 or
OCR1A. The minimum resolution allowed is 2-bit (ICR1 or OCR1A set to 0x0003), and the max-
imum resolution is 16-bit (ICR1 or OCR1A set to MAX). The PWM resolution in bits can be
calculated by using the following equation:
log ( TOP + 1 )
R FPWM = -----------------------------------
log ( 2 )
In fast PWM mode the counter is incremented until the counter value matches either one of the
fixed values 0x00FF, 0x01FF, or 0x03FF (WGM13:0 = 5, 6, or 7), the value in ICR1 (WGM13:0 =
14), or the value in OCR1A (WGM13:0 = 15). The counter is then cleared at the following timer
clock cycle. The timing diagram for the fast PWM mode is shown in Figure 4-46. The figure
shows fast PWM mode when OCR1A or ICR1 is used to define TOP. The TCNT1 value is in the
timing diagram shown as a histogram for illustrating the single-slope operation. The diagram
includes non-inverted and inverted PWM outputs. The small horizontal line marks on the TCNT1
slopes represent compare matches between OCR1x and TCNT1. The OC1x Interrupt Flag will
be set when a compare match occurs.
TCNTn
OCnx (COMnx1:0 = 2)
OCnx (COMnx1:0 = 3)
Period 1 2 3 4 5 6 7 8
144 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The Timer/Counter Overflow Flag (TOV1) is set each time the counter reaches TOP. In addition
the OC1A or ICF1 Flag is set at the same timer clock cycle as TOV1 is set when either OCR1A
or ICR1 is used for defining the TOP value. If one of the interrupts are enabled, the interrupt han-
dler routine can be used for updating the TOP and compare values.
When changing the TOP value the program must ensure that the new TOP value is higher or
equal to the value of all of the Compare Registers. If the TOP value is lower than any of the
Compare Registers, a compare match will never occur between the TCNT1 and the OCR1x.
Note that when using fixed TOP values the unused bits are masked to zero when any of the
OCR1x Registers are written.
The procedure for updating ICR1 differs from updating OCR1A when used for defining the TOP
value. The ICR1 Register is not double buffered. This means that if ICR1 is changed to a low
value when the counter is running with none or a low prescaler value, there is a risk that the new
ICR1 value written is lower than the current value of TCNT1. The result will then be that the
counter will miss the compare match at the TOP value. The counter will then have to count to the
MAX value (0xFFFF) and wrap around starting at 0x0000 before the compare match can occur.
The OCR1A Register however, is double buffered. This feature allows the OCR1A I/O location
to be written anytime. When the OCR1A I/O location is written the value written will be put into
the OCR1A Buffer Register. The OCR1A Compare Register will then be updated with the value
in the Buffer Register at the next timer clock cycle the TCNT1 matches TOP. The update is done
at the same timer clock cycle as the TCNT1 is cleared and the TOV1 Flag is set.
Using the ICR1 Register for defining TOP works well when using fixed TOP values. By using
ICR1, the OCR1A Register is free to be used for generating a PWM output on OC1A. However,
if the base PWM frequency is actively changed (by changing the TOP value), using the OCR1A
as TOP is clearly a better choice due to its double buffer feature.
In fast PWM mode, the compare units allow generation of PWM waveforms on the OC1x pins.
Setting the COM1x1:0 bits to two will produce a non-inverted PWM and an inverted PWM output
can be generated by setting the COM1x1:0 to three (see Table on page 152). The actual OC1x
value will only be visible on the port pin if the data direction for the port pin is set as output
(DDR_OC1x). The PWM waveform is generated by setting (or clearing) the OC1x Register at
the compare match between OCR1x and TCNT1, and clearing (or setting) the OC1x Register at
the timer clock cycle the counter is cleared (changes from TOP to BOTTOM).
The PWM frequency for the output can be calculated by the following equation:
f clk_I/O
f OCnxPWM = -------------------------------------
N ⋅ ( 1 + TOP )
The N variable represents the prescaler divider (1, 8, 64, 256, or 1024).
The extreme values for the OCR1x Register represents special cases when generating a PWM
waveform output in the fast PWM mode. If the OCR1x is set equal to BOTTOM (0x0000) the out-
put will be a narrow spike for each TOP+1 timer clock cycle. Setting the OCR1x equal to TOP
will result in a constant high or low output (depending on the polarity of the output set by the
COM1x1:0 bits).
145
4921C–AUTO–01/07
A frequency (with 50% duty cycle) waveform output in fast PWM mode can be achieved by set-
ting OC1A to toggle its logical level on each compare match (COM1A1:0 = 1). This applies only
if OCR1A is used to define the TOP value (WGM13:0 = 15). The waveform generated will have
a maximum frequency of fOC1A = fclk_I/O/2 when OCR1A is set to zero (0x0000). This feature is
similar to the OC1A toggle in CTC mode, except the double buffer feature of the Output Com-
pare unit is enabled in the fast PWM mode.
log ( TOP + 1 )
R PCPWM = -----------------------------------
log ( 2 )
In phase correct PWM mode the counter is incremented until the counter value matches either
one of the fixed values 0x00FF, 0x01FF, or 0x03FF (WGM13:0 = 1, 2, or 3), the value in ICR1
(WGM13:0 = 10), or the value in OCR1A (WGM13:0 = 11). The counter has then reached the
TOP and changes the count direction. The TCNT1 value will be equal to TOP for one timer clock
cycle. The timing diagram for the phase correct PWM mode is shown on Figure 4-47 on page
147. The figure shows phase correct PWM mode when OCR1A or ICR1 is used to define TOP.
The TCNT1 value is in the timing diagram shown as a histogram for illustrating the dual-slope
operation. The diagram includes non-inverted and inverted PWM outputs. The small horizontal
line marks on the TCNT1 slopes represent compare matches between OCR1x and TCNT1. The
OC1x Interrupt Flag will be set when a compare match occurs.
146 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
TCNTn
OCnx (COMnx1:0 = 2)
OCnx (COMnx1:0 = 3)
Period 1 2 3 4
The Timer/Counter Overflow Flag (TOV1) is set each time the counter reaches BOTTOM. When
either OCR1A or ICR1 is used for defining the TOP value, the OC1A or ICF1 Flag is set accord-
ingly at the same timer clock cycle as the OCR1x Registers are updated with the double buffer
value (at TOP). The Interrupt Flags can be used to generate an interrupt each time the counter
reaches the TOP or BOTTOM value.
When changing the TOP value the program must ensure that the new TOP value is higher or
equal to the value of all of the Compare Registers. If the TOP value is lower than any of the
Compare Registers, a compare match will never occur between the TCNT1 and the OCR1x.
Note that when using fixed TOP values, the unused bits are masked to zero when any of the
OCR1x Registers are written. As the third period shown in Figure 4-47 illustrates, changing the
TOP actively while the Timer/Counter is running in the phase correct mode can result in an
unsymmetrical output. The reason for this can be found in the time of update of the OCR1x Reg-
ister. Since the OCR1x update occurs at TOP, the PWM period starts and ends at TOP. This
implies that the length of the falling slope is determined by the previous TOP value, while the
length of the rising slope is determined by the new TOP value. When these two values differ the
two slopes of the period will differ in length. The difference in length gives the unsymmetrical
result on the output.
It is recommended to use the phase and frequency correct mode instead of the phase correct
mode when changing the TOP value while the Timer/Counter is running. When using a static
TOP value there are practically no differences between the two modes of operation.
In phase correct PWM mode, the compare units allow generation of PWM waveforms on the
OC1x pins. Setting the COM1x1:0 bits to two will produce a non-inverted PWM and an inverted
PWM output can be generated by setting the COM1x1:0 to three. The actual OC1x value will
only be visible on the port pin if the data direction for the port pin is set as output (DDR_OC1x).
The PWM waveform is generated by setting (or clearing) the OC1x Register at the compare
match between OCR1x and TCNT1 when the counter increments, and clearing (or setting) the
OC1x Register at compare match between OCR1x and TCNT1 when the counter decrements.
147
4921C–AUTO–01/07
The PWM frequency for the output when using phase correct PWM can be calculated by the fol-
lowing equation:
f clk_I/O
f OCnxPCPWM = ---------------------------------
2 ⋅ N ⋅ TOP
The N variable represents the prescaler divider (1, 8, 64, 256, or 1024).
The extreme values for the OCR1x Register represent special cases when generating a PWM
waveform output in the phase correct PWM mode. If the OCR1x is set equal to BOTTOM the
output will be continuously low and if set equal to TOP the output will be continuously high for
non-inverted PWM mode. For inverted PWM the output will have the opposite logic values. If
OCR1A is used to define the TOP value (WGM13:0 = 11) and COM1A1:0 = 1, the OC1A output
will toggle with a 50% duty cycle.
log ( TOP + 1 )
R PFCPWM = -----------------------------------
log ( 2 )
In phase and frequency correct PWM mode the counter is incremented until the counter value
matches either the value in ICR1 (WGM13:0 = 8), or the value in OCR1A (WGM13:0 = 9). The
counter has then reached the TOP and changes the count direction. The TCNT1 value will be
equal to TOP for one timer clock cycle. The timing diagram for the phase correct and frequency
correct PWM mode is shown on Figure 4-48 on page 149. The figure shows phase and fre-
quency correct PWM mode when OCR1A or ICR1 is used to define TOP. The TCNT1 value is in
the timing diagram shown as a histogram for illustrating the dual-slope operation. The diagram
includes non-inverted and inverted PWM outputs. The small horizontal line marks on the TCNT1
slopes represent compare matches between OCR1x and TCNT1. The OC1x Interrupt Flag will
be set when a compare match occurs.
148 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Figure 4-48. Phase and Frequency Correct PWM Mode, Timing Diagram
OCnA Interrupt Flag Set
or ICFn Interrupt Flag Set
(Interrupt on TOP)
OCRnx/TOP Updateand
TOVn Interrupt Flag Set
(Interrupt on Bottom)
TCNTn
OCnx (COMnx1:0 = 2)
OCnx (COMnx1:0 = 3)
Period 1 2 3 4
The Timer/Counter Overflow Flag (TOV1) is set at the same timer clock cycle as the OCR1x
Registers are updated with the double buffer value (at BOTTOM). When either OCR1A or ICR1
is used for defining the TOP value, the OC1A or ICF1 Flag set when TCNT1 has reached TOP.
The Interrupt Flags can then be used to generate an interrupt each time the counter reaches the
TOP or BOTTOM value.
When changing the TOP value the program must ensure that the new TOP value is higher or
equal to the value of all of the Compare Registers. If the TOP value is lower than any of the
Compare Registers, a compare match will never occur between the TCNT1 and the OCR1x.
As Figure 4-48 shows the output generated is, in contrast to the phase correct mode, symmetri-
cal in all periods. Since the OCR1x Registers are updated at BOTTOM, the length of the rising
and the falling slopes will always be equal. This gives symmetrical output pulses and is therefore
frequency correct.
Using the ICR1 Register for defining TOP works well when using fixed TOP values. By using
ICR1, the OCR1A Register is free to be used for generating a PWM output on OC1A. However,
if the base PWM frequency is actively changed by changing the TOP value, using the OCR1A as
TOP is clearly a better choice due to its double buffer feature.
In phase and frequency correct PWM mode, the compare units allow generation of PWM wave-
forms on the OC1x pins. Setting the COM1x1:0 bits to two will produce a non-inverted PWM and
an inverted PWM output can be generated by setting the COM1x1:0 to three (see Table on
page 153). The actual OC1x value will only be visible on the port pin if the data direction for the
port pin is set as output (DDR_OC1x). The PWM waveform is generated by setting (or clearing)
the OC1x Register at the compare match between OCR1x and TCNT1 when the counter incre-
ments, and clearing (or setting) the OC1x Register at compare match between OCR1x and
TCNT1 when the counter decrements. The PWM frequency for the output when using phase
and frequency correct PWM can be calculated by the following equation:
f clk_I/O
f OCnxPFCPWM = ---------------------------------
2 ⋅ N ⋅ TOP
The N variable represents the prescaler divider (1, 8, 64, 256, or 1024).
149
4921C–AUTO–01/07
The extreme values for the OCR1x Register represents special cases when generating a PWM
waveform output in the phase correct PWM mode. If the OCR1x is set equal to BOTTOM the
output will be continuously low and if set equal to TOP the output will be set to high for
non-inverted PWM mode. For inverted PWM the output will have the opposite logic values. If
OCR1A is used to define the TOP value (WGM13:0 = 9) and COM1A1:0 = 1, the OC1A output
will toggle with a 50% duty cycle.
clkI/O
clkTn
(clkI/O/1)
OCFnx
Figure 4-50 shows the same timing data, but with the prescaler enabled.
Figure 4-50. Timer/Counter Timing Diagram, Setting of OCF1x, with Prescaler (fclk_I/O/8)
clkI/O
clkTn
(clkI/O/8)
OCFnx
150 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Figure 4-51 shows the count sequence close to TOP in various modes. When using phase and
frequency correct PWM mode the OCR1x Register is updated at BOTTOM. The timing diagrams
will be the same, but TOP should be replaced by BOTTOM, TOP-1 by BOTTOM+1 and so on.
The same renaming applies for modes that set the TOV1 Flag at BOTTOM.
clkI/O
clkTn
(clkI/O/1)
TCNTn
TOP - 1 TOP BOTTOM BOTTOM + 1
(CTC and FPWM)
TCNTn
TOP - 1 TOP TOP - 1 TOP - 2
(PC and PFC PWM)
TOVn (FPWM)
and ICFn (if used
as TOP)
OCRnx
Old OCRnx Value New OCRnx Value
(Update at TOP)
Figure 4-52 shows the same timing data, but with the prescaler enabled.
clkI/O
clkTn
(clkI/O/8)
TCNTn
(CTC and FPWM) TOP - 1 TOP BOTTOM BOTTOM + 1
TCNTn
TOP - 1 TOP TOP - 1 TOP - 2
(PC and PFC PWM)
TOVn (FPWM)
and ICFn (if used
as TOP)
OCRnx
Old OCRnx Value New OCRnx Value
(Update at TOP)
151
4921C–AUTO–01/07
4.14.10 16-bit Timer/Counter Register Description
Table 4-54 shows the COM1x1:0 bit functionality when the WGM13:0 bits are set to the fast
PWM mode.
Note: 1. A special case occurs when OCR1A/OCR1B equals TOP and COM1A1/COM1B1 is set. In
this case the compare match is ignored, but the set or clear is done at TOP. See “Fast PWM
Mode” on page 144 for more details.
152 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Table 4-55 shows the COM1x1:0 bit functionality when the WGM13:0 bits are set to the phase
correct or the phase and frequency correct, PWM mode.
Table 4-55. Compare Output Mode, Phase Correct and Phase and Frequency Correct
PWM(1)
COM1A1/COM1B1 COM1A0/COM1B0 Description
0 0 Normal port operation, OC1A/OC1B disconnected.
WGM13:0 = 8, 9, 10 or 11: Toggle OC1A on Compare
Match, OC1B disconnected (normal port operation). For
0 1
all other WGM1 settings, normal port operation,
OC1A/OC1B disconnected.
Clear OC1A/OC1B on Compare Match when
1 0 up-counting. Set OC1A/OC1B on Compare Match when
downcounting.
Set OC1A/OC1B on Compare Match when up-counting.
1 1 Clear OC1A/OC1B on Compare Match when
downcounting.
Note: 1. A special case occurs when OCR1A/OCR1B equals TOP and COM1A1/COM1B1 is set. See
“Phase Correct PWM Mode” on page 146 for more details.
• Bit 1:0 – WGM11:0: Waveform Generation Mode
Combined with the WGM13:2 bits found in the TCCR1B Register, these bits control the
counting sequence of the counter, the source for maximum (TOP) counter value, and what
type of waveform generation to be used (see Table 4-56 on page 154). Modes of operation
supported by the Timer/Counter unit are: Normal mode (counter), Clear Timer on Compare
match (CTC) mode, and three types of Pulse Width Modulation (PWM) modes (see “Modes
of Operation” on page 142).
153
4921C–AUTO–01/07
Table 4-56. Waveform Generation Mode Bit Description(1)
WGM12 WGM11 WGM10 Timer/Counter Mode of Update of TOV1 Flag
Mode WGM13 (CTC1) (PWM11) (PWM10) Operation TOP OCR1x at Set on
0 0 0 0 0 Normal 0xFFFF Immediate MAX
1 0 0 0 1 PWM, Phase Correct, 8-bit 0x00FF TOP BOTTOM
2 0 0 1 0 PWM, Phase Correct, 9-bit 0x01FF TOP BOTTOM
3 0 0 1 1 PWM, Phase Correct, 10-bit 0x03FF TOP BOTTOM
4 0 1 0 0 CTC OCR1A Immediate MAX
5 0 1 0 1 Fast PWM, 8-bit 0x00FF TOP TOP
6 0 1 1 0 Fast PWM, 9-bit 0x01FF TOP TOP
7 0 1 1 1 Fast PWM, 10-bit 0x03FF TOP TOP
PWM, Phase and Frequency
8 1 0 0 0 ICR1 BOTTOM BOTTOM
Correct
PWM, Phase and Frequency
9 1 0 0 1 OCR1A BOTTOM BOTTOM
Correct
10 1 0 1 0 PWM, Phase Correct ICR1 TOP BOTTOM
11 1 0 1 1 PWM, Phase Correct OCR1A TOP BOTTOM
12 1 1 0 0 CTC ICR1 Immediate MAX
13 1 1 0 1 (Reserved) – – –
14 1 1 1 0 Fast PWM ICR1 TOP TOP
15 1 1 1 1 Fast PWM OCR1A TOP TOP
Note: 1. The CTC1 and PWM11:0 bit definition names are obsolete. Use the WGM12:0 definitions. However, the functionality and
location of these bits are compatible with previous versions of the timer.
154 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
If external pin modes are used for the Timer/Counter1, transitions on the T1 pin will clock the
counter even if the pin is configured as an output. This feature allows software control of the
counting.
155
4921C–AUTO–01/07
4.14.10.4 Timer/Counter1 – TCNT1H and TCNT1L
Bit 7 6 5 4 3 2 1 0
TCNT1[15:8] TCNT1H
TCNT1[7:0] TCNT1L
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0
The two Timer/Counter I/O locations (TCNT1H and TCNT1L, combined TCNT1) give direct
access, both for read and for write operations, to the Timer/Counter unit 16-bit counter. To
ensure that both the high and low bytes are read and written simultaneously when the CPU
accesses these registers, the access is performed using an 8-bit temporary High Byte Register
(TEMP). This temporary register is shared by all the other 16-bit registers see “Accessing 16-bit
Registers” on page 132.
Modifying the counter (TCNT1) while the counter is running introduces a risk of missing a com-
pare match between TCNT1 and one of the OCR1x Registers.
Writing to the TCNT1 Register blocks (removes) the compare match on the following timer clock
for all compare units.
The Output Compare Registers contain a 16-bit value that is continuously compared with the
counter value (TCNT1). A match can be used to generate an Output Compare interrupt, or to
generate a waveform output on the OC1x pin.
The Output Compare Registers are 16-bit in size. To ensure that both the high and low bytes are
written simultaneously when the CPU writes to these registers, the access is performed using an
8-bit temporary High Byte Register (TEMP). This temporary register is shared by all the other
16-bit registers (see “Accessing 16-bit Registers” on page 132).
156 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The Input Capture is updated with the counter (TCNT1) value each time an event occurs on the
ICP1 pin (or optionally on the Analog Comparator output for Timer/Counter1). The Input Capture
can be used for defining the counter TOP value.
The Input Capture Register is 16-bit in size. To ensure that both the high and low bytes are read
simultaneously when the CPU accesses these registers, the access is performed using an 8-bit
temporary High Byte Register (TEMP). This temporary register is shared by all the other 16-bit
registers (see “Accessing 16-bit Registers” on page 132).
157
4921C–AUTO–01/07
4.14.10.9 Timer/Counter1 Interrupt Flag Register – TIFR1
Bit 7 6 5 4 3 2 1 0
– – ICF1 – – OCF1B OCF1A TOV1 TIFR1
Read/Write R R R/W R R R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0
158 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
4.15.1 Overview
A simplified block diagram of the 8-bit Timer/Counter is shown in Figure 4-53. The device-spe-
cific I/O Register and bit locations are listed in the “8-bit Timer/Counter Register Description” on
page 171.
The PRTIM2 bit in “Power Reduction Register - PRR” on page 63 must be written to zero to
enable Timer/Counter2 module.
Timer/Counter
TCNTn
= = 0
OCnA
(Int.Req.)
Waveform
= OCnA
Generation
OCRnA
Fixed OCnB
TOP (Int.Req.)
DATA BUS
Value
Waveform
= OCnB
Generation
OCRnB
TCCRnA TCCRnB
159
4921C–AUTO–01/07
4.15.1.1 Registers
The Timer/Counter (TCNT2) and Output Compare Register (OCR2A and OCR2B) are 8-bit reg-
isters. Interrupt request (shorten as Int.Req.) signals are all visible in the Timer Interrupt Flag
Register (TIFR2). All interrupts are individually masked with the Timer Interrupt Mask Register
(TIMSK2). TIFR2 and TIMSK2 are not shown in the figure.
The Timer/Counter can be clocked internally, via the prescaler, or asynchronously clocked from
the TOSC1/2 pins, as detailed later in this section. The asynchronous operation is controlled by
the Asynchronous Status Register (ASSR). The Clock Select logic block controls which clock
source he Timer/Counter uses to increment (or decrement) its value. The Timer/Counter is inac-
tive when no clock source is selected. The output from the Clock Select logic is referred to as the
timer clock (clkT2).
The double buffered Output Compare Register (OCR2A and OCR2B) are compared with the
Timer/Counter value at all times. The result of the compare can be used by the Waveform Gen-
erator to generate a PWM or variable frequency output on the Output Compare pins (OC2A and
OC2B). See “Output Compare Unit” on page 162 for details. The compare match event will also
set the Compare Flag (OCF2A or OCF2B) which can be used to generate an Output Compare
interrupt request.
4.15.1.2 Definitions
Many register and bit references in this document are written in general form. A lower case “n”
replaces the Timer/Counter number, in this case 2. However, when using the register or bit
defines in a program, the precise form must be used, i.e., TCNT2 for accessing Timer/Counter2
counter value and so on.
The definitions below are also used extensively throughout the section.
BOTTOM The counter reaches the BOTTOM when it becomes zero (0x00).
MAX The counter reaches its MAXimum when it becomes 0xFF (decimal 255).
TOP The counter reaches the TOP when it becomes equal to the highest value in the
count sequence. The TOP value can be assigned to be the fixed value 0xFF
(MAX) or the value stored in the OCR2A Register. The assignment is dependent
on the mode of operation.
160 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
TOSC1
count
clkTn T/C
clear Oscillator
TCNTn Control Logic Prescaler
direction
TOSC2
161
4921C–AUTO–01/07
4.15.4 Output Compare Unit
The 8-bit comparator continuously compares TCNT2 with the Output Compare Register
(OCR2A and OCR2B). Whenever TCNT2 equals OCR2A or OCR2B, the comparator signals a
match. A match will set the Output Compare Flag (OCF2A or OCF2B) at the next timer clock
cycle. If the corresponding interrupt is enabled, the Output Compare Flag generates an Output
Compare interrupt. The Output Compare Flag is automatically cleared when the interrupt is exe-
cuted. Alternatively, the Output Compare Flag can be cleared by software by writing a logical
one to its I/O bit location. The Waveform Generator uses the match signal to generate an output
according to operating mode set by the WGM22:0 bits and Compare Output mode (COM2x1:0)
bits. The max and bottom signals are used by the Waveform Generator for handling the special
cases of the extreme values in some modes of operation (see “Modes of Operation” on page
165).
Figure 4-55 shows a block diagram of the Output Compare unit.
OCRnx TCNTn
= (8-bit Comparator)
OCFnx (Int.Req.)
top
bottom
Waveform Generator OCnx
FOCn
WGMn1:0 COMnX1:0
The OCR2x Register is double buffered when using any of the Pulse Width Modulation (PWM)
modes. For the Normal and Clear Timer on Compare (CTC) modes of operation, the double
buffering is disabled. The double buffering synchronizes the update of the OCR2x Compare
Register to either top or bottom of the counting sequence. The synchronization prevents the
occurrence of odd-length, non-symmetrical PWM pulses, thereby making the output glitch-free.
The OCR2x Register access may seem complex, but this is not case. When the double buffering
is enabled, the CPU has access to the OCR2x Buffer Register, and if double buffering is dis-
abled the CPU will access the OCR2x directly.
162 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
163
4921C–AUTO–01/07
Figure 4-56. Compare Match Output Unit, Schematic
COMnx1
COMnx0 Waveform
D Q
FOCnx Generator
1
OCnx
OCnx Pin
0
D Q
DATA BUS
PORT
D Q
DDR
clkI/O
The general I/O port function is overridden by the Output Compare (OC2x) from the Waveform
Generator if either of the COM2x1:0 bits are set. However, the OC2x pin direction (input or out-
put) is still controlled by the Data Direction Register (DDR) for the port pin. The Data Direction
Register bit for the OC2x pin (DDR_OC2x) must be set as output before the OC2x value is visi-
ble on the pin. The port override function is independent of the Waveform Generation mode.
The design of the Output Compare pin logic allows initialization of the OC2x state before the out-
put is enabled. Note that some COM2x1:0 bit settings are reserved for certain modes of
operation (see “8-bit Timer/Counter Register Description” on page 171).
164 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
TCNTn
OCn
(COMnx1:0 = 1)
(Toggle)
Period 1 2 3 4
165
4921C–AUTO–01/07
An interrupt can be generated each time the counter value reaches the TOP value by using the
OCF2A Flag. If the interrupt is enabled, the interrupt handler routine can be used for updating
the TOP value. However, changing TOP to a value close to BOTTOM when the counter is run-
ning with none or a low prescaler value must be done with care since the CTC mode does not
have the double buffering feature. If the new value written to OCR2A is lower than the current
value of TCNT2, the counter will miss the compare match. The counter will then have to count to
its maximum value (0xFF) and wrap around starting at 0x00 before the compare match can
occur.
For generating a waveform output in CTC mode, the OC2A output can be set to toggle its logical
level on each compare match by setting the Compare Output mode bits to toggle mode
(COM2A1:0 = 1). The OC2A value will not be visible on the port pin unless the data direction for
the pin is set to output. The waveform generated will have a maximum frequency of fOC2A =
fclk_I/O/2 when OCR2A is set to zero (0x00). The waveform frequency is defined by the following
equation:
f clk_I/O
f OCnx = ------------------------------------------------------
-
2 ⋅ N ⋅ ( 1 + OCRnx )
The N variable represents the prescale factor (1, 8, 32, 64, 128, 256, or 1024).
As for the Normal mode of operation, the TOV2 Flag is set in the same timer clock cycle that the
counter counts from MAX to 0x00.
166 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
OCRnx Interrupt
Flag Set
TCNTn
OCn (COMnx1:0 = 2)
OCn (COMnx1:0 = 3)
Period 1 2 3 4 5 6 7
The Timer/Counter Overflow Flag (TOV2) is set each time the counter reaches TOP. If the inter-
rupt is enabled, the interrupt handler routine can be used for updating the compare value.
In fast PWM mode, the compare unit allows generation of PWM waveforms on the OC2x pin.
Setting the COM2x1:0 bits to two will produce a non-inverted PWM and an inverted PWM output
can be generated by setting the COM2x1:0 to three. TOP is defined as 0xFF when WGM2:0 = 3,
and OCR2A when MGM2:0 = 7 (see Table 4-59 on page 171). The actual OC2x value will only
be visible on the port pin if the data direction for the port pin is set as output. The PWM wave-
form is generated by setting (or clearing) the OC2x Register at the compare match between
OCR2x and TCNT2, and clearing (or setting) the OC2x Register at the timer clock cycle the
counter is cleared (changes from TOP to BOTTOM).
The PWM frequency for the output can be calculated by the following equation:
f clk_I/O
f OCnxPWM = --------------------
-
N ⋅ 256
The N variable represents the prescale factor (1, 8, 32, 64, 128, 256, or 1024).
The extreme values for the OCR2A Register represent special cases when generating a PWM
waveform output in the fast PWM mode. If the OCR2A is set equal to BOTTOM, the output will
be a narrow spike for each MAX+1 timer clock cycle. Setting the OCR2A equal to MAX will result
in a constantly high or low output (depending on the polarity of the output set by the COM2A1:0
bits.)
A frequency (with 50% duty cycle) waveform output in fast PWM mode can be achieved by set-
ting OC2x to toggle its logical level on each compare match (COM2x1:0 = 1). The waveform
generated will have a maximum frequency of foc2 = fclk_I/O/2 when OCR2A is set to zero. This fea-
ture is similar to the OC2A toggle in CTC mode, except the double buffer feature of the Output
Compare unit is enabled in the fast PWM mode.
167
4921C–AUTO–01/07
4.15.6.4 Phase Correct PWM Mode
The phase correct PWM mode (WGM22:0 = 1 or 5) provides a high resolution phase correct
PWM waveform generation option. The phase correct PWM mode is based on a dual-slope
operation. The counter counts repeatedly from BOTTOM to TOP and then from TOP to BOT-
TOM. TOP is defined as 0xFF when WGM2:0 = 3, and OCR2A when MGM2:0 = 7. In
non-inverting Compare Output mode, the Output Compare (OC2x) is cleared on the compare
match between TCNT2 and OCR2x while upcounting, and set on the compare match while
downcounting. In inverting Output Compare mode, the operation is inverted. The dual-slope
operation has lower maximum operation frequency than single slope operation. However, due to
the symmetric feature of the dual-slope PWM modes, these modes are preferred for motor con-
trol applications.
In phase correct PWM mode the counter is incremented until the counter value matches TOP.
When the counter reaches TOP, it changes the count direction. The TCNT2 value will be equal
to TOP for one timer clock cycle. The timing diagram for the phase correct PWM mode is shown
on Figure 4-59. The TCNT2 value is in the timing diagram shown as a histogram for illustrating
the dual-slope operation. The diagram includes non-inverted and inverted PWM outputs. The
small horizontal line marks on the TCNT2 slopes represent compare matches between OCR2x
and TCNT2.
OCnx Interrupt
Flag Set
OCRnx Update
TOVn Interrupt
Flag Set
TCNTn
OCn (COMnx1:0 = 2)
OCn (COMnx1:0 = 3)
Period 1 2 3
The Timer/Counter Overflow Flag (TOV2) is set each time the counter reaches BOTTOM. The
Interrupt Flag can be used to generate an interrupt each time the counter reaches the BOTTOM
value.
168 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
In phase correct PWM mode, the compare unit allows generation of PWM waveforms on the
OC2x pin. Setting the COM2x1:0 bits to two will produce a non-inverted PWM. An inverted PWM
output can be generated by setting the COM2x1:0 to three. TOP is defined as 0xFF when
WGM2:0 = 3, and OCR2A when MGM2:0 = 7 (see Table 4-60 on page 172). The actual OC2x
value will only be visible on the port pin if the data direction for the port pin is set as output. The
PWM waveform is generated by clearing (or setting) the OC2x Register at the compare match
between OCR2x and TCNT2 when the counter increments, and setting (or clearing) the OC2x
Register at compare match between OCR2x and TCNT2 when the counter decrements. The
PWM frequency for the output when using phase correct PWM can be calculated by the follow-
ing equation:
f clk_I/O
f OCnxPCPWM = --------------------
-
N ⋅ 510
The N variable represents the prescale factor (1, 8, 32, 64, 128, 256, or 1024).
The extreme values for the OCR2A Register represent special cases when generating a PWM
waveform output in the phase correct PWM mode. If the OCR2A is set equal to BOTTOM, the
output will be continuously low and if set equal to MAX the output will be continuously high for
non-inverted PWM mode. For inverted PWM the output will have the opposite logic values.
At the very start of period 2 in Figure 4-59 on page 168 OCnx has a transition from high to low
even though there is no Compare Match. The point of this transition is to guarantee symmetry
around BOTTOM. There are two cases that give a transition without Compare Match.
• OCR2A changes its value from MAX, like in Figure 4-59 on page 168. When the OCR2A
value is MAX the OCn pin value is the same as the result of a down-counting compare match.
To ensure symmetry around BOTTOM the OCn value at MAX must correspond to the result
of an up-counting Compare Match.
• The timer starts counting from a value higher than the one in OCR2A, and for that reason
misses the Compare Match and hence the OCn change that would have happened on the
way up.
clkI/O
clkTN
(clkI/O/1)
TOVn
169
4921C–AUTO–01/07
Figure 4-61 shows the same timing data, but with the prescaler enabled.
clkI/O
clkTN
(clkI/O/8)
TOVn
Figure 4-62 shows the setting of OCF2A in all modes except CTC mode.
Figure 4-62. Timer/Counter Timing Diagram, Setting of OCF2A, with Prescaler (fclk_I/O/8)
clkI/O
clkTn
(clkI/O/8)
OCFnx
Figure 4-63 shows the setting of OCF2A and the clearing of TCNT2 in CTC mode.
Figure 4-63. Timer/Counter Timing Diagram, Clear Timer on Compare Match mode, with Pres-
caler (fclk_I/O/8)
clkI/O
clkTN
(clkI/O/8)
TCNTn
TOP - 1 TOP BOTTOM BOTTOM + 1
(CTC)
OCRnx TOP
OCFnx
170 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Table 4-59 shows the COM2A1:0 bit functionality when the WGM21:0 bits are set to fast PWM
mode.
Note: 1. A special case occurs when OCR2A equals TOP and COM2A1 is set. In this case, the Com-
pare Match is ignored, but the set or clear is done at TOP. See “Fast PWM Mode” on page 166
for more details.
171
4921C–AUTO–01/07
Table 4-60 shows the COM2A1:0 bit functionality when the WGM22:0 bits are set to phase cor-
rect PWM mode.
Note: 1. A special case occurs when OCR2A equals TOP and COM2A1 is set. In this case, the Com-
pare Match is ignored, but the set or clear is done at TOP. See “Phase Correct PWM Mode” on
page 168 for more details.
• Bits 5:4 – COM2B1:0: Compare Match Output B Mode
These bits control the Output Compare pin (OC2B) behavior. If one or both of the
COM2B1:0 bits are set, the OC2B output overrides the normal port functionality of the I/O
pin it is connected to. However, note that the Data Direction Register (DDR) bit correspond-
ing to the OC2B pin must be set in order to enable the output driver.
When OC2B is connected to the pin, the function of the COM2B1:0 bits depends on the
WGM22:0 bit setting. Table 4-61 shows the COM2B1:0 bit functionality when the WGM22:0
bits are set to a normal or CTC mode (non-PWM).
Table 4-62 shows the COM2B1:0 bit functionality when the WGM22:0 bits are set to fast PWM
mode.
Note: 1. A special case occurs when OCR2B equals TOP and COM2B1 is set. In this case, the Com-
pare Match is ignored, but the set or clear is done at TOP. See “Phase Correct PWM Mode” on
page 168 for more details.
172 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Table 4-63 shows the COM2B1:0 bit functionality when the WGM22:0 bits are set to phase cor-
rect PWM mode.
Note: 1. A special case occurs when OCR2B equals TOP and COM2B1 is set. In this case, the Com-
pare Match is ignored, but the set or clear is done at TOP. See “Phase Correct PWM Mode” on
page 168 for more details.
• Bits 3, 2 – Res: Reserved Bits
These bits are reserved bits in the ATA6602/ATA6603 and will always read as zero.
• Bits 1:0 – WGM21:0: Waveform Generation Mode
Combined with the WGM22 bit found in the TCCR2B Register, these bits control the counting
sequence of the counter, the source for maximum (TOP) counter value, and what type of wave-
form generation to be used, see Table 4-64. Modes of operation supported by the Timer/Counter
unit are: Normal mode (counter), Clear Timer on Compare Match (CTC) mode, and two types of
Pulse Width Modulation (PWM) modes (see “Modes of Operation” on page 165).
173
4921C–AUTO–01/07
4.15.8.2 Timer/Counter Control Register B – TCCR2B
Bit 7 6 5 4 3 2 1 0
FOC2A FOC2B – – WGM22 CS22 CS21 CS20 TCCR2B
Read/Write W W R R R R R/W R/W
Initial Value 0 0 0 0 0 0 0 0
174 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The Timer/Counter Register gives direct access, both for read and write operations, to the
Timer/Counter unit 8-bit counter. Writing to the TCNT2 Register blocks (removes) the Compare
Match on the following timer clock. Modifying the counter (TCNT2) while the counter is running,
introduces a risk of missing a Compare Match between TCNT2 and the OCR2x Registers.
The Output Compare Register A contains an 8-bit value that is continuously compared with the
counter value (TCNT2). A match can be used to generate an Output Compare interrupt, or to
generate a waveform output on the OC2A pin.
The Output Compare Register B contains an 8-bit value that is continuously compared with the
counter value (TCNT2). A match can be used to generate an Output Compare interrupt, or to
generate a waveform output on the OC2B pin.
175
4921C–AUTO–01/07
4.15.8.6 Timer/Counter2 Interrupt Mask Register – TIMSK2
Bit 7 6 5 4 3 2 1 0
– – – – – OCIE2B OCIE2A TOIE2 TIMSK2
Read/Write R R R R R R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0
176 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
177
4921C–AUTO–01/07
a. Write a value to TCCR2x, TCNT2, or OCR2x.
b. Wait until the corresponding Update Busy Flag in ASSR returns to zero.
c. Enter Power-save or ADC Noise Reduction mode.
• When the asynchronous operation is selected, the 32.768 kHz Oscillator for Timer/Counter2
is always running, except in Power-down and Standby modes. After a Power-up Reset or
wake-up from Power-down or Standby mode, the user should be aware of the fact that this
Oscillator might take as long as one second to stabilize. The user is advised to wait for at
least one second before using Timer/Counter2 after power-up or wake-up from Power-down
or Standby mode. The contents of all Timer/Counter2 Registers must be considered lost after
a wake-up from Power-down or Standby mode due to unstable clock signal upon start-up, no
matter whether the Oscillator is in use or a clock signal is applied to the TOSC1 pin.
• Description of wake up from Power-save or ADC Noise Reduction mode when the timer is
clocked asynchronously: When the interrupt condition is met, the wake up process is started
on the following cycle of the timer clock, that is, the timer is always advanced by at least one
before the processor can read the counter value. After wake-up, the MCU is halted for four
cycles, it executes the interrupt routine, and resumes execution from the instruction following
SLEEP.
• Reading of the TCNT2 Register shortly after wake-up from Power-save may give an incorrect
result. Since TCNT2 is clocked on the asynchronous TOSC clock, reading TCNT2 must be
done through a register synchronized to the internal I/O clock domain. Synchronization takes
place for every rising TOSC1 edge. When waking up from Power-save mode, and the I/O
clock (clkI/O) again becomes active, TCNT2 will read as the previous value (before entering
sleep) until the next rising TOSC1 edge. The phase of the TOSC clock after waking up from
Power-save mode is essentially unpredictable, as it depends on the wake-up time. The
recommended procedure for reading TCNT2 is thus as follows:
a. Write any value to either of the registers OCR2x or TCCR2x.
b. Wait for the corresponding Update Busy Flag to be cleared.
c. Read TCNT2.
During asynchronous operation, the synchronization of the Interrupt Flags for the asynchronous
timer takes 3 processor cycles plus one timer cycle. The timer is therefore advanced by at least
one before the processor can read the timer value causing the setting of the Interrupt Flag. The
Output Compare pin is changed on the timer clock and is not synchronized to the processor
clock.
178 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
179
4921C–AUTO–01/07
4.15.10 Timer/Counter Prescaler
clkI/O clkT2S
10-BIT T/C PRESCALER
Clear
TOSC1
clkT2S/32
clkT2S/64
clkT2S/128
clkT2S/256
clkT2S/1024
clkT2S/8
AS2
PSRASY 0
CS20
CS21
CS22
The clock source for Timer/Counter2 is named clkT2S. clkT2S is by default connected to the main
system I/O clock clkIO. By setting the AS2 bit in ASSR, Timer/Counter2 is asynchronously
clocked from the TOSC1 pin. This enables use of Timer/Counter2 as a Real Time Counter
(RTC). When AS2 is set, pins TOSC1 and TOSC2 are disconnected from Port C. A crystal can
then be connected between the TOSC1 and TOSC2 pins to serve as an independent clock
source for Timer/Counter2. The Oscillator is optimized for use with a 32.768 kHz crystal. Apply-
ing an external clock source to TOSC1 is not recommended.
For Timer/Counter2, the possible prescaled selections are: clk T2S /8, clk T2S /32, clk T2S /64,
clkT2S/128, clkT2S/256, and clkT2S/1024. Additionally, clkT2S as well as 0 (stop) may be selected.
Setting the PSRASY bit in GTCCR resets the prescaler. This allows the user to operate with a
predictable prescaler.
180 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
CLOCK
SPI CLOCK (MASTER)
SELECT CLOCK S SCK
LOGIC M
SPI2X
SPR0
SPR1
SS
DORD
MSTR
SPE
MSTR
SPI CONTROL SPE
DORD
MSTR
CPHA
CPOL
SPR1
SPR0
WCOL
SPI2X
SPIE
SPIF
SPE
8 8
181
4921C–AUTO–01/07
The interconnection between Master and Slave CPUs with SPI is shown in Figure 4-66. The sys-
tem consists of two shift Registers, and a Master clock generator. The SPI Master initiates the
communication cycle when pulling low the Slave Select SS pin of the desired Slave. Master and
Slave prepare the data to be sent in their respective shift Registers, and the Master generates
the required clock pulses on the SCK line to interchange data. Data is always shifted from Mas-
ter to Slave on the Master Out – Slave In, MOSI, line, and from Slave to Master on the Master In
– Slave Out, MISO, line. After each data packet, the Master will synchronize the Slave by pulling
high the Slave Select, SS, line.
When configured as a Master, the SPI interface has no automatic control of the SS line. This
must be handled by user software before communication can start. When this is done, writing a
byte to the SPI Data Register starts the SPI clock generator, and the hardware shifts the eight
bits into the Slave. After shifting one byte, the SPI clock generator stops, setting the end of
Transmission Flag (SPIF). If the SPI Interrupt Enable bit (SPIE) in the SPCR Register is set, an
interrupt is requested. The Master may continue to shift the next byte by writing it into SPDR, or
signal the end of packet by pulling high the Slave Select, SS line. The last incoming byte will be
kept in the Buffer Register for later use.
When configured as a Slave, the SPI interface will remain sleeping with MISO tri-stated as long
as the SS pin is driven high. In this state, software may update the contents of the SPI Data
Register, SPDR, but the data will not be shifted out by incoming clock pulses on the SCK pin
until the SS pin is driven low. As one byte has been completely shifted, the end of Transmission
Flag, SPIF is set. If the SPI Interrupt Enable bit, SPIE, in the SPCR Register is set, an interrupt
is requested. The Slave may continue to place new data to be sent into SPDR before reading
the incoming data. The last incoming byte will be kept in the Buffer Register for later use.
MOSI MOSI
SHIFT
ENABLE
The system is single buffered in the transmit direction and double buffered in the receive direc-
tion. This means that bytes to be transmitted cannot be written to the SPI Data Register before
the entire shift cycle is completed. When receiving data, however, a received character must be
read from the SPI Data Register before the next character has been completely shifted in. Oth-
erwise, the first byte is lost.
182 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
In SPI Slave mode, the control logic will sample the incoming signal of the SCK pin. To ensure
correct sampling of the clock signal, the frequency of the SPI clock should never exceed fosc/4.
When the SPI is enabled, the data direction of the MOSI, MISO, SCK, and SS pins is overridden
according to Table 4-66. For more details on automatic port overrides, refer to “Alternate Port
Functions” on page 92.
Note: 1. See “Alternate Functions of Port B” on page 94 for a detailed description of how to define the
direction of the user defined SPI pins.
The following code examples show how to initialize the SPI as a Master and how to perform a
simple transmission. DDR_SPI in the examples must be replaced by the actual Data Direction
Register controlling the SPI pins. DD_MOSI, DD_MISO and DD_SCK must be replaced by the
actual data direction bits for these pins. E.g. if MOSI is placed on pin PB5, replace DD_MOSI
with DDB5 and DDR_SPI with DDRB.
183
4921C–AUTO–01/07
Assembly Code Example(1)
SPI_MasterInit:
; Set MOSI and SCK output, all others input
ldi r17,(1<<DD_MOSI)|(1<<DD_SCK)
out DDR_SPI,r17
; Enable SPI, Master, set clock rate fck/16
ldi r17,(1<<SPE)|(1<<MSTR)|(1<<SPR0)
out SPCR,r17
ret
SPI_MasterTransmit:
; Start transmission of data (r16)
out SPDR,r16
Wait_Transmit:
; Wait for transmission complete
sbis SPSR,SPIF
rjmp Wait_Transmit
ret
C Code Example(1)
void SPI_MasterInit(void)
{
/* Set MOSI and SCK output, all others input */
DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK);
/* Enable SPI, Master, set clock rate fck/16 */
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
}
184 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The following code examples show how to initialize the SPI as a Slave and how to perform a
simple reception.
Assembly Code Example(1)
SPI_SlaveInit:
; Set MISO output, all others input
ldi r17,(1<<DD_MISO)
out DDR_SPI,r17
; Enable SPI
ldi r17,(1<<SPE)
out SPCR,r17
ret
SPI_SlaveReceive:
; Wait for reception complete
sbis SPSR,SPIF
rjmp SPI_SlaveReceive
; Read received data and return
in r16,SPDR
ret
C Code Example(1)
void SPI_SlaveInit(void)
{
/* Set MISO output, all others input */
DDR_SPI = (1<<DD_MISO);
/* Enable SPI */
SPCR = (1<<SPE);
}
char SPI_SlaveReceive(void)
{
/* Wait for reception complete */
while(!(SPSR & (1<<SPIF)))
;
/* Return Data Register */
return SPDR;
}
Note: 1. The example code assumes that the part specific header file is included.
185
4921C–AUTO–01/07
4.16.1 SS Pin Functionality
186 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
187
4921C–AUTO–01/07
4.16.1.4 SPI Status Register – SPSR
Bit 7 6 5 4 3 2 1 0
SPIF WCOL – – – – – SPI2X SPSR
Read/Write R R R R R R R R/W
Initial Value 0 0 0 0 0 0 0 0
The SPI Data Register is a read/write register used for data transfer between the Register File
and the SPI Shift Register. Writing to the register initiates data transmission. Reading the regis-
ter causes the Shift Register Receive buffer to be read.
188 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
SCK (CPOL = 0)
mode 0
SCK (CPOL = 1)
mode 2
SAMPLE I
MOSI/MISO
CHANGE 0
MOSI PIN
CHANGE 0
MISO PIN
SS
MSB first (DORD = 0) MSB Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 LSB
LSB first (DORD = 1) LSB Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 MSB
SCK (CPOL = 0)
mode 1
SCK (CPOL = 1)
mode 3
SAMPLE I
MOSI/MISO
CHANGE 0
MOSI PIN
CHANGE 0
MISO PIN
SS
MSB first (DORD = 0) MSB Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 LSB
LSB first (DORD = 1) LSB Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 MSB
189
4921C–AUTO–01/07
4.17 USART0
The Universal Synchronous and Asynchronous serial Receiver and Transmitter (USART) is a
highly flexible serial communication device. The main features are:
• Full Duplex Operation (Independent Serial Receive and Transmit Registers)
• Asynchronous or Synchronous Operation
• Master or Slave Clocked Synchronous Operation
• High Resolution Baud Rate Generator
• Supports Serial Frames with 5, 6, 7, 8, or 9 Data Bits and 1 or 2 Stop Bits
• Odd or Even Parity Generation and Parity Check Supported by Hardware
• Data OverRun Detection
• Framing Error Detection
• Noise Filtering Includes False Start Bit Detection and Digital Low Pass Filter
• Three Separate Interrupts on TX Complete, TX Data Register Empty and RX Complete
• Multi-processor Communication Mode
• Double Speed Asynchronous Communication Mode
The USART can also be used in Master SPI mode (see “USART in SPI Mode” on page 217. The
Power Reduction USART bit, PRUSART0, in “Power Reduction Register - PRR” on page 63
must be disabled by writing a logical zero to it.
4.17.1 Overview
A simplified block diagram of the USART Transmitter is shown in Figure 4-69 on page 191. CPU
accessible I/O Registers and I/O pins are shown in bold.
190 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Clock Generator
UBRRn [H:L]
OSC
Transmitter
TX
UDRn(Transmit)
CONTROL
PARITY
GENERATOR
DATA BUS
PIN
TRANSMIT SHIFT REGISTER TxDn
CONTROL
Receiver
CLOCK RX
RECOVERY CONTROL
DATA PIN
RECEIVE SHIFT REGISTER RxDn
RECOVERY CONTROL
PARITY
UDRn(Receive) CHECKER
Note: 1. Refer to Table 4-38 on page 101 for USART0 pin placement.
The dashed boxes in the block diagram separate the three main parts of the USART (listed from
the top): Clock Generator, Transmitter and Receiver. Control Registers are shared by all units.
The Clock Generation logic consists of synchronization logic for external clock input used by
synchronous slave operation, and the baud rate generator. The XCKn (Transfer Clock) pin is
only used by synchronous transfer mode. The Transmitter consists of a single write buffer, a
serial Shift Register, Parity Generator and Control logic for handling different serial frame for-
mats. The write buffer allows a continuous transfer of data without any delay between frames.
The Receiver is the most complex part of the USART module due to its clock and data recovery
units. The recovery units are used for asynchronous data reception. In addition to the recovery
units, the Receiver includes a Parity Checker, Control logic, a Shift Register and a two level
receive buffer (UDRn). The Receiver supports the same frame formats as the Transmitter, and
can detect Frame Error, Data OverRun and Parity Errors.
191
4921C–AUTO–01/07
4.17.2 Clock Generation
The Clock Generation logic generates the base clock for the Transmitter and Receiver. The
USART supports four modes of clock operation: Normal asynchronous, Double Speed asyn-
chronous, Master synchronous and Slave synchronous mode. The UMSELn bit in USART
Control and Status Register C (UCSRnC) selects between asynchronous and synchronous
operation. Double Speed (asynchronous mode only) is controlled by the U2Xn found in the
UCSRnA Register. When using synchronous mode (UMSELn = 1), the Data Direction Register
for the XCKn pin (DDR_XCKn) controls whether the clock source is internal (Master mode) or
external (Slave mode). The XCKn pin is only active when using synchronous mode.
Figure 4-70 shows a block diagram of the clock generation logic.
Sync Edge
xcki Register Detector 0
XCKn UMSELn
xcko 1
Pin
DDR_XCKn UCPOLn 1
rxclk
0
Signal description:
txclk Transmitter clock (Internal Signal).
rxclk Receiver base clock (Internal Signal).
xcki Input from XCK pin (internal Signal). Used for synchronous slave
operation.
xcko Clock output to XCK pin (Internal Signal). Used for synchronous master
operation.
fosc XTAL pin frequency (System Clock).
192 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Table 4-71 contains equations for calculating the baud rate (in bits per second) and for calculat-
ing the UBRRn value for each mode of operation using an internally generated clock source.
f OSC
Asynchronous Normal mode BAUD = -----------------------------------------
-
(U2Xn = 0) 16 ( UBRRn + 1 )
f OSC
UBRRn = -------------------
-–1
8BAUD
f OSC
UBRRn = -------------------
-–1
2BAUD
f OSC
Synchronous Master mode BAUD = --------------------------------------
-
2 ( UBRRn + 1 )
Note: 1. The baud rate is defined to be the transfer rate in bit per second (bps)
BAUD Baud rate (in bits per second, bps)
fOSC System Oscillator clock frequency
UBRRn Contents of the UBRRnH and UBRRnL Registers, (0-4095)
Some examples of UBRRn values for some system clock frequencies are found in Table 4-79 on
page 215 (see “Examples of UBRRn Settings for Commonly Used Oscillator Frequencies” on
page 215).
193
4921C–AUTO–01/07
4.17.2.3 External Clock
External clocking is used by the synchronous slave modes of operation. The description in this
section refers to Figure 4-70 on page 192 for details.
External clock input from the XCKn pin is sampled by a synchronization register to minimize the
chance of meta-stability. The output from the synchronization register must then pass through
an edge detector before it can be used by the Transmitter and Receiver. This process intro-
duces a two CPU clock period delay and therefore the maximum external XCKn clock frequency
is limited by the following equation:
f OSC
f XCK < -----------
4
Note that fosc depends on the stability of the system clock source. It is therefore recommended to
add some margin to avoid possible loss of data due to frequency variations.
UCPOL = 1 XCK
RxD / TxD
Sample
UCPOL = 0 XCK
RxD / TxD
Sample
The UCPOLn bit UCRSC selects which XCKn clock edge is used for data sampling and which is
used for data change. As Figure 4-71 shows, when UCPOLn is zero the data will be changed at
rising XCKn edge and sampled at falling XCKn edge. If UCPOLn is set, the data will be changed
at falling XCKn edge and sampled at rising XCKn edge.
194 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
FRAME
(IDLE) St 0 1 2 3 4 [5] [6] [7] [8] [P] Sp1 [Sp2] (St / IDLE)
195
4921C–AUTO–01/07
4.17.3.1 Parity Bit Calculation
The parity bit is calculated by doing an exclusive-or of all the data bits. If odd parity is used, the
result of the exclusive or is inverted. The relation between the parity bit and data bits is as
follows:
P even = d n – 1 ⊕ …⊕ d 3 ⊕ d2 ⊕ d1 ⊕ d0 ⊕ 0
P odd = d n – 1 ⊕ …⊕ d 3 ⊕ d2 ⊕ d1 ⊕ d0 ⊕ 1
196 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
197
4921C–AUTO–01/07
4.17.5 Data Transmission – The USART Transmitter
The USART Transmitter is enabled by setting the Transmit Enable (TXEN) bit in the UCSRnB
Register. When the Transmitter is enabled, the normal port operation of the TxDn pin is overrid-
den by the USART and given the function as the Transmitter’s serial output. The baud rate,
mode of operation and frame format must be set up once before doing any transmissions. If syn-
chronous operation is used, the clock on the XCKn pin will be overridden and used as
transmission clock.
Note: 1. The example code assumes that the part specific header file is included.
For I/O Registers located in extended I/O map, “IN”, “OUT”, “SBIS”, “SBIC”, “CBI”, and “SBI”
instructions must be replaced with instructions that allow access to extended I/O. Typically
“LDS” and “STS” combined with “SBRS”, “SBRC”, “SBR”, and “CBR”.
The function simply waits for the transmit buffer to be empty by checking the UDREn Flag,
before loading it with new data to be transmitted. If the Data Register Empty interrupt is utilized,
the interrupt routine writes the data into the buffer.
198 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Notes: 1. These transmit functions are written to be general functions. They can be optimized if the con-
tents of the UCSRnB is static. For example, only the TXB8 bit of the UCSRnB Register is used
after initialization.
2. The example code assumes that the part specific header file is included.
For I/O Registers located in extended I/O map, “IN”, “OUT”, “SBIS”, “SBIC”, “CBI”, and “SBI”
instructions must be replaced with instructions that allow access to extended I/O. Typically
“LDS” and “STS” combined with “SBRS”, “SBRC”, “SBR”, and “CBR”.
The ninth bit can be used for indicating an address frame when using multi processor communi-
cation mode or for other protocol handling as for example synchronization.
199
4921C–AUTO–01/07
4.17.5.3 Transmitter Flags and Interrupts
The USART Transmitter has two flags that indicate its state: USART Data Register Empty
(UDREn) and Transmit Complete (TXCn). Both flags can be used for generating interrupts.
The Data Register Empty (UDREn) Flag indicates whether the transmit buffer is ready to receive
new data. This bit is set when the transmit buffer is empty, and cleared when the transmit buffer
contains data to be transmitted that has not yet been moved into the Shift Register. For compat-
ibility with future devices, always write this bit to zero when writing the UCSRnA Register.
When the Data Register Empty Interrupt Enable (UDRIEn) bit in UCSRnB is written to one, the
USART Data Register Empty Interrupt will be executed as long as UDREn is set (provided that
global interrupts are enabled). UDREn is cleared by writing UDRn. When interrupt-driven data
transmission is used, the Data Register Empty interrupt routine must either write new data to
UDRn in order to clear UDREn or disable the Data Register Empty interrupt, otherwise a new
interrupt will occur once the interrupt routine terminates.
The Transmit Complete (TXCn) Flag bit is set one when the entire frame in the Transmit Shift
Register has been shifted out and there are no new data currently present in the transmit buffer.
The TXCn Flag bit is automatically cleared when a transmit complete interrupt is executed, or it
can be cleared by writing a one to its bit location. The TXCn Flag is useful in half-duplex commu-
nication interfaces (like the RS-485 standard), where a transmitting application must enter
receive mode and free the communication bus immediately after completing the transmission.
When the Transmit Compete Interrupt Enable (TXCIEn) bit in UCSRnB is set, the USART
Transmit Complete Interrupt will be executed when the TXCn Flag becomes set (provided that
global interrupts are enabled). When the transmit complete interrupt is used, the interrupt han-
dling routine does not have to clear the TXCn Flag, this is done automatically when the interrupt
is executed.
200 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Note: 1. The example code assumes that the part specific header file is included.
For I/O Registers located in extended I/O map, “IN”, “OUT”, “SBIS”, “SBIC”, “CBI”, and “SBI”
instructions must be replaced with instructions that allow access to extended I/O. Typically
“LDS” and “STS” combined with “SBRS”, “SBRC”, “SBR”, and “CBR”.
The function simply waits for data to be present in the receive buffer by checking the RXCn Flag,
before reading the buffer and returning the value.
201
4921C–AUTO–01/07
The following code example shows a simple USART receive function that handles both nine bit
characters and the status bits.
Assembly Code Example(1)
USART_Receive:
; Wait for data to be received
sbis UCSRnA, RXCn
rjmp USART_Receive
; Get status and 9th bit, then data from buffer
in r18, UCSRnA
in r17, UCSRnB
in r16, UDRn
; If error, return -1
andi r18,(1<<FEn)|(1<<DORn)|(1<<UPEn)
breq USART_ReceiveNoError
ldi r17, HIGH(-1)
ldi r16, LOW(-1)
USART_ReceiveNoError:
; Filter the 9th bit, then return
lsr r17
andi r17, 0x01
ret
C Code Example(1)
unsigned int USART_Receive( void )
{
unsigned char status, resh, resl;
/* Wait for data to be received */
while ( !(UCSRnA & (1<<RXCn)) )
;
/* Get status and 9th bit, then data */
/* from buffer */
status = UCSRnA;
resh = UCSRnB;
resl = UDRn;
/* If error, return -1 */
if ( status & (1<<FEn)|(1<<DORn)|(1<<UPEn) )
return -1;
/* Filter the 9th bit, then return */
resh = (resh >> 1) & 0x01;
return ((resh << 8) | resl);
}
Note: 1. The example code assumes that the part specific header file is included.
For I/O Registers located in extended I/O map, “IN”, “OUT”, “SBIS”, “SBIC”, “CBI”, and “SBI”
instructions must be replaced with instructions that allow access to extended I/O. Typically
“LDS” and “STS” combined with “SBRS”, “SBRC”, “SBR”, and “CBR”.
202 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The receive function example reads all the I/O Registers into the Register File before any com-
putation is done. This gives an optimal receive buffer utilization since the buffer location read will
be free to accept new data as early as possible.
203
4921C–AUTO–01/07
4.17.6.5 Parity Checker
The Parity Checker is active when the high USART Parity mode (UPMn1) bit is set. Type of Par-
ity Check to be performed (odd or even) is selected by the UPMn0 bit. When enabled, the Parity
Checker calculates the parity of the data bits in incoming frames and compares the result with
the parity bit from the serial frame. The result of the check is stored in the receive buffer together
with the received data and stop bits. The Parity Error (UPEn) Flag can then be read by software
to check if the frame had a Parity Error.
The UPEn bit is set if the next character that can be read from the receive buffer had a Parity
Error when received and the Parity Checking was enabled at that point (UPMn1 = 1). This bit is
valid until the receive buffer (UDRn) is read.
Note: 1. The example code assumes that the part specific header file is included.
For I/O Registers located in extended I/O map, “IN”, “OUT”, “SBIS”, “SBIC”, “CBI”, and “SBI”
instructions must be replaced with instructions that allow access to extended I/O. Typically
“LDS” and “STS” combined with “SBRS”, “SBRC”, “SBR”, and “CBR”.
204 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Sample
(U2X = 0) 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3
Sample
(U2X = 1) 0 1 2 3 4 5 6 7 8 1 2
When the clock recovery logic detects a high (idle) to low (start) transition on the RxDn line, the
start bit detection sequence is initiated. Let sample 1 denote the first zero-sample as shown in
the figure. The clock recovery logic then uses samples 8, 9, and 10 for Normal mode, and sam-
ples 4, 5, and 6 for Double Speed mode (indicated with sample numbers inside boxes on the
figure), to decide if a valid start bit is received. If two or more of these three samples have logical
high levels (the majority wins), the start bit is rejected as a noise spike and the Receiver starts
looking for the next high to low-transition. If however, a valid start bit is detected, the clock recov-
ery logic is synchronized and the data recovery can begin. The synchronization process is
repeated for each start bit.
205
4921C–AUTO–01/07
Figure 4-74. Sampling of Data and Parity Bit
RxD BIT n
Sample
(U2X = 0) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1
Sample
(U2X = 1) 1 2 3 4 5 6 7 8 1
The decision of the logic level of the received bit is taken by doing a majority voting of the logic
value to the three samples in the center of the received bit. The center samples are emphasized
on the figure by having the sample number inside boxes. The majority voting process is done as
follows: If two or all three samples have high levels, the received bit is registered to be a logic 1.
If two or all three samples have low levels, the received bit is registered to be a logic 0. This
majority voting process acts as a low pass filter for the incoming signal on the RxDn pin. The
recovery process is then repeated until a complete frame is received. Including the first stop bit.
Note that the Receiver only uses the first stop bit of a frame.
Figure 4-75 shows the sampling of the stop bit and the earliest possible beginning of the start bit
of the next frame.
Figure 4-75. Stop Bit Sampling and Next Start Bit Sampling
Sample
(U2X = 0) 1 2 3 4 5 6 7 8 9 10 0/1 0/1 0/1
Sample
(U2X = 1) 1 2 3 4 5 6 0/1
The same majority voting is done to the stop bit as done for the other bits in the frame. If the stop
bit is registered to have a logic 0 value, the Frame Error (FEn) Flag will be set.
A new high to low transition indicating the start bit of a new frame can come right after the last of
the bits used for majority voting. For Normal Speed mode, the first low level sample can be at
point marked (A) in Figure 4-75. For Double Speed mode the first low level must be delayed to
(B). (C) marks a stop bit of full length. The early start bit detection influences the operational
range of the Receiver.
206 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
( D + 1 )S ( D + 2 )S
R slow = --------------------------------------------- R fast = -----------------------------------
S – 1 + D × S + SF ( D + 1 )S + S M
Table 4-72. Recommended Maximum Receiver Baud Rate Error for Normal Speed Mode
(U2Xn = 0)
D Recommended Max
# (Data+Parity Bit) Rslow (%) Rfast (%) Max Total Error (%) Receiver Error (%)
5 93.20 106.67 +6.67/-6.8 ± 3.0
6 94.12 105.79 +5.79/-5.88 ± 2.5
7 94.81 105.11 +5.11/-5.19 ± 2.0
8 95.36 104.58 +4.58/-4.54 ± 2.0
9 95.81 104.14 +4.14/-4.19 ± 1.5
10 96.17 103.78 +3.78/-3.83 ± 1.5
207
4921C–AUTO–01/07
Table 4-73. Recommended Maximum Receiver Baud Rate Error for Double Speed Mode
(U2Xn = 1)
D Recommended Max
# (Data+Parity Bit) Rslow (%) Rfast (%) Max Total Error (%) Receiver Error (%)
5 94.12 105.66 +5.66/-5.88 ± 2.5
6 94.92 104.92 +4.92/-5.08 ± 2.0
7 95.52 104,35 +4.35/-4.48 ± 1.5
8 96.00 103.90 +3.90/-4.00 ± 1.5
9 96.39 103.53 +3.53/-3.61 ± 1.5
10 96.70 103.23 +3.23/-3.30 ± 1.0
The recommendations of the maximum receiver baud rate error was made under the assump-
tion that the Receiver and Transmitter equally divides the maximum total error.
There are two possible sources for the receivers baud rate error. The Receiver’s system clock
(XTAL) will always have some minor instability over the supply voltage range and the tempera-
ture range. When using a crystal to generate the system clock, this is rarely a problem, but for a
resonator the system clock may differ more than 2% depending of the resonators tolerance. The
second source for the error is more controllable. The baud rate generator can not always do an
exact division of the system frequency to get the baud rate wanted. In this case an UBRRn value
that gives an acceptable low error can be used if possible.
208 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The USART Transmit Data Buffer Register and USART Receive Data Buffer Registers share the
same I/O address referred to as USART Data Register or UDRn. The Transmit Data Buffer Reg-
ister (TXB) will be the destination for data written to the UDRn Register location. Reading the
UDRn Register location will return the contents of the Receive Data Buffer Register (RXB).
For 5-, 6-, or 7-bit characters the upper unused bits will be ignored by the Transmitter and set to
zero by the Receiver.
209
4921C–AUTO–01/07
The transmit buffer can only be written when the UDREn Flag in the UCSRnA Register is set.
Data written to UDRn when the UDREn Flag is not set, will be ignored by the USART Transmit-
ter. When data is written to the transmit buffer, and the Transmitter is enabled, the Transmitter
will load the data into the Transmit Shift Register when the Shift Register is empty. Then the
data will be serially transmitted on the TxDn pin.
The receive buffer consists of a two level FIFO. The FIFO will change its state whenever the
receive buffer is accessed. Due to this behavior of the receive buffer, do not use Read-Mod-
ify-Write instructions (SBI and CBI) on this location. Be careful when using bit test instructions
(SBIC and SBIS), since these also will change the state of the FIFO.
210 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
211
4921C–AUTO–01/07
• Bit 2 – UCSZn2: Character Size n
The UCSZn2 bits combined with the UCSZn1:0 bit in UCSRnC sets the number of data bits
(Character SiZe) in a frame the Receiver and Transmitter use.
• Bit 1 – RXB8n: Receive Data Bit 8 n
RXB8n is the ninth data bit of the received character when operating with serial frames with
nine data bits. Must be read before reading the low bits from UDRn.
• Bit 0 – TXB8n: Transmit Data Bit 8 n
TXB8n is the ninth data bit in the character to be transmitted when operating with serial
frames with nine data bits. Must be written before writing the low bits to UDRn.
Note: 1. See “USART in SPI Mode” on page 217 for full description of the Master SPI Mode (MSPIM)
operation
• Bits 5:4 – UPMn1:0: Parity Mode
These bits enable and set type of parity generation and check. If enabled, the Transmitter
will automatically generate and send the parity of the transmitted data bits within each
frame. The Receiver will generate a parity value for the incoming data and compare it to the
UPMn setting. If a mismatch is detected, the UPEn Flag in UCSRnA will be set.
212 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
213
4921C–AUTO–01/07
4.17.9.5 USART Baud Rate Registers – UBRRnL and UBRRnH
Bit 15 14 13 12 11 10 9 8
– – – – UBRRn[11:8] UBRRnH
UBRRn[7:0] UBRRnL
7 6 5 4 3 2 1 0
R R R R R/W R/W R/W R/W
Read/Write
R/W R/W R/W R/W R/W R/W R/W R/W
0 0 0 0 0 0 0 0
Initial Value
0 0 0 0 0 0 0 0
214 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Table 4-79. Examples of UBRRn Settings for Commonly Used Oscillator Frequencies
fosc = 1.0000 MHz fosc = 1.8432 MHz fosc = 2.0000 MHz
Baud
Rate U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1
(bps) UBRRn Error UBRRn Error UBRRn Error UBRRn Error UBRRn Error UBRRn Error
2400 25 0.2% 51 0.2% 47 0.0% 95 0.0% 51 0.2% 103 0.2%
4800 12 0.2% 25 0.2% 23 0.0% 47 0.0% 25 0.2% 51 0.2%
9600 6 -7.0% 12 0.2% 11 0.0% 23 0.0% 12 0.2% 25 0.2%
14.4k 3 8.5% 8 -3.5% 7 0.0% 15 0.0% 8 -3.5% 16 2.1%
19.2k 2 8.5% 6 -7.0% 5 0.0% 11 0.0% 6 -7.0% 12 0.2%
28.8k 1 8.5% 3 8.5% 3 0.0% 7 0.0% 3 8.5% 8 -3.5%
38.4k 1 -18.6% 2 8.5% 2 0.0% 5 0.0% 2 8.5% 6 -7.0%
57.6k 0 8.5% 1 8.5% 1 0.0% 3 0.0% 1 8.5% 3 8.5%
76.8k – – 1 -18.6% 1 -25.0% 2 0.0% 1 -18.6% 2 8.5%
115.2k – – 0 8.5% 0 0.0% 1 0.0% 0 8.5% 1 8.5%
230.4k – – – – – – 0 0.0% – – – –
250k – – – – – – – – – – 0 0.0%
(1)
Max. 62.5 kbps 125 kbps 115.2 kbps 230.4 kbps 125 kbps 250 kbps
Note: 1. UBRRn = 0, Error = 0.0%
Table 4-80. Examples of UBRRn Settings for Commonly Used Oscillator Frequencies (Continued)
fosc = 3.6864 MHz fosc = 4.0000 MHz fosc = 7.3728 MHz
Baud
Rate U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1
(bps) UBRRn Error UBRRn Error UBRRn Error UBRRn Error UBRRn Error UBRRn Error
2400 95 0.0% 191 0.0% 103 0.2% 207 0.2% 191 0.0% 383 0.0%
4800 47 0.0% 95 0.0% 51 0.2% 103 0.2% 95 0.0% 191 0.0%
9600 23 0.0% 47 0.0% 25 0.2% 51 0.2% 47 0.0% 95 0.0%
14.4k 15 0.0% 31 0.0% 16 2.1% 34 -0.8% 31 0.0% 63 0.0%
19.2k 11 0.0% 23 0.0% 12 0.2% 25 0.2% 23 0.0% 47 0.0%
28.8k 7 0.0% 15 0.0% 8 -3.5% 16 2.1% 15 0.0% 31 0.0%
38.4k 5 0.0% 11 0.0% 6 -7.0% 12 0.2% 11 0.0% 23 0.0%
57.6k 3 0.0% 7 0.0% 3 8.5% 8 -3.5% 7 0.0% 15 0.0%
76.8k 2 0.0% 5 0.0% 2 8.5% 6 -7.0% 5 0.0% 11 0.0%
115.2k 1 0.0% 3 0.0% 1 8.5% 3 8.5% 3 0.0% 7 0.0%
230.4k 0 0.0% 1 0.0% 0 8.5% 1 8.5% 1 0.0% 3 0.0%
250k 0 -7.8% 1 -7.8% 0 0.0% 1 0.0% 1 -7.8% 3 -7.8%
0.5M – – 0 -7.8% – – 0 0.0% 0 -7.8% 1 -7.8%
1M – – – – – – – – – – 0 -7.8%
Max. (1) 230.4 kbps 460.8 kbps 250 kbps 0.5 Mbps 460.8 kbps 921.6 kbps
1. UBRRn = 0, Error = 0.0%
215
4921C–AUTO–01/07
Table 4-81. Examples of UBRRn Settings for Commonly Used Oscillator Frequencies (Continued)
fosc = 8.0000 MHz fosc = 11.0592 MHz fosc = 14.7456 MHz
Baud
Rate U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1
(bps) UBRRn Error UBRRn Error UBRRn Error UBRRn Error UBRRn Error UBRRn Error
2400 207 0.2% 416 -0.1% 287 0.0% 575 0.0% 383 0.0% 767 0.0%
4800 103 0.2% 207 0.2% 143 0.0% 287 0.0% 191 0.0% 383 0.0%
9600 51 0.2% 103 0.2% 71 0.0% 143 0.0% 95 0.0% 191 0.0%
14.4k 34 -0.8% 68 0.6% 47 0.0% 95 0.0% 63 0.0% 127 0.0%
19.2k 25 0.2% 51 0.2% 35 0.0% 71 0.0% 47 0.0% 95 0.0%
28.8k 16 2.1% 34 -0.8% 23 0.0% 47 0.0% 31 0.0% 63 0.0%
38.4k 12 0.2% 25 0.2% 17 0.0% 35 0.0% 23 0.0% 47 0.0%
57.6k 8 -3.5% 16 2.1% 11 0.0% 23 0.0% 15 0.0% 31 0.0%
76.8k 6 -7.0% 12 0.2% 8 0.0% 17 0.0% 11 0.0% 23 0.0%
115.2k 3 8.5% 8 -3.5% 5 0.0% 11 0.0% 7 0.0% 15 0.0%
230.4k 1 8.5% 3 8.5% 2 0.0% 5 0.0% 3 0.0% 7 0.0%
250k 1 0.0% 3 0.0% 2 -7.8% 5 -7.8% 3 -7.8% 6 5.3%
0.5M 0 0.0% 1 0.0% – – 2 -7.8% 1 -7.8% 3 -7.8%
1M – – 0 0.0% – – – – 0 -7.8% 1 -7.8%
(1)
Max. 0.5 Mbps 1 Mbps 691.2 kbps 1.3824 Mbps 921.6 kbps 1.8432 Mbps
1. UBRRn = 0, Error = 0.0%
Table 4-82. Examples of UBRRn Settings for Commonly Used Oscillator Frequencies (Continued)
fosc = 16.0000 MHz fosc = 18.4320 MHz fosc = 20.0000 MHz
Baud
Rate U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1 U2Xn = 0 U2Xn = 1
(bps) UBRRn Error UBRRn Error UBRRn Error UBRRn Error UBRRn Error UBRRn Error
2400 416 -0.1% 832 0.0% 479 0.0% 959 0.0% 520 0.0% 1041 0.0%
4800 207 0.2% 416 -0.1% 239 0.0% 479 0.0% 259 0.2% 520 0.0%
9600 103 0.2% 207 0.2% 119 0.0% 239 0.0% 129 0.2% 259 0.2%
14.4k 68 0.6% 138 -0.1% 79 0.0% 159 0.0% 86 -0.2% 173 -0.2%
19.2k 51 0.2% 103 0.2% 59 0.0% 119 0.0% 64 0.2% 129 0.2%
28.8k 34 -0.8% 68 0.6% 39 0.0% 79 0.0% 42 0.9% 86 -0.2%
38.4k 25 0.2% 51 0.2% 29 0.0% 59 0.0% 32 -1.4% 64 0.2%
57.6k 16 2.1% 34 -0.8% 19 0.0% 39 0.0% 21 -1.4% 42 0.9%
76.8k 12 0.2% 25 0.2% 14 0.0% 29 0.0% 15 1.7% 32 -1.4%
115.2k 8 -3.5% 16 2.1% 9 0.0% 19 0.0% 10 -1.4% 21 -1.4%
230.4k 3 8.5% 8 -3.5% 4 0.0% 9 0.0% 4 8.5% 10 -1.4%
250k 3 0.0% 7 0.0% 4 -7.8% 8 2.4% 4 0.0% 9 0.0%
0.5M 1 0.0% 3 0.0% – – 4 -7.8% – – 4 0.0%
1M 0 0.0% 1 0.0% – – – – – – – –
(1)
Max. 1 Mbps 2 Mbps 1.152 Mbps 2.304 Mbps 1.25 Mbps 2.5 Mbps
1. UBRRn = 0, Error = 0.0%
216 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
4.18.1 Overview
Setting both UMSELn1:0 bits to one enables the USART in MSPIM logic. In this mode of opera-
tion the SPI master control logic takes direct control over the USART resources. These
resources include the transmitter and receiver shift register and buffers, and the baud rate gen-
erator. The parity generator and checker, the data and clock recovery logic, and the RX and TX
control logic is disabled. The USART RX and TX control logic is replaced by a common SPI
transfer control logic. However, the pin control logic and interrupt generation logic is identical in
both modes of operation.
The I/O register locations are the same in both modes. However, some of the functionality of the
control registers changes when using MSPIM.
217
4921C–AUTO–01/07
Table 4-83. Equations for Calculating Baud Rate Register Setting
Equation for Calculating Baud Equation for Calculating UBRRn
Operating Mode Rate(1) Value
Note: 1. The baud rate is defined to be the transfer rate in bit per second (bps)
BAUD Baud rate (in bits per second, bps)
fOSC System Oscillator clock frequency
UBRRn Contents of the UBRRnH and UBRRnL Registers, (0-4095)
XCK XCK
XCK XCK
UCPHA=0
218 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
219
4921C–AUTO–01/07
Assembly Code Example(1)
USART_Init:
clr r18
out UBRRnH,r18
out UBRRnL,r18
; Setting the XCKn port pin as output, enables master mode.
sbi XCKn_DDR, XCKn
; Set MSPI mode of operation and SPI data mode 0.
ldi r18, (1<<UMSELn1)|(1<<UMSELn0)|(0<<UCPHAn)|(0<<UCPOLn)
out UCSRnC,r18
; Enable receiver and transmitter.
ldi r18, (1<<RXENn)|(1<<TXENn)
out UCSRnB,r18
; Set baud rate.
; IMPORTANT: The Baud Rate must be set after the transmitter is enabled!
out UBRRnH, r17
out UBRRnL, r18
ret
C Code Example(1)
void USART_Init( unsigned int baud )
{
UBRRn = 0;
/* Setting the XCKn port pin as output, enables master mode. */
XCKn_DDR |= (1<<XCKn);
/* Set MSPI mode of operation and SPI data mode 0. */
UCSRnC = (1<<UMSELn1)|(1<<UMSELn0)|(0<<UCPHAn)|(0<<UCPOLn);
/* Enable receiver and transmitter. */
UCSRnB = (1<<RXENn)|(1<<TXENn);
/* Set baud rate. */
/* IMPORTANT: The Baud Rate must be set after the transmitter is enabled
*/
UBRRn = baud;
}
Note: 1. The example code assumes that the part specific header file is included. For I/O Registers
located in extended I/O map, "IN", "OUT", "SBIS", "SBIC", "CBI", and "SBI" instructions must
be replaced with instructions that allow access to extended I/O. Typically "LDS" and "STS"
combined with "SBRS", "SBRC", "SBR", and "CBR".
220 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
221
4921C–AUTO–01/07
Assembly Code Example(1)
USART_MSPIM_Transfer:
; Wait for empty transmit buffer
sbis UCSRnA, UDREn
rjmp USART_MSPIM_Transfer
; Put data (r16) into buffer, sends the data
out UDRn,r16
; Wait for data to be received
USART_MSPIM_Wait_RXCn:
sbis UCSRnA, RXCn
rjmp USART_MSPIM_Wait_RXCn
; Get and return received data from buffer
in r16, UDRn
ret
C Code Example(1)
unsigned char USART_Receive( void )
{
/* Wait for empty transmit buffer */
while ( !( UCSRnA & (1<<UDREn)) );
/* Put data into buffer, sends the data */
UDRn = data;
/* Wait for data to be received */
while ( !(UCSRnA & (1<<RXCn)) );
/* Get and return received data from buffer */
return UDRn;
}
Note: 1. The example code assumes that the part specific header file is included. For I/O Registers
located in extended I/O map, "IN", "OUT", "SBIS", "SBIC", "CBI", and "SBI" instructions must
be replaced with instructions that allow access to extended I/O. Typically "LDS" and "STS"
combined with "SBRS", "SBRC", "SBR", and "CBR".
222 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Bit 7 6 5 4 3 2 1 0
RXCn TXCn UDREn - - - - - UCSRnA
Read/Write R/W R/W R/W R R R R R
Initial Value 0 0 0 0 0 1 1 0
223
4921C–AUTO–01/07
4.18.6.3 USART MSPIM Control and Status Register n B - UCSRnB
Bit 7 6 5 4 3 2 1 0
RXCIEn TXCIEn UDRIE RXENn TXENn - - - UCSRnB
Read/Write R/W R/W R/W R/W R/W R R R
Initial Value 0 0 0 0 0 1 1 0
224 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Bit 7 6 5 4 3 2 1 0
UMSELn1 UMSELn0 - - - UDORDn UCPHAn UCPOLn UCSRnC
Read/Write R/W R/W R R R R/W R/W R/W
Initial Value 0 0 0 0 0 1 1 0
225
4921C–AUTO–01/07
4.18.7 AVR USART MSPIM versus AVR SPI
The USART in MSPIM mode is fully compatible with the AVR SPI regarding:
• Master mode timing diagram.
• The UCPOLn bit functionality is identical to the SPI CPOL bit.
• The UCPHAn bit functionality is identical to the SPI CPHA bit.
• The UDORDn bit functionality is identical to the SPI DORD bit.
However, since the USART in MSPIM mode reuses the USART resources, the use of the
USART in MSPIM mode is somewhat different compared to the SPI. In addition to differences of
the control register bits, and that only master operation is supported by the USART in MSPIM
mode, the following features differ between the two modules:
• The USART in MSPIM mode includes (double) buffering of the transmitter. The SPI has no
buffer.
• The USART in MSPIM mode receiver includes an additional buffer level.
• The SPI WCOL (Write Collision) bit is not included in USART in MSPIM mode.
• The SPI double speed mode (SPI2X) bit is not included. However, the same effect is
achieved by setting UBRRn accordingly.
• Interrupt timing is not compatible.
• Pin control differs due to the master only operation of the USART in MSPIM mode.
A comparison of the USART in MSPIM mode and the SPI pins is shown in Table 4-86.
226 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
4.19.1 Features
• Simple Yet Powerful and Flexible Communication Interface, only two Bus Lines Needed
• Both Master and Slave Operation Supported
• Device can Operate as Transmitter or Receiver
• 7-bit Address Space Allows up to 128 Different Slave Addresses
• Multi-master Arbitration Support
• Up to 400 kHz Data Transfer Speed
• Slew-rate Limited Output Drivers
• Noise Suppression Circuitry Rejects Spikes on Bus Lines
• Fully Programmable Slave Address with General Call Support
• Address Recognition Causes Wake-up When AVR is in Sleep Mode
SDA
SCL
The PRTWI bit in “Power Reduction Register - PRR” on page 63 must be written to zero to
enable the 2-wire Serial Interface.
227
4921C–AUTO–01/07
4.19.2.2 Electrical Interconnection
As depicted in Figure 4-77 on page 227, both bus lines are connected to the positive supply volt-
age through pull-up resistors. The bus drivers of all TWI-compliant devices are open-drain or
open-collector. This implements a wired-AND function which is essential to the operation of the
interface. A low level on a TWI bus line is generated when one or more TWI devices output a
zero. A high level is output when all TWI devices tri-state their outputs, allowing the pull-up resis-
tors to pull the line high. Note that all AVR devices connected to the TWI bus must be powered
in order to allow any bus operation.
The number of devices that can be connected to the bus is only limited by the bus capacitance
limit of 400 pF and the 7-bit slave address space. A detailed specification of the electrical char-
acteristics of the TWI is given in “2-wire Serial Interface Characteristics” on page 321. Two
different sets of specifications are presented there, one relevant for bus speeds below 100 kHz,
and one valid for bus speeds up to 400 kHz.
SDA
SCL
Data Change
228 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
SDA
SCL
SDA
SCL
1 2 7 8 9
START
229
4921C–AUTO–01/07
4.19.3.4 Data Packet Format
All data packets transmitted on the TWI bus are nine bits long, consisting of one data byte and
an acknowledge bit. During a data transfer, the Master generates the clock and the START and
STOP conditions, while the Receiver is responsible for acknowledging the reception. An
Acknowledge (ACK) is signalled by the Receiver pulling the SDA line low during the ninth SCL
cycle. If the Receiver leaves the SDA line high, a NACK is signalled. When the Receiver has
received the last byte, or for some reason cannot receive any more bytes, it should inform the
Transmitter by sending a NACK after the final byte. The MSB of the data byte is transmitted first.
SDA from
Transmitter
SDA from
Receiver
SCL from
Master
1 2 7 8 9
STOP, REPEATED
SLA+R/W Data Byte START or Next
Data Byte
Addr MSB Addr LSB R/W ACK Data MSB Data LSB ACK
SDA
SCL
1 2 7 8 9 1 2 7 8 9
230 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
SCL from
Master A
SCL from
Master B
SCL Bus
Line
TBlow TBhigh
231
4921C–AUTO–01/07
Arbitration is carried out by all masters continuously monitoring the SDA line after outputting
data. If the value read from the SDA line does not match the value the Master had output, it has
lost the arbitration. Note that a Master can only lose arbitration when it outputs a high SDA value
while another Master outputs a low value. The losing Master should immediately go to Slave
mode, checking if it is being addressed by the winning Master. The SDA line should be left high,
but losing masters are allowed to generate a clock signal until the end of the current data or
address packet. Arbitration will continue until only one Master remains, and this may take many
bits. If several masters are trying to address the same Slave, arbitration will continue into the
data packet.
SDA from
Master B
SDA Line
Synchronized
SCL Line
232 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
SCL SDA
START / STOP
Spike Suppression Prescaler
Control
TWI Unit
(TWAR) (TWSR) (TWCR)
233
4921C–AUTO–01/07
4.19.5.2 Bit Rate Generator Unit
This unit controls the period of SCL when operating in a Master mode. The SCL period is con-
trolled by settings in the TWI Bit Rate Register (TWBR) and the Prescaler bits in the TWI Status
Register (TWSR). Slave operation does not depend on Bit Rate or Prescaler settings, but the
CPU clock frequency in the Slave must be at least 16 times higher than the SCL frequency. Note
that slaves may prolong the SCL low period, thereby reducing the average TWI bus clock
period. The SCL frequency is generated according to the following equation:
234 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
The TWCR is used to control the operation of the TWI. It is used to enable the TWI, to initiate a
Master access by applying a START condition to the bus, to generate a Receiver acknowledge,
to generate a stop condition, and to control halting of the bus while the data to be written to the
bus are written to the TWDR. It also indicates a write collision if data is attempted written to
TWDR while the register is inaccessible.
• Bit 7 – TWINT: TWI Interrupt Flag
This bit is set by hardware when the TWI has finished its current job and expects application
software response. If the I-bit in SREG and TWIE in TWCR are set, the MCU will jump to the
TWI Interrupt Vector.
235
4921C–AUTO–01/07
While the TWINT Flag is set, the SCL low period is stretched. The TWINT Flag must be
cleared by software by writing a logic one to it. Note that this flag is not automatically cleared
by hardware when executing the interrupt routine. Also note that clearing this flag starts the
operation of the TWI, so all accesses to the TWI Address Register (TWAR), TWI Status
Register (TWSR), and TWI Data Register (TWDR) must be complete before clearing this
flag.
• Bit 6 – TWEA: TWI Enable Acknowledge Bit
The TWEA bit controls the generation of the acknowledge pulse. If the TWEA bit is written to
one, the ACK pulse is generated on the TWI bus if the following conditions are met:
The device’s own slave address has been received.
A general call has been received, while the TWGCE bit in the TWAR is set.
A data byte has been received in Master Receiver or Slave Receiver mode.
By writing the TWEA bit to zero, the device can be virtually disconnected from the 2-wire
Serial Bus temporarily. Address recognition can then be resumed by writing the TWEA bit to
one again.
• Bit 5 – TWSTA: TWI START Condition Bit
The application writes the TWSTA bit to one when it desires to become a Master on the
2-wire Serial Bus. The TWI hardware checks if the bus is available, and generates a START
condition on the bus if it is free. However, if the bus is not free, the TWI waits until a STOP
condition is detected, and then generates a new START condition to claim the bus Master
status. TWSTA must be cleared by software when the START condition has been
transmitted.
• Bit 4 – TWSTO: TWI STOP Condition Bit
Writing the TWSTO bit to one in Master mode will generate a STOP condition on the 2-wire
Serial Bus. When the STOP condition is executed on the bus, the TWSTO bit is cleared
automatically. In Slave mode, setting the TWSTO bit can be used to recover from an error
condition. This will not generate a STOP condition, but the TWI returns to a well-defined
unaddressed Slave mode and releases the SCL and SDA lines to a high impedance state.
• Bit 3 – TWWC: TWI Write Collision Flag
The TWWC bit is set when attempting to write to the TWI Data Register – TWDR when
TWINT is low. This flag is cleared by writing the TWDR Register when TWINT is high.
• Bit 2 – TWEN: TWI Enable Bit
The TWEN bit enables TWI operation and activates the TWI interface. When TWEN is writ-
ten to one, the TWI takes control over the I/O pins connected to the SCL and SDA pins,
enabling the slew-rate limiters and spike filters. If this bit is written to zero, the TWI is
switched off and all TWI transmissions are terminated, regardless of any ongoing operation.
• Bit 1 – Res: Reserved Bit
This bit is a reserved bit and will always read as zero.
• Bit 0 – TWIE: TWI Interrupt Enable
When this bit is written to one, and the I-bit in SREG is set, the TWI interrupt request will be
activated for as long as the TWINT Flag is high.
236 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
To calculate bit rates, see “Bit Rate Generator Unit” on page 234. The value of TWPS1..0 is
used in the equation.
In Transmit mode, TWDR contains the next byte to be transmitted. In Receive mode, the TWDR
contains the last byte received. It is writable while the TWI is not in the process of shifting a byte.
This occurs when the TWI Interrupt Flag (TWINT) is set by hardware. Note that the Data Regis-
ter cannot be initialized by the user before the first interrupt occurs. The data in TWDR remains
stable as long as TWINT is set. While data is shifted out, data on the bus is simultaneously
shifted in. TWDR always contains the last byte present on the bus, except after a wake up from
a sleep mode by the TWI interrupt. In this case, the contents of TWDR is undefined. In the case
of a lost bus arbitration, no data is lost in the transition from Master to Slave. Handling of the
ACK bit is controlled automatically by the TWI logic, the CPU cannot access the ACK bit directly.
• Bits 7..0 – TWD: TWI Data Register
These eight bits constitute the next data byte to be transmitted, or the latest data byte
received on the 2-wire Serial Bus.
237
4921C–AUTO–01/07
4.19.6.5 TWI (Slave) Address Register – TWAR
Bit 7 6 5 4 3 2 1 0
TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE TWAR
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
Initial Value 1 1 1 1 1 1 1 0
The TWAR should be loaded with the 7-bit Slave address (in the seven most significant bits of
TWAR) to which the TWI will respond when programmed as a Slave Transmitter or Receiver,
and not needed in the Master modes. In multi master systems, TWAR must be set in masters
which can be addressed as Slaves by other Masters.
The LSB of TWAR is used to enable recognition of the general call address (0x00). There is an
associated address comparator that looks for the slave address (or general call address if
enabled) in the received serial address. If a match is found, an interrupt request is generated.
• Bits 7..1 – TWA: TWI (Slave) Address Register
These seven bits constitute the slave address of the TWI unit.
• Bit 0 – TWGCE: TWI General Call Recognition Enable Bit
If set, this bit enables the recognition of a General Call given over the 2-wire Serial Bus.
TWAR0
Address
Match
Address
Bit 0
TWAMR0
Address Bit Comparator 0
238 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
writes to TWCR to TWDR, and loads appropriate control and ACK received.
Application loads data into TWDR, and
Action
initiate signals into TWCR, makin sure that Application loads appropriate control
loads appropriate control signals into
transmission of TWINT is written to one, signals to send STOP into TWCR,
TWCR, making sure that TWINT is
START and TWSTA is written to zero. making sure that TWINT is written to one
written to one
Indicates
4. TWINT set.
Hardware
1. The first step in a TWI transmission is to transmit a START condition. This is done by
writing a specific value into TWCR, instructing the TWI hardware to transmit a START
condition. Which value to write is described later on. However, it is important that the
TWINT bit is set in the value written. Writing a one to TWINT clears the flag. The TWI
will not start any operation as long as the TWINT bit in TWCR is set. Immediately after
the application has cleared TWINT, the TWI will initiate transmission of the START
condition.
2. When the START condition has been transmitted, the TWINT Flag in TWCR is set, and
TWSR is updated with a status code indicating that the START condition has success-
fully been sent.
239
4921C–AUTO–01/07
3. The application software should now examine the value of TWSR, to make sure that the
START condition was successfully transmitted. If TWSR indicates otherwise, the appli-
cation software might take some special action, like calling an error routine. Assuming
that the status code is as expected, the application must load SLA+W into TWDR.
Remember that TWDR is used both for address and data. After TWDR has been
loaded with the desired SLA+W, a specific value must be written to TWCR, instructing
the TWI hardware to transmit the SLA+W present in TWDR. Which value to write is
described later on. However, it is important that the TWINT bit is set in the value written.
Writing a one to TWINT clears the flag. The TWI will not start any operation as long as
the TWINT bit in TWCR is set. Immediately after the application has cleared TWINT,
the TWI will initiate transmission of the address packet.
4. When the address packet has been transmitted, the TWINT Flag in TWCR is set, and
TWSR is updated with a status code indicating that the address packet has success-
fully been sent. The status code will also reflect whether a Slave acknowledged the
packet or not.
5. The application software should now examine the value of TWSR, to make sure that the
address packet was successfully transmitted, and that the value of the ACK bit was as
expected. If TWSR indicates otherwise, the application software might take some spe-
cial action, like calling an error routine. Assuming that the status code is as expected,
the application must load a data packet into TWDR. Subsequently, a specific value
must be written to TWCR, instructing the TWI hardware to transmit the data packet
present in TWDR. Which value to write is described later on. However, it is important
that the TWINT bit is set in the value written. Writing a one to TWINT clears the flag.
The TWI will not start any operation as long as the TWINT bit in TWCR is set. Immedi-
ately after the application has cleared TWINT, the TWI will initiate transmission of the
data packet.
6. When the data packet has been transmitted, the TWINT Flag in TWCR is set, and
TWSR is updated with a status code indicating that the data packet has successfully
been sent. The status code will also reflect whether a Slave acknowledged the packet
or not.
7. The application software should now examine the value of TWSR, to make sure that the
data packet was successfully transmitted, and that the value of the ACK bit was as
expected. If TWSR indicates otherwise, the application software might take some spe-
cial action, like calling an error routine. Assuming that the status code is as expected,
the application must write a specific value to TWCR, instructing the TWI hardware to
transmit a STOP condition. Which value to write is described later on. However, it is
important that the TWINT bit is set in the value written. Writing a one to TWINT clears
the flag. The TWI will not start any operation as long as the TWINT bit in TWCR is set.
Immediately after the application has cleared TWINT, the TWI will initiate transmission
of the STOP condition. Note that TWINT is NOT set after a STOP condition has been
sent.
240 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Even though this example is simple, it shows the principles involved in all TWI transmissions.
These can be summarized as follows:
• When the TWI has finished an operation and expects application response, the TWINT Flag
is set. The SCL line is pulled low until TWINT is cleared.
• When the TWINT Flag is set, the user must update all TWI Registers with the value relevant
for the next TWI bus cycle. As an example, TWDR must be loaded with the value to be
transmitted in the next bus cycle.
• After all TWI Register updates and other pending application software tasks have been
completed, TWCR is written. When writing TWCR, the TWINT bit should be set. Writing a
one to TWINT clears the flag. The TWI will then commence executing whatever operation
was specified by the TWCR setting.
In the following an assembly and C implementation of the example is given. Note that the code
below assumes that several definitions have been made, for example by using include-files.
241
4921C–AUTO–01/07
Table 4-89.
Assembly Code Example C Example Comments
ldi r16, (1<<TWINT)|(1<<TWSTA)| TWCR = (1<<TWINT)|(1<<TWSTA)|
1 (1<<TWEN) (1<<TWEN) Send START condition
out TWCR, r16
wait1: while (!(TWCR & (1<<TWINT)))
in r16,TWCR ; Wait for TWINT Flag set. This
2 indicates that the START condition
sbrs r16,TWINT has been transmitted
rjmp wait1
in r16,TWSR if ((TWSR & 0xF8) != START) Check value of TWI Status
andi r16, 0xF8 ERROR(); Register. Mask prescaler bits. If
cpi r16, START status different from START go to
ERROR
brne ERROR
3
ldi r16, SLA_W TWDR = SLA_W;
out TWDR, r16 TWCR = (1<<TWINT) | (1<<TWEN); Load SLA_W into TWDR Register.
Clear TWINT bit in TWCR to start
ldi r16, (1<<TWINT) | (1<<TWEN) transmission of address
out TWCR, r16
wait2: while (!(TWCR & (1<<TWINT))) Wait for TWINT Flag set. This
in r16,TWCR ; indicates that the SLA+W has been
4
sbrs r16,TWINT transmitted, and ACK/NACK has
been received.
rjmp wait2
in r16,TWSR if ((TWSR & 0xF8) != Check value of TWI Status
andi r16, 0xF8 MT_SLA_ACK) Register. Mask prescaler bits. If
cpi r16, MT_SLA_ACK ERROR(); status different from MT_SLA_ACK
go to ERROR
brne ERROR
5
ldi r16, DATA TWDR = DATA;
out TWDR, r16 TWCR = (1<<TWINT) | (1<<TWEN); Load DATA into TWDR Register.
Clear TWINT bit in TWCR to start
ldi r16, (1<<TWINT) | (1<<TWEN) transmission of data
out TWCR, r16
wait3: while (!(TWCR & (1<<TWINT))) Wait for TWINT Flag set. This
in r16,TWCR ; indicates that the DATA has been
6
sbrs r16,TWINT transmitted, and ACK/NACK has
been received.
rjmp wait3
in r16,TWSR if ((TWSR & 0xF8) != Check value of TWI Status
andi r16, 0xF8 MT_DATA_ACK) Register. Mask prescaler bits. If
cpi r16, MT_DATA_ACK ERROR(); status different from
7 MT_DATA_ACK go to ERROR
brne ERROR
ldi r16, (1<<TWINT)|(1<<TWEN)| TWCR = (1<<TWINT)|(1<<TWEN)|
(1<<TWSTO) (1<<TWSTO); Transmit STOP condition
out TWCR, r16
242 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
243
4921C–AUTO–01/07
Figure 4-88. Data Transfer in Master Transmitter Mode
VCC
Device 1 Device 2
MASTER SLAVE Device 3 ........ Device n R1 R2
TRANSMITTER RECEIVER
SDA
SCL
TWEN must be set to enable the 2-wire Serial Interface, TWSTA must be written to one to trans-
mit a START condition and TWINT must be written to one to clear the TWINT Flag. The TWI will
then test the 2-wire Serial Bus and generate a START condition as soon as the bus becomes
free. After a START condition has been transmitted, the TWINT Flag is set by hardware, and the
status code in TWSR will be 0x08 (see Table 4-90 on page 245). In order to enter MT mode,
SLA+W must be transmitted. This is done by writing SLA+W to TWDR. Thereafter the TWINT bit
should be cleared (by writing it to one) to continue the transfer. This is accomplished by writing
the following value to TWCR:
TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN – TWIE
value 1 X 0 0 X 1 0 X
When SLA+W have been transmitted and an acknowledgement bit has been received, TWINT is
set again and a number of status codes in TWSR are possible. Possible status codes in Master
mode are 0x18, 0x20, or 0x38. The appropriate action to be taken for each of these status codes
is detailed in Table 4-90 on page 245.
When SLA+W has been successfully transmitted, a data packet should be transmitted. This is
done by writing the data byte to TWDR. TWDR must only be written when TWINT is high. If not,
the access will be discarded, and the Write Collision bit (TWWC) will be set in the TWCR Regis-
ter. After updating TWDR, the TWINT bit should be cleared (by writing it to one) to continue the
transfer. This is accomplished by writing the following value to TWCR:
TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN – TWIE
value 1 X 0 0 X 1 0 X
This scheme is repeated until the last byte has been sent and the transfer is ended by generat-
ing a STOP condition or a repeated START condition. A STOP condition is generated by writing
the following value to TWCR:
TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN – TWIE
value 1 X 0 1 X 1 0 X
244 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
After a repeated START condition (state 0x10) the 2-wire Serial Interface can access the same
Slave again, or a new Slave without transmitting a STOP condition. Repeated START enables
the Master to switch between Slaves, Master Transmitter mode and Master Receiver mode with-
out losing control of the bus.
245
4921C–AUTO–01/07
Figure 4-89. Formats and States in the Master Transmitter Mode
MT
Successfull
transmission S SLA W A DATA A P
to a slave
receiver
Next transfer
started with a RS SLA W
repeated start
condition
$10
Not acknowledge R
received after the A P
slave address
$20
MR
Not acknowledge
received after a data A P
byte
$30
$38 $38
To corresponding
$68 $78 $B0 states in slave mode
246 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Device 1 Device 2
MASTER SLAVE Device 3 ........ Device n R1 R2
RECEIVER TRANSMITTER
SDA
SCL
TWEN must be written to one to enable the 2-wire Serial Interface, TWSTA must be written to
one to transmit a START condition and TWINT must be set to clear the TWINT Flag. The TWI
will then test the 2-wire Serial Bus and generate a START condition as soon as the bus
becomes free. After a START condition has been transmitted, the TWINT Flag is set by hard-
ware, and the status code in TWSR will be 0x08 (see Table 4-90 on page 245). In order to enter
MR mode, SLA+R must be transmitted. This is done by writing SLA+R to TWDR. Thereafter the
TWINT bit should be cleared (by writing it to one) to continue the transfer. This is accomplished
by writing the following value to TWCR:
TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN – TWIE
value 1 X 0 0 X 1 0 X
When SLA+R have been transmitted and an acknowledgement bit has been received, TWINT is
set again and a number of status codes in TWSR are possible. Possible status codes in Master
mode are 0x38, 0x40, or 0x48. The appropriate action to be taken for each of these status codes
is detailed in Table 4-91 on page 248. Received data can be read from the TWDR Register
when the TWINT Flag is set high by hardware. This scheme is repeated until the last byte has
been received. After the last byte has been received, the MR should inform the ST by sending a
NACK after the last received data byte. The transfer is ended by generating a STOP condition or
a repeated START condition. A STOP condition is generated by writing the following value to
TWCR:
TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN – TWIE
value 1 X 0 1 X 1 0 X
247
4921C–AUTO–01/07
After a repeated START condition (state 0x10) the 2-wire Serial Interface can access the same
Slave again, or a new Slave without transmitting a STOP condition. Repeated START enables
the Master to switch between Slaves, Master Transmitter mode and Master Receiver mode with-
out losing control over the bus.
Data byte has been received; Read data byte or 0 1 1 X STOP condition will be transmitted and TWSTO
0x58 Flag will be reset
NOT ACK has been returned
Read data byte 1 1 1 X STOP condition followed by a START condition
will be transmitted and TWSTO Flag will be reset
248 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Successfull
reception S SLA R A DATA A DATA A P
from a slave
receiver
$08 $40 $50 $58
Next transfer
started with a RS SLA R
repeated start
condition
$10
Not acknowledge W
received after the A P
slave address
$48
MT
Arbitration lost in slave Other master Other master
address or data byte A or A A
continues continues
$38 $38
To corresponding
$68 $78 $B0
states in slave mode
Device 1 Device 2
SLAVE MASTER Device 3 ........ Device n R1 R2
RECEIVER TRANSMITTER
SDA
SCL
249
4921C–AUTO–01/07
To initiate the Slave Receiver mode, TWAR and TWCR must be initialized as follows:
TWAR TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE
value Device’s Own Slave Address
The upper 7 bits are the address to which the 2-wire Serial Interface will respond when
addressed by a Master. If the LSB is set, the TWI will respond to the general call address (0x00),
otherwise it will ignore the general call address.
TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN – TWIE
value 0 1 0 0 0 1 0 X
TWEN must be written to one to enable the TWI. The TWEA bit must be written to one to enable
the acknowledgement of the device’s own slave address or the general call address. TWSTA
and TWSTO must be written to zero.
When TWAR and TWCR have been initialized, the TWI waits until it is addressed by its own
slave address (or the general call address if enabled) followed by the data direction bit. If the
direction bit is “0” (write), the TWI will operate in SR mode, otherwise ST mode is entered. After
its own slave address and the write bit have been received, the TWINT Flag is set and a valid
status code can be read from TWSR. The status code is used to determine the appropriate soft-
ware action. The appropriate action to be taken for each status code is detailed in Table 4-92 on
page 251. The Slave Receiver mode may also be entered if arbitration is lost while the TWI is in
the Master mode (see states 0x68 and 0x78).
If the TWEA bit is reset during a transfer, the TWI will return a “Not Acknowledge” (“1”) to SDA
after the next received data byte. This can be used to indicate that the Slave is not able to
receive any more bytes. While TWEA is zero, the TWI does not acknowledge its own slave
address. However, the 2-wire Serial Bus is still monitored and address recognition may resume
at any time by setting TWEA. This implies that the TWEA bit may be used to temporarily isolate
the TWI from the 2-wire Serial Bus.
In all sleep modes other than Idle mode, the clock system to the TWI is turned off. If the TWEA
bit is set, the interface can still acknowledge its own slave address or the general call address by
using the 2-wire Serial Bus clock as a clock source. The part will then wake up from sleep and
the TWI will hold the SCL clock low during the wake up and until the TWINT Flag is cleared (by
writing it to one). Further data reception will be carried out as normal, with the AVR clocks run-
ning as normal. Observe that if the AVR is set up with a long start-up time, the SCL line may be
held low for a long time, blocking other data transmissions.
Note that the 2-wire Serial Interface Data Register – TWDR does not reflect the last byte present
on the bus when waking up from these Sleep modes.
250 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
General call address has been No TWDR action or X 0 1 0 Data byte will be received and NOT ACK will be
0x70 received; ACK has been returned
returned No TWDR action X 0 1 1 Data byte will be received and ACK will be returned
Arbitration lost in SLA+R/W as No TWDR action or X 0 1 0 Data byte will be received and NOT ACK will be
Master; General call address returned
0x78
has been received; ACK has No TWDR action X 0 1 1 Data byte will be received and ACK will be returned
been returned
Previously addressed with own Read data byte or X 0 1 0 Data byte will be received and NOT ACK will be
SLA+W; data has been returned
0x80
received; ACK has been
Read data byte X 0 1 1 Data byte will be received and ACK will be returned
returned
Read data byte or 0 0 1 0 Switched to the not addressed Slave mode;
no recognition of own SLA or GCA
Read data byte or 0 0 1 1 Switched to the not addressed Slave mode;
own SLA will be recognized;
GCA will be recognized if TWGCE = “1”
Previously addressed with own Read data byte or 1 0 1 0 Switched to the not addressed Slave mode;
SLA+W; data has been no recognition of own SLA or GCA;
0x88
received; NOT ACK has been a START condition will be transmitted when the bus
returned becomes free
Read data byte 1 0 1 1 Switched to the not addressed Slave mode;
own SLA will be recognized;
GCA will be recognized if TWGCE = “1”;
a START condition will be transmitted when the bus
becomes free
251
4921C–AUTO–01/07
Table 4-92. Status Codes for Slave Receiver Mode (Continued)
Status Code Application Software Response
(TWSR) To TWCR
Prescaler Status of the 2-wire Serial
Bits Bus and 2-wire Serial
are 0 Interface Hardware To/from TWDR STA STO TWINT TWEA Next Action Taken by TWI Hardware
Previously addressed with Read data byte or X 0 1 0 Data byte will be received and NOT ACK will be
general call; data has been returned
0x90
received; ACK has been Read data byte X 0 1 1 Data byte will be received and ACK will be returned
returned
Read data byte or 0 0 1 0 Switched to the not addressed Slave mode;
no recognition of own SLA or GCA
Read data byte or 0 0 1 1 Switched to the not addressed Slave mode;
own SLA will be recognized;
GCA will be recognized if TWGCE = “1”
Previously addressed with Read data byte or 1 0 1 0 Switched to the not addressed Slave mode;
general call; data has been no recognition of own SLA or GCA;
0x98
received; NOT ACK has been a START condition will be transmitted when the bus
returned becomes free
Read data byte 1 0 1 1 Switched to the not addressed Slave mode;
own SLA will be recognized;
GCA will be recognized if TWGCE = “1”;
a START condition will be transmitted when the bus
becomes free
No action 0 0 1 0 Switched to the not addressed Slave mode;
no recognition of own SLA or GCA
0 0 1 1 Switched to the not addressed Slave mode;
own SLA will be recognized;
GCA will be recognized if TWGCE = “1”
A STOP condition or repeated 1 0 1 0 Switched to the not addressed Slave mode;
START condition has been no recognition of own SLA or GCA;
0xA0
received while still addressed a START condition will be transmitted when the bus
as Slave becomes free
1 0 1 1 Switched to the not addressed Slave mode;
own SLA will be recognized;
GCA will be recognized if TWGCE = “1”;
a START condition will be transmitted when the bus
becomes free
252 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
$88
$68
$98
$78
Device 1 Device 2
SLAVE MASTER Device 3 ........ Device n R1 R2
TRANSMITTER RECEIVER
SDA
SCL
253
4921C–AUTO–01/07
To initiate the Slave Transmitter mode, TWAR and TWCR must be initialized as follows:
TWAR TWA6 TWA5 TWA4 TWA3 TWA2 TWA1 TWA0 TWGCE
value Device’s Own Slave Address
The upper seven bits are the address to which the 2-wire Serial Interface will respond when
addressed by a Master. If the LSB is set, the TWI will respond to the general call address (0x00),
otherwise it will ignore the general call address.
TWCR TWINT TWEA TWSTA TWSTO TWWC TWEN – TWIE
value 0 1 0 0 0 1 0 X
TWEN must be written to one to enable the TWI. The TWEA bit must be written to one to enable
the acknowledgement of the device’s own slave address or the general call address. TWSTA
and TWSTO must be written to zero.
When TWAR and TWCR have been initialized, the TWI waits until it is addressed by its own
slave address (or the general call address if enabled) followed by the data direction bit. If the
direction bit is “1” (read), the TWI will operate in ST mode, otherwise SR mode is entered. After
its own slave address and the write bit have been received, the TWINT Flag is set and a valid
status code can be read from TWSR. The status code is used to determine the appropriate soft-
ware action. The appropriate action to be taken for each status code is detailed in Table 4-93 on
page 255. The Slave Transmitter mode may also be entered if arbitration is lost while the TWI is
in the Master mode (see state 0xB0).
If the TWEA bit is written to zero during a transfer, the TWI will transmit the last byte of the trans-
fer. State 0xC0 or state 0xC8 will be entered, depending on whether the Master Receiver
transmits a NACK or ACK after the final byte. The TWI is switched to the not addressed Slave
mode, and will ignore the Master if it continues the transfer. Thus the Master Receiver receives
all “1” as serial data. State 0xC8 is entered if the Master demands additional data bytes (by
transmitting ACK), even though the Slave has transmitted the last byte (TWEA zero and expect-
ing NACK from the Master).
While TWEA is zero, the TWI does not respond to its own slave address. However, the 2-wire
Serial Bus is still monitored and address recognition may resume at any time by setting TWEA.
This implies that the TWEA bit may be used to temporarily isolate the TWI from the 2-wire Serial
Bus.
In all sleep modes other than Idle mode, the clock system to the TWI is turned off. If the TWEA
bit is set, the interface can still acknowledge its own slave address or the general call address by
using the 2-wire Serial Bus clock as a clock source. The part will then wake up from sleep and
the TWI will hold the SCL clock will low during the wake up and until the TWINT Flag is cleared
(by writing it to one). Further data transmission will be carried out as normal, with the AVR clocks
running as normal. Observe that if the AVR is set up with a long start-up time, the SCL line may
be held low for a long time, blocking other data transmissions.
Note that the 2-wire Serial Interface Data Register – TWDR does not reflect the last byte present
on the bus when waking up from these sleep modes.
254 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
255
4921C–AUTO–01/07
Figure 4-95. Formats and States in the Slave Transmitter Mode
Reception of the own
slave address and one or S SLA R A DATA A DATA A P or S
more data bytes
$B0
$C8
256 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
257
4921C–AUTO–01/07
Figure 4-97. An Arbitration Example
VCC
SDA
SCL
Own No 38 TWI bus will be released and not addressed slave mode will be entered
Address / General Call
A START condition will be transmitted when the bus becomes free
received
Yes
Write 68/78 Data byte will be received and NOT ACK will be returned
Direction
Data byte will be received and ACK will be returned
Read Last data byte will be transmitted and NOT ACK should be received
B0 Data byte will be transmitted and ACK should be received
258 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
ACBG
ACD
ACIE
AIN0
ANALOG
INTERRUPT COMPARATOR
SELECT IRQ
ACI
AIN1
ACME
ADEN
TO T/C1 CAPTURE
TRIGGER MUX
ACO
ADC MULTIPLEXER
OUTPUT (1)
259
4921C–AUTO–01/07
4.20.2 Analog Comparator Control and Status Register – ACSR
Bit 7 6 5 4 3 2 1 0
ACD ACBG ACO ACI ACIE ACIC ACIS1 ACIS0 ACSR
Read/Write R/W R/W R R/W R/W R/W R/W R/W
Initial Value 0 0 N/A 0 0 0 0 0
260 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
261
4921C–AUTO–01/07
4.21 Analog-to-Digital Converter
4.21.1 Features
• 10-bit Resolution
• 0.5 LSB Integral Non-linearity
• ±2 LSB Absolute Accuracy
• 13 - 260 µs Conversion Time
• Up to 15 kSPS at Maximum Resolution
• 6 Multiplexed Single Ended Input Channels
• 2 Additional Multiplexed Single Ended Input Channels (TQFP and MLF Package only)
• Optional Left Adjustment for ADC Result Readout
• 0 - VCC ADC Input Voltage Range
• Selectable 1.1V ADC Reference Voltage
• Free Running or Single Conversion Mode
• Interrupt on ADC Conversion Complete
• Sleep Mode Noise Canceler
The ATA6602/ATA6603 features a 10-bit successive approximation ADC. The ADC is con-
nected to an 8-channel Analog Multiplexer which allows eight single-ended voltage inputs
constructed from the pins of Port A. The single-ended voltage inputs refer to 0V (GND).
The ADC contains a Sample and Hold circuit which ensures that the input voltage to the ADC is
held at a constant level during conversion. A block diagram of the ADC is shown in Figure 4-100
on page 263.
The ADC has a separate analog supply voltage pin, AVCC. AVCC must not differ more than ±
0.3V from VCC. See the paragraph “ADC Noise Canceler” on page 269 on how to connect this
pin.
Internal reference voltages of nominally 1.1V or AVCC are provided On-chip. The voltage refer-
ence may be externally decoupled at the AREF pin by a capacitor for better noise performance.
The Power Reduction ADC bit, PRADC, in “Power Reduction Register - PRR” on page 63 must
be disabled by writing a logical zero to enable the ADC.
262 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
ADIE
ADIF
15 0
ADC MULTIPLEXER ADC CTRL. & STATUS ADC DATA REGISTER
SELECT (ADMUX) REGISTER (ADCSRA) (ADCH/ADCL)
ADLAR
REFS1
MUX3
MUX2
MUX1
MUX0
REFS0
ADPS2
ADPS1
ADPS0
ADEN
ADSC
ADFR
ADIF
ADC[9:0]
MUX DECODER
PRESCALER
CHANNEL SELECTION
CONVERSION LOGIC
AVCC
INTERNAL 1.1V
REFERENCE SAMPLE and HOLD
COMPARATOR
AREF
10-BIT DAC -
+
GND
BANDGAP
REFERENCE
ADC7
ADC6
ADC4
ADC3
ADC2
ADC1
ADC0
The ADC converts an analog input voltage to a 10-bit digital value through successive approxi-
mation. The minimum value represents GND and the maximum value represents the voltage on
the AREF pin minus 1 LSB. Optionally, AVCC or an internal 1.1V reference voltage may be con-
nected to the AREF pin by writing to the REFSn bits in the ADMUX Register. The internal
voltage reference may thus be decoupled by an external capacitor at the AREF pin to improve
noise immunity.
The analog input channel is selected by writing to the MUX bits in ADMUX. Any of the ADC input
pins, as well as GND and a fixed bandgap voltage reference, can be selected as single ended
inputs to the ADC. The ADC is enabled by setting the ADC Enable bit, ADEN in ADCSRA. Volt-
age reference and input channel selections will not go into effect until ADEN is set. The ADC
does not consume power when ADEN is cleared, so it is recommended to switch off the ADC
before entering power saving sleep modes.
263
4921C–AUTO–01/07
The ADC generates a 10-bit result which is presented in the ADC Data Registers, ADCH and
ADCL. By default, the result is presented right adjusted, but can optionally be presented left
adjusted by setting the ADLAR bit in ADMUX.
If the result is left adjusted and no more than 8-bit precision is required, it is sufficient to read
ADCH. Otherwise, ADCL must be read first, then ADCH, to ensure that the content of the Data
Registers belongs to the same conversion. Once ADCL is read, ADC access to Data Registers
is blocked. This means that if ADCL has been read, and a conversion completes before ADCH is
read, neither register is updated and the result from the conversion is lost. When ADCH is read,
ADC access to the ADCH and ADCL Registers is re-enabled.
The ADC has its own interrupt which can be triggered when a conversion completes. When ADC
access to the Data Registers is prohibited between reading of ADCH and ADCL, the interrupt
will trigger even if the result is lost.
START CLKADC
ADIF ADATE
SOURCE 1
. CONVERSION
. LOGIC
.
. EDGE
SOURCE n DETECTOR
ADSC
264 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Using the ADC Interrupt Flag as a trigger source makes the ADC start a new conversion as soon
as the ongoing conversion has finished. The ADC then operates in Free Running mode, con-
stantly sampling and updating the ADC Data Register. The first conversion must be started by
writing a logical one to the ADSC bit in ADCSRA. In this mode the ADC will perform successive
conversions independently of whether the ADC Interrupt Flag, ADIF is cleared or not.
If Auto Triggering is enabled, single conversions can be started by writing ADSC in ADCSRA to
one. ADSC can also be used to determine if a conversion is in progress. The ADSC bit will be
read as one during a conversion, independently of how the conversion was started.
CK/128
CK/64
CK/32
CK/16
CK/2
CK/4
CK/8
ADPS0
ADPS1
ADPS2
By default, the successive approximation circuitry requires an input clock frequency between 50
kHz and 200 kHz to get maximum resolution. If a lower resolution than 10 bits is needed, the
input clock frequency to the ADC can be higher than 200 kHz to get a higher sample rate.
The ADC module contains a prescaler, which generates an acceptable ADC clock frequency
from any CPU frequency above 100 kHz. The prescaling is set by the ADPS bits in ADCSRA.
The prescaler starts counting from the moment the ADC is switched on by setting the ADEN bit
in ADCSRA. The prescaler keeps running for as long as the ADEN bit is set, and is continuously
reset when ADEN is low.
When initiating a single ended conversion by setting the ADSC bit in ADCSRA, the conversion
starts at the following rising edge of the ADC clock cycle.
A normal conversion takes 13 ADC clock cycles. The first conversion after the ADC is switched
on (ADEN in ADCSRA is set) takes 25 ADC clock cycles in order to initialize the analog circuitry.
The actual sample-and-hold takes place 1.5 ADC clock cycles after the start of a normal conver-
sion and 13.5 ADC clock cycles after the start of an first conversion. When a conversion is
complete, the result is written to the ADC Data Registers, and ADIF is set. In Single Conversion
mode, ADSC is cleared simultaneously. The software may then set ADSC again, and a new
conversion will be initiated on the first rising ADC clock edge.
265
4921C–AUTO–01/07
When Auto Triggering is used, the prescaler is reset when the trigger event occurs. This assures
a fixed delay from the trigger event to the start of conversion. In this mode, the sample-and-hold
takes place two ADC clock cycles after the rising edge on the trigger source signal. Three addi-
tional CPU clock cycles are used for synchronization logic.
In Free Running mode, a new conversion will be started immediately after the conversion com-
pletes, while ADSC remains high. For a summary of conversion times (see Table 4-97 on page
267).
Figure 4-103. ADC Timing Diagram, First Conversion (Single Conversion Mode)
Next
First Conversion Conversion
Cycle Number 1 2 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 2 3
ADC Clock
ADEN
ADSC
ADIF
Cycle Number 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3
ADC Clock
ADSC
ADIF
266 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Cycle Number 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2
ADC Clock
Trigger
Source
ADATE
ADIF
11 12 13 1 2 3 4
Cycle Number
ADC Clock
ADSC
ADIF
267
4921C–AUTO–01/07
4.21.4 Changing Channel or Reference Selection
The MUXn and REFS1:0 bits in the ADMUX Register are single buffered through a temporary
register to which the CPU has random access. This ensures that the channels and reference
selection only takes place at a safe point during the conversion. The channel and reference
selection is continuously updated until a conversion is started. Once the conversion starts, the
channel and reference selection is locked to ensure a sufficient sampling time for the ADC. Con-
tinuous updating resumes in the last ADC clock cycle before the conversion completes (ADIF in
ADCSRA is set). Note that the conversion starts on the following rising ADC clock edge after
ADSC is written. The user is thus advised not to write new channel or reference selection values
to ADMUX until one ADC clock cycle after ADSC is written.
If Auto Triggering is used, the exact time of the triggering event can be indeterministic. Special
care must be taken when updating the ADMUX Register, in order to control which conversion
will be affected by the new settings.
If both ADATE and ADEN is written to one, an interrupt event can occur at any time. If the
ADMUX Register is changed in this period, the user cannot tell if the next conversion is based
on the old or the new settings. ADMUX can be safely updated in the following ways:
a. When ADATE or ADEN is cleared.
b. During conversion, minimum one ADC clock cycle after the trigger event.
c. After a conversion, before the Interrupt Flag used as trigger source is cleared.
When updating ADMUX in one of these conditions, the new settings will affect the next ADC
conversion.
268 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
If the user has a fixed voltage source connected to the AREF pin, the user may not use the other
reference voltage options in the application, as they will be shorted to the external voltage. If no
external voltage is applied to the AREF pin, the user may switch between AVCC and 1.1V as ref-
erence selection. The first ADC conversion result after switching reference voltage source may
be inaccurate, and the user is advised to discard this result.
269
4921C–AUTO–01/07
Figure 4-107. Analog Input Circuitry
IIH
ADCn
1..100 kW
CS/H = 14 pF
IIL
VCC/2
270 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
PC4 (ADC4/SDA)
PC5 (ADC5/SCL)
PC3 (ADC3)
PC2 (ADC2)
VCC
PC1 (ADC1)
PC0 (ADC0)
ADC7
GND
10 mH
AREF
ADC6
100 nF
AVCC
PB5
271
4921C–AUTO–01/07
Figure 4-109. Offset Error
Output Code
Ideal ADC
Actual ADC
Offset
Error
VREF Input Voltage
• Gain error: After adjusting for offset, the gain error is found as the deviation of the last
transition (0x3FE to 0x3FF) compared to the ideal transition (at 1.5 LSB below maximum).
Ideal value: 0 LSB
Ideal ADC
Actual ADC
• Integral Non-linearity (INL): After adjusting for offset and gain error, the INL is the maximum
deviation of an actual transition compared to an ideal transition for any code. Ideal value: 0
LSB.
Ideal ADC
Actual ADC
272 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
• Differential Non-linearity (DNL): The maximum deviation of the actual code width (the interval
between two adjacent transitions) from the ideal code width (1 LSB). Ideal value: 0 LSB.
1 LSB
DNL
0x000
• Quantization Error: Due to the quantization of the input voltage into a finite number of codes,
a range of input voltages (1 LSB wide) will code to the same value. Always ±0.5 LSB.
• Absolute accuracy: The maximum deviation of an actual (unadjusted) transition compared to
an ideal transition for any code. This is the compound effect of offset, gain error, differential
error, non-linearity, and quantization error. Ideal value: ±0.5 LSB.
273
4921C–AUTO–01/07
4.21.6 ADC Conversion Result
After the conversion is complete (ADIF is high), the conversion result can be found in the ADC
Result Registers (ADCL, ADCH).
For single ended conversion, the result is
V IN ⋅ 1024
ADC = ----------------------------
-
V REF
where VIN is the voltage on the selected input pin and VREF the selected voltage reference (see
Table 4-98 on page 274 and Table 4-99 on page 275). 0x000 represents analog ground, and
0x3FF represents the selected reference voltage minus one LSB.
274 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
275
4921C–AUTO–01/07
• Bit 4 – ADIF: ADC Interrupt Flag
This bit is set when an ADC conversion completes and the Data Registers are updated. The
ADC Conversion Complete Interrupt is executed if the ADIE bit and the I-bit in SREG are
set. ADIF is cleared by hardware when executing the corresponding interrupt handling vec-
tor. Alternatively, ADIF is cleared by writing a logical one to the flag. Beware that if doing a
Read-Modify-Write on ADCSRA, a pending interrupt can be disabled. This also applies if the
SBI and CBI instructions are used.
• Bit 3 – ADIE: ADC Interrupt Enable
When this bit is written to one and the I-bit in SREG is set, the ADC Conversion Complete
Interrupt is activated.
• Bits 2:0 – ADPS2:0: ADC Prescaler Select Bits
These bits determine the division factor between the system clock frequency and the input
clock to the ADC.
276 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Bit 15 14 13 12 11 10 9 8
– – – – – – ADC9 ADC8 ADCH
ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 ADCL
7 6 5 4 3 2 1 0
Read/Write R R R R R R R R
R R R R R R R R
Initial Value 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
ADLAR = 1
Bit 15 14 13 12 11 10 9 8
ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADCH
ADC1 ADC0 – – – – – – ADCL
7 6 5 4 3 2 1 0
Read/Write R R R R R R R R
R R R R R R R R
Initial Value 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
When an ADC conversion is complete, the result is found in these two registers.
When ADCL is read, the ADC Data Register is not updated until ADCH is read. Consequently, if
the result is left adjusted and no more than 8-bit precision is required, it is sufficient to read
ADCH. Otherwise, ADCL must be read first, then ADCH.
The ADLAR bit in ADMUX, and the MUXn bits in ADMUX affect the way the result is read from
the registers. If ADLAR is set, the result is left adjusted. If ADLAR is cleared (default), the result
is right adjusted.
• ADC9:0: ADC Conversion Result
These bits represent the result from the conversion, as detailed in “ADC Conversion Result”
on page 274.
277
4921C–AUTO–01/07
4.21.6.4 ADC Control and Status Register B – ADCSRB
Bit 7 6 5 4 3 2 1 0
– ACME – – – ADTS2 ADTS1 ADTS0 ADCSRB
Read/Write R R/W R R R R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0
278 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
4.22.1 Features
• Complete Program Flow Control
• Emulates All On-chip Functions, Both Digital and Analog, except RESET Pin
• Real-time Operation
• Symbolic Debugging Support (Both at C and Assembler Source Level, or for Other HLLs)
• Unlimited Number of Program Break Points (Using Software Break Points)
• Non-intrusive Operation
• Electrical Characteristics Identical to Real Device
• Automatic Configuration System
• High-Speed Operation
• Programming of Non-volatile Memories
4.22.2 Overview
The debugWIRE On-chip debug system uses a One-wire, bi-directional interface to control the
program flow, execute AVR instructions in the CPU and to program the different non-volatile
memories.
VCC
dW dW(RESE)
GND
Figure 4-113 shows the schematic of a target MCU, with debugWIRE enabled, and the emulator
connector. The system clock is not affected by debugWIRE and will always be the clock source
selected by the CKSEL Fuses.
279
4921C–AUTO–01/07
When designing a system where debugWIRE will be used, the following observations must be
made for correct operation:
• Pull-up resistors on the dW/(RESET) line must not be smaller than 10kΩ. The pull-up resistor
is not required for debugWIRE functionality.
• Connecting the RESET pin directly to VCC will not work.
• Capacitors connected to the RESET pin must be disconnected when using debugWire.
• All external reset sources must be disconnected.
The DWDR Register provides a communication channel from the running program in the MCU
to the debugger. This register is only accessible by the debugWIRE and can therefore not be
used as a general purpose register in the normal operations.
280 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
281
4921C–AUTO–01/07
4.23.3 Read-While-Write and No Read-While-Write Flash Sections
Whether the CPU supports Read-While-Write or if the CPU is halted during a Boot Loader soft-
ware update is dependent on which address that is being programmed. In addition to the two
sections that are configurable by the BOOTSZ Fuses as described above, the Flash is also
divided into two fixed sections, the Read-While-Write (RWW) section and the No
Read-While-Write (NRWW) section. The limit between the RWW- and NRWW sections is given
in Table 4-108 on page 295 and Figure 4-115 on page 284. The main difference between the
two sections is:
• When erasing or writing a page located inside the RWW section, the NRWW section can be
read during the operation.
• When erasing or writing a page located inside the NRWW section, the CPU is halted during
the entire operation.
Note that the user software can never read any code that is located inside the RWW section dur-
ing a Boot Loader software operation. The syntax “Read-While-Write section” refers to which
section that is being programmed (erased or written), not which section that actually is being
read during a Boot Loader software update.
282 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Read-While-Write
(RWW) Section
Z-pointer
Addresses NRWW
Section
Z-pointer
Addresses RWW No Read-While-Write
Section (NRWW) Section
CPU is Halted
During the Operation
Code Located in
NRWW Section
Can be Read During
the Operation
283
4921C–AUTO–01/07
Figure 4-115. Memory Sections
Program Memory Program Memory
BOOTSZ = '11' BOOTSZ = '10'
0x0000 0x0000
Read-While-Write Section
Read-While-Write Section
Application Flash Section Application Flash Section
No Read-While-Write Section
No Read-While-Write Section
End RWW End RWW
Start NRWW Start NRWW
End Application
End Application Start Boot Loader
Start Boot Loader Boot Loader Flash Section
Boot Loader Flash Section
Flashend Flashend
Read-While-Write Section
No Read-While-Write Section
End RWW
Start NRWW Start NRWW, Start Boot Loader
Application Flash Section
End Application
Boot Loader Flash Section
Start Boot Loader
Boot Loader Flash Section
Flashend Flashend
Note: 1. The parameters in the figure above are given in Table 4-107 on page 295.
284 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Table 4-104. Boot Lock Bit1 Protection Modes (Boot Loader Section)(1)
BLB1 Mode BLB12 BLB11 Protection
No restrictions for SPM or LPM accessing the Boot Loader
1 1 1
section.
2 1 0 SPM is not allowed to write to the Boot Loader section.
SPM is not allowed to write to the Boot Loader section, and LPM
executing from the Application section is not allowed to read from
3 0 0 the Boot Loader section. If Interrupt Vectors are placed in the
Application section, interrupts are disabled while executing from
the Boot Loader section.
LPM executing from the Application section is not allowed to read
from the Boot Loader section. If Interrupt Vectors are placed in the
4 0 1
Application section, interrupts are disabled while executing from
the Boot Loader section.
285
4921C–AUTO–01/07
4.23.5 Entering the Boot Loader Program
Entering the Boot Loader takes place by a jump or call from the application program. This may
be initiated by a trigger such as a command received via USART, or SPI interface. Alternatively,
the Boot Reset Fuse can be programmed so that the Reset Vector is pointing to the Boot Flash
start address after a reset. In this case, the Boot Loader is started after a reset. After the applica-
tion code is loaded, the program can start executing the application code. Note that the fuses
cannot be changed by the MCU itself. This means that once the Boot Reset Fuse is pro-
grammed, the Reset Vector will always point to the Boot Loader Reset and the fuse can only be
changed through the serial or parallel programming interface.
286 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
287
4921C–AUTO–01/07
4.23.6 Addressing the Flash During Self-Programming
The Z-pointer is used to address the SPM commands.
Bit 15 14 13 12 11 10 9 8
ZH (R31) Z15 Z14 Z13 Z12 Z11 Z10 Z9 Z8
ZL (R30) Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0
7 6 5 4 3 2 1 0
Since the Flash is organized in pages (see Table 4-123 on page 303), the Program Counter can
be treated as having two different sections. One section, consisting of the least significant bits, is
addressing the words within a page, while the most significant bits are addressing the pages.
This is1 shown in Figure 4-116. Note that the Page Erase and Page Write operations are
addressed independently. Therefore it is of major importance that the Boot Loader software
addresses the same page in both the Page Erase and Page Write operation. Once a program-
ming operation is initiated, the address is latched and the Z-pointer can be used for other
operations.
The only SPM operation that does not use the Z-pointer is Setting the Boot Loader Lock bits.
The content of the Z-pointer is ignored and will have no effect on the operation. The LPM
instruction does also use the Z-pointer to store the address. Since this instruction addresses the
Flash byte-by-byte, also the LSB (bit Z0) of the Z-pointer is used.
PCMSB PAGEMSB
PROGRAM
PCPAGE PCWORD
COUNTER
01
02
PAGEEND
Note: 1. The different variables used in Figure 4-116 are listed in Table 4-109 on page 295.
288 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
289
4921C–AUTO–01/07
4.23.7.3 Performing a Page Write
To execute Page Write, set up the address in the Z-pointer, write “X0000101” to SPMCSR and
execute SPM within four clock cycles after writing SPMCSR. The data in R1 and R0 is ignored.
The page address must be written to PCPAGE. Other bits in the Z-pointer must be written to
zero during this operation.
• Page Write to the RWW section: The NRWW section can be read during the Page Write.
• Page Write to the NRWW section: The CPU is halted during the operation.
See Table 4-103 on page 285 and Table 4-104 on page 285 for how the different settings of the
Boot Loader bits affect the Flash access.
290 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
If bits 5..2 in R0 are cleared (zero), the corresponding Boot Lock bit will be programmed if an
SPM instruction is executed within four cycles after BLBSET and SELFPRGEN are set in
SPMCSR. The Z-pointer is don’t care during this operation, but for future compatibility it is rec-
ommended to load the Z-pointer with 0x0001 (same as used for reading the lOck bits). For future
compatibility it is also recommended to set bits 7, 6, 1, and 0 in R0 to “1” when writing the Lock
bits. When programming the Lock bits the entire Flash can be read during the operation.
The algorithm for reading the Fuse Low byte is similar to the one described above for reading
the Lock bits. To read the Fuse Low byte, load the Z-pointer with 0x0000 and set the BLBSET
and SELFPRGEN bits in SPMCSR. When an LPM instruction is executed within three cycles
after the BLBSET and SELFPRGEN bits are set in the SPMCSR, the value of the Fuse Low byte
(FLB) will be loaded in the destination register as shown below. Refer to Table 4-116 on page
299 for a detailed description and mapping of the Fuse Low byte.
Bit 7 6 5 4 3 2 1 0
Rd FLB7 FLB6 FLB5 FLB4 FLB3 FLB2 FLB1 FLB0
Similarly, when reading the Fuse High byte, load 0x0003 in the Z-pointer. When an LPM instruc-
tion is executed within three cycles after the BLBSET and SELFPRGEN bits are set in the
SPMCSR, the value of the Fuse High byte (FHB) will be loaded in the destination register as
shown below. Refer to Table 4-117 on page 299 for detailed description and mapping of the
Fuse High byte.
Bit 7 6 5 4 3 2 1 0
Rd FHB7 FHB6 FHB5 FHB4 FHB3 FHB2 FHB1 FHB0
291
4921C–AUTO–01/07
When reading the Extended Fuse byte, load 0x0002 in the Z-pointer. When an LPM instruction
is executed within three cycles after the BLBSET and SELFPRGEN bits are set in the SPMCSR,
the value of the Extended Fuse byte (EFB) will be loaded in the destination register as shown
below. Refer to Table 4-116 on page 299 for detailed description and mapping of the Extended
Fuse byte.
Bit 7 6 5 4 3 2 1 0
Rd – – – – EFB3 EFB2 EFB1 EFB0
Fuse and Lock bits that are programmed, will be read as zero. Fuse and Lock bits that are
unprogrammed, will be read as one.
292 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
293
4921C–AUTO–01/07
; return to RWW section
; verify that RWW section is safe to read
Return:
in temp1, SPMCSR
sbrs temp1, RWWSB ; If RWWSB is set, the RWW section is not ready yet
ret
; re-enable the RWW section
ldi spmcrval, (1<<RWWSRE) | (1<<SELFPRGEN)
call Do_spm
rjmp Return
Do_spm:
; check for previous SPM complete
Wait_spm:
in temp1, SPMCSR
sbrc temp1, SELFPRGEN
rjmp Wait_spm
; input: spmcrval determines SPM action
; disable interrupts if enabled, store status
in temp2, SREG
cli
; check that no EEPROM write access is present
Wait_ee:
sbic EECR, EEPE
rjmp Wait_ee
; SPM timed sequence
out SPMCSR, spmcrval
spm
; restore SREG (to enable interrupts if originally enabled)
out SREG, temp2
ret
294 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Note: The different BOOTSZ Fuse configurations are shown in Figure 4-115 on page 284.
For details about these two section, see “NRWW – No Read-While-Write Section” on page 282
and “RWW – Read-While-Write Section” on page 282.
Table 4-109. Explanation of Different Variables used in Figure 4-116 on page 288 and the
Mapping to the Z-pointer, ATA6602
Corresponding
Variable Z-value(1) Description
Most significant bit in the Program Counter. (The
PCMSB 11
Program Counter is 12 bits PC[11:0])
Most significant bit which is used to address the words
PAGEMSB 4 within one page (32 words in a page requires 5 bits PC
[4:0]).
Bit in Z-register that is mapped to PCMSB. Because
ZPCMSB Z12
Z0 is not used, the ZPCMSB equals PCMSB + 1.
Bit in Z-register that is mapped to PAGEMSB. Because
ZPAGEMSB Z5
Z0 is not used, the ZPAGEMSB equals PAGEMSB + 1.
Program counter page address: Page select, for page
PCPAGE PC[11:5] Z12:Z6
erase and page write
Program counter word address: Word select, for filling
PCWORD PC[4:0] Z5:Z1 temporary buffer (must be zero during page write
operation)
295
4921C–AUTO–01/07
4.23.7.14 ATA6603 Boot Loader Parameters
In Table 4-110 through Table 4-112, the parameters used in the description of the self program-
ming are given.
Table 4-110. Boot Size Configuration, ATA6603
Boot Boot Reset
Application Loader End Address (Start
Boot Flash Flash Application Boot Loader
BOOTSZ1 BOOTSZ0 Size Pages Section Section Section Section)
128 0x0000 - 0x1F80 -
1 1 2 0x1F7F 0x1F80
words 0x1F7F 0x1FFF
256 0x0000 - 0x1F00 -
1 0 4 0x1EFF 0x1F00
words 0x1EFF 0x1FFF
512 0x0000 - 0x1E00 -
0 1 8 0x1DFF 0x1E00
words 0x1DFF 0x1FFF
1024 0x0000 - 0x1C00 -
0 0 16 0x1BFF 0x1C00
words 0x1BFF 0x1FFF
Note: The different BOOTSZ Fuse configurations are shown in Figure 4-115 on page 284.
For details about these two section, see “NRWW – No Read-While-Write Section” on page 282
and “RWW – Read-While-Write Section” on page 282.
Table 4-112. Explanation of Different Variables used in Figure 4-116 on page 288 and the
Mapping to the Z-pointer, ATA6603
Corresponding
Variable Z-value(1) Description
Most significant bit in the Program Counter. (The
PCMSB 12
Program Counter is 12 bits PC[11:0])
Most significant bit which is used to address the
PAGEMSB 5 words within one page (64 words in a page
requires 6 bits PC [5:0])
Bit in Z-register that is mapped to PCMSB. Because
ZPCMSB Z13
Z0 is not used, the ZPCMSB equals PCMSB + 1.
Bit in Z-register that is mapped to PAGEMSB. Because
ZPAGEMSB Z6
Z0 is not used, the ZPAGEMSB equals PAGEMSB + 1.
Program counter page address: Page select, for page
PCPAGE PC[12:6] Z13:Z7
erase and page write
Program counter word address: Word select, for filling
PCWORD PC[5:0] Z6:Z1 temporary buffer (must be zero during page write
operation)
296 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Notes: 1. Program the Fuse bits and Boot Lock bits before programming the LB1 and LB2.
2. “1” means unprogrammed, “0” means programmed
297
4921C–AUTO–01/07
Table 4-115. Lock Bit Protection Modes(1)(2). Only ATA6602/ATA6603.
BLB0 Mode BLB02 BLB01
1 1 1 No restrictions for SPM or LPM accessing the Application section.
2 1 0 SPM is not allowed to write to the Application section.
SPM is not allowed to write to the Application section, and LPM
executing from the Boot Loader section is not allowed to read from
3 0 0 the Application section. If Interrupt Vectors are placed in the Boot
Loader section, interrupts are disabled while executing from the
Application section.
LPM executing from the Boot Loader section is not allowed to read
from the Application section. If Interrupt Vectors are placed in the
4 0 1
Boot Loader section, interrupts are disabled while executing from
the Application section.
BLB1 Mode BLB12 BLB11
No restrictions for SPM or LPM accessing the Boot Loader
1 1 1
section.
2 1 0 SPM is not allowed to write to the Boot Loader section.
SPM is not allowed to write to the Boot Loader section, and LPM
executing from the Application section is not allowed to read from
3 0 0 the Boot Loader section. If Interrupt Vectors are placed in the
Application section, interrupts are disabled while executing from
the Boot Loader section.
LPM executing from the Application section is not allowed to read
from the Boot Loader section. If Interrupt Vectors are placed in the
4 0 1
Application section, interrupts are disabled while executing from
the Boot Loader section.
Notes: 1. Program the Fuse bits and Boot Lock bits before programming the LB1 and LB2.
2. “1” means unprogrammed, “0” means programmed
298 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Notes: 1. See “Alternate Functions of Port C” on page 98 for description of RSTDISBL Fuse.
2. The SPIEN Fuse is not accessible in serial programming mode.
3. See “Watchdog Timer Control Register - WDTCSR” on page 75 for details.
4. See Table 4-21 on page 68 for BODLEVEL Fuse decoding.
299
4921C–AUTO–01/07
Table 4-118. Fuse Low Byte
Low Fuse Byte Bit No Description Default Value
CKDIV8(4) 7 Divide clock by 8 0 (programmed)
(3)
CKOUT 6 Clock output 1 (unprogrammed)
SUT1 5 Select start-up time 1 (unprogrammed)(1)
SUT0 4 Select start-up time 0 (programmed)(1)
CKSEL3 3 Select Clock source 0 (programmed)(2)
CKSEL2 2 Select Clock source 0 (programmed)(2)
CKSEL1 1 Select Clock source 1 (unprogrammed)(2)
CKSEL0 0 Select Clock source 0 (programmed)(2)
Note: 1. The default value of SUT1..0 results in maximum start-up time for the default clock source.
See Table 4-12 on page 54 for details.
2. The default setting of CKSEL3..0 results in internal RC Oscillator @ 8 MHz. See Table 4-11 on
page 54 for details.
3. The CKOUT Fuse allows the system clock to be output on PORTB0. See “Clock Output Buffer”
on page 57 for details.
4. See “System Clock Prescaler” on page 57 for details.
The status of the Fuse bits is not affected by Chip Erase. Note that the Fuse bits are locked if
Lock bit1 (LB1) is programmed. Program the Fuse bits before programming the Lock bits.
300 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
WR PD3 AVCC
XA1 PD6
PAGEL PD7
+12 V RESET
BS2 PC2
XTAL1
GND
301
4921C–AUTO–01/07
Table 4-119. Pin Name Mapping
Signal Name in
Programming Mode Pin Name I/O Function
0: Device is busy programming, 1: Device is
RDY/BSY PD1 O
ready for new command
OE PD2 I Output Enable (Active low)
WR PD3 I Write Pulse (Active low)
Byte Select 1 (“0” selects Low byte, “1” selects
BS1 PD4 I
High byte)
XA0 PD5 I XTAL Action Bit 0
XA1 PD6 I XTAL Action Bit 1
PAGEL PD7 I Program memory and EEPROM Data Page Load
Byte Select 2 (“0” selects Low byte, “1” selects
BS2 PC2 I
2’nd High byte)
DATA {PC[1:0]: PB[5:0]} I/O Bi-directional Data bus (Output when OE is low)
302 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Table 4-123. No. of Words in a Page and No. of Pages in the Flash
No. of
Device Flash Size Page Size PCWORD Pages PCPAGE PCMSB
4K words
ATA6602 32 words PC[4:0] 128 PC[11:5] 11
(8K bytes)
8K words
ATA6603 64 words PC[5:0] 128 PC[12:6] 12
(16K bytes)
Table 4-124. No. of Words in a Page and No. of Pages in the EEPROM
EEPROM Page No. of
Device Size Size PCWORD Pages PCPAGE EEAMSB
ATA6602 512 bytes 4 bytes EEA[1:0] 128 EEA[8:2] 8
ATA6603 512 bytes 4 bytes EEA[1:0] 128 EEA[8:2] 8
303
4921C–AUTO–01/07
4.24.7.2 Considerations for Efficient Programming
The loaded command and address are retained in the device during programming. For efficient
programming, the following should be considered.
• The command needs only be loaded once when writing or reading multiple memory
locations.
• Skip writing the data value 0xFF, that is the contents of the entire EEPROM (unless the
EESAVE Fuse is programmed) and Flash after a Chip Erase.
• Address high byte needs only be loaded before programming or reading a new 256 word
window in Flash or 256 byte EEPROM. This consideration also applies to Signature bytes
reading.
304 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
305
4921C–AUTO–01/07
Figure 4-118. Addressing the Flash Which is Organized in Pages(1)
PCMSB PAGEMSB
PROGRAM
PCPAGE PCWORD
COUNTER
01
02
PAGEEND
Note: 1. PCPAGE and PCWORD are listed in Table 4-123 on page 303.
A B C D E B C D E G H
0x10 ADDR. LOW DATA LOW DATA HIGH XX ADDR. LOW DATA LOW DATA HIGH XX ADDR. HIGH XX
DATA
XA1
XA0
BS1
XTAL1
WR
RDY/BSY
RESET +12V
OE
PAGEL
BS2
Note: 1. “XX” is do not care. The letters refer to the programming description above.
306 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
A G B C E B C E L
0x11 ADDR. HIGH ADDR. LOW DATA XX ADDR. LOW DATA XX
DATA
XA1
XA0
BS1
XTAL1
WR
RDY/BSY
RESET +12V
OE
PAGEL
BS2
307
4921C–AUTO–01/07
4.24.7.7 Reading the EEPROM
The algorithm for reading the EEPROM memory is as follows (refer to “Programming the Flash”
on page 304 for details on Command and Address loading):
1. A: Load Command “0000 0011”.
2. G: Load Address High Byte (0x00 - 0xFF).
3. B: Load Address Low Byte (0x00 - 0xFF).
4. Set OE to “0”, and BS1 to “0”. The EEPROM Data byte can now be read at DATA.
5. Set OE to “1”.
308 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
A C A C A C
0x40 DATA XX 0x40 DATA XX 0x40 DATA XX
DATA
XA1
XA0
BS1
BS2
XTAL1
WR
RDY/BSY
RESET +12V
OE
PAGEL
309
4921C–AUTO–01/07
Figure 4-122. Mapping Between BS1, BS2 and the Fuse and Lock Bits During Read
0
Extended Fuse Byte 1
DATA
BS2
Lock Bits 0
1
BS1
Fuse High Byte 1
BS2
Figure 4-123. Parallel Programming Timing, Including some General Timing Requirements
tXLWL
tXHXL
XTAL1
tDVXH tXLDX
Data & Contol
(DATA, XA0/1, BS1, BS2)
tWLWH
WR tPLWL
WLRL
RDY/BSY
tWLRH
310 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Figure 4-124. Parallel Programming Timing, Loading Sequence with Timing Requirements(1)
LOAD ADDRESS LOAD DATA LOAD DATA LOAD DATA LOAD ADDRESS
(LOW BYTE) (LOW BYTE) (HIGH BYTE) (LOW BYTE)
BS1
PAGEL
DATA ADDR0 (Low Byte) DATA (Low Byte) DATA (High Byte) ADDR1 (Low Byte)
XA0
XA1
Note: 1. The timing requirements shown in Figure 4-123 on page 310 (i.e., tDVXH, tXHXL, and tXLDX) also
apply to loading operation.
Figure 4-125. Parallel Programming Timing, Reading Sequence (within the Same Page) with
Timing Requirements(1)
LOAD ADDRESS READ DATA READ DATA LOAD ADDRESS
(LOW BYTE) (LOW BYTE) (HIGH BYTE) (LOW BYTE)
tXLOL
XTAL1
tBVDV
BS1
tOLDV
OE tOHDZ
DATA ADDR0 (Low Byte) DATA (Low Byte) DATA (High Byte) ADDR1 (Low Byte)
XA0
XA1
Note: 1. The timing requirements shown in Figure 4-123 on page 310 (i.e., tDVXH, tXHXL, and tXLDX) also
apply to reading operation.
311
4921C–AUTO–01/07
Table 4-126. Parallel Programming Characteristics, VCC = 5V ± 10%
Symbol Parameter Min Typ Max Units
VPP Programming Enable Voltage 11.5 12.5 V
IPP Programming Enable Current 250 µA
tDVXH Data and Control Valid before XTAL1 High 67 ns
tXLXH XTAL1 Low to XTAL1 High 200 ns
tXHXL XTAL1 Pulse Width High 150 ns
tXLDX Data and Control Hold after XTAL1 Low 67 ns
tXLWL XTAL1 Low to WR Low 0 ns
tXLPH XTAL1 Low to PAGEL high 0 ns
tPLXH PAGEL low to XTAL1 high 150 ns
tBVPH BS1 Valid before PAGEL High 67 ns
tPHPL PAGEL Pulse Width High 150 ns
tPLBX BS1 Hold after PAGEL Low 67 ns
tWLBX BS2/1 Hold after WR Low 67 ns
tPLWL PAGEL Low to WR Low 67 ns
tBVWL BS1 Valid to WR Low 67 ns
tWLWH WR Pulse Width Low 150 ns
tWLRL WR Low to RDY/BSY Low 0 1 µs
(1)
tWLRH WR Low to RDY/BSY High 3.7 4.5 ms
(2)
tWLRH_CE WR Low to RDY/BSY High for Chip Erase 7.5 9 ms
tXLOL XTAL1 Low to OE Low 0 ns
tBVDV BS1 Valid to DATA valid 0 250 ns
tOLDV OE Low to DATA Valid 250 ns
tOHDZ OE High to DATA Tri-stated 250 ns
Notes: 1. tWLRH is valid for the Write Flash, Write EEPROM, Write Fuse bits and Write Lock bits
commands.
2. tWLRH_CE is valid for the Chip Erase command.
312 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
VCC
+2.7V to 5.5V(2)
MOSI AVCC
MISO
SCK
XTAL1
RESET
GND
Notes: 1. If the device is clocked by the internal Oscillator, it is no need to connect a clock source to the
XTAL1 pin.
2. VCC - 0.3V < AVCC < VCC + 0.3V, however, AVCC should always be within 1.8V - 5.5V
When programming the EEPROM, an auto-erase cycle is built into the self-timed programming
operation (in the Serial mode ONLY) and there is no need to first execute the Chip Erase
instruction. The Chip Erase operation turns the content of every memory location in both the
Program and EEPROM arrays into 0xFF.
Depending on CKSEL Fuses, a valid clock must be present. The minimum low and high periods
for the serial clock (SCK) input are defined as follows:
Low: > 2 CPU clock cycles for fck < 12 MHz, 3 CPU clock cycles for fck >= 12 MHz
High: > 2 CPU clock cycles for fck < 12 MHz, 3 CPU clock cycles for fck >= 12 MHz
313
4921C–AUTO–01/07
3. The serial programming instructions will not work if the communication is out of syn-
chronization. When in sync. the second byte (0x53), will echo back when issuing the
third byte of the Programming Enable instruction. Whether the echo is correct or not, all
four bytes of the instruction must be transmitted. If the 0x53 did not echo back, give
RESET a positive pulse and issue a new Programming Enable command.
4. The Flash is programmed one page at a time. The memory page is loaded one byte at
a time by supplying the 6 LSB of the address and data together with the Load Program
Memory Page instruction. To ensure correct loading of the page, the data low byte must
be loaded before data high byte is applied for a given address. The Program Memory
Page is stored by loading the Write Program Memory Page instruction with the 8 MSB
of the address. If polling is not used, the user must wait at least tWD_FLASH before issuing
the next page (see Table 4-127 on page 315). Accessing the serial programming inter-
face before the Flash write operation completes can result in incorrect programming.
5. The EEPROM array is programmed one byte at a time by supplying the address and
data together with the appropriate Write instruction. An EEPROM memory location is
first automatically erased before new data is written. If polling is not used, the user must
wait at least tWD_EEPROM before issuing the next byte (see Table 4-127 on page 315). In
a chip erased device, no 0xFFs in the data file(s) need to be programmed.
6. Any memory location can be verified by using the Read instruction which returns the
content at the selected address at serial output MISO.
7. At the end of the programming session, RESET can be set high to commence normal
operation.
8. Power-off sequence (if needed):
Set RESET to “1”.
Turn VCC power off.
314 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Table 4-127. Minimum Wait Delay Before Writing the Next Flash or EEPROM Location
Symbol Minimum Wait Delay
tWD_FLASH 4.5 ms
tWD_EEPROM 3.6 ms
tWD_ERASE 9.0 ms
SAMPLE
315
4921C–AUTO–01/07
Table 4-128. Serial Programming Instruction Set (Continued)
Instruction Format
Instruction Byte 1 Byte 2 Byte 3 Byte4 Operation
1010 1100 111x xxxx xxxx xxxx 11ii iiii Write Lock bits. Set bits = “0” to program
Write Lock bits Lock bits. See Table 4-113 on page 297
for details.
Read Signature Byte 0011 0000 000x xxxx xxxx xxbb oooo oooo Read Signature Byte o at address b.
1010 1100 1010 0000 xxxx xxxx iiii iiii Set bits = “0” to program, “1” to
Write Fuse bits unprogram. See Table XXX on page
XXX for details.
1010 1100 1010 1000 xxxx xxxx iiii iiii Set bits = “0” to program, “1” to
Write Fuse High bits unprogram. See Table 4-97 on page 267
for details.
1010 1100 1010 0100 xxxx xxxx xxxx xxii Set bits = “0” to program, “1” to
Write Extended Fuse Bits unprogram. See Table 4-116 on page
299 for details.
0101 0000 0000 0000 xxxx xxxx oooo oooo Read Fuse bits. “0” = programmed, “1” =
Read Fuse bits unprogrammed. See Table XXX on
page XXX for details.
0101 1000 0000 1000 xxxx xxxx oooo oooo Read Fuse High bits. “0” = programmed,
Read Fuse High bits “1” = unprogrammed. See Table 4-97 on
page 267 for details.
0101 0000 0000 1000 xxxx xxxx oooo oooo Read Extended Fuse bits. “0” =
Read Extended Fuse Bits programmed, “1” = unprogrammed. See
Table 4-116 on page 299 for details.
Read Calibration Byte 0011 1000 000x xxxx 0000 0000 oooo oooo Read Calibration Byte
1111 0000 0000 0000 xxxx xxxx xxxx xxxo If o = “1”, a programming operation is still
Poll RDY/BSY busy. Wait until this bit returns to “0”
before applying another command.
Note: a = address high bits, b = address low bits, H = 0 - Low byte, 1 - High Byte, o = data out, i = data in, x = do not care
316 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
4.25.2 DC Characteristics
Tcase = -40°C to +125°C, VCC = 2.7V to 5.5V (unless otherwise noted)
Symbol Parameter Condition Min.(5) Typ. Max.(5) Units
Input Low Voltage, Except
VIL VCC = 2.7V - 5.5V -0.5 0.3VCC(1) V
XTAL1 and Reset pin
Input Low Voltage,
VIL1 VCC = 2.7V - 5.5V -0.5 0.1VCC(1) V
XTAL1 pin
Input Low Voltage, RESET
VIL2 VCC = 2.7V - 5.5V -0.5 0.1VCC(1) V
pin
Input High Voltage, Except
VIH VCC = 2.7V - 5.5V 0.6VCC(2) VCC + 0.5 V
XTAL1 and RESET pins
Input High Voltage, XTAL1
VIH1 VCC = 2.7V - 5.5V 0.7VCC(2) VCC + 0.5 V
pin
Input High Voltage, RESET
VIH2 VCC = 2.7V - 5.5V 0.9VCC(2) VCC + 0.5 V
pin
IOL = 20mA, VCC = 5V 0.8
VOL Output Low Voltage(3) V
IOL = 5mA, VCC = 3V 0.5
IOH = -20mA, VCC = 5V 4.1
VOH Output High Voltage(4) V
IOH = -10mA, VCC = 3V 2.3
Input Leakage VCC = 5.5V, pin low
IIL 50 nA
Current I/O Pin (absolute value)
Input Leakage VCC = 5.5V, pin high
IIH 50 nA
Current I/O Pin (absolute value)
RRST Reset Pull-up Resistor Vcc = 5.0V, Vin = 0V 30 60 kΩ
RPU I/O Pin Pull-up Resistor 20 50 kΩ
317
4921C–AUTO–01/07
4.25.2 DC Characteristics (Continued)
Tcase = -40°C to +125°C, VCC = 2.7V to 5.5V (unless otherwise noted)
Symbol Parameter Condition Min.(5) Typ. Max.(5) Units
Active 4MHz, VCC = 3V
1.8 3.0 mA
(ATA6602/ATA6603L)
Active 8MHz, VCC = 5V
6.0 10 mA
(ATA6602/ATA6603)
Active 15MHz, VCC = 5V
10.0 16 mA
(6)
(ATA6602/ATA6603)
Power Supply Current
Idle 4MHz, VCC = 3V
0.4 1 mA
(ATA6602/ATA6603V)
ICC Idle 8MHz, VCC = 5V
1.4 2.4 mA
(ATA6602/ATA6603L)
Idle 15MHz, VCC = 5V
2.8 4 mA
(ATA6602/ATA6603)
WDT enabled, VCC = 3V 8 30 µA
WDT enabled, VCC = 5V 12.6 50 µA
Power-down mode
WDT disabled, VCC = 3V 5 24 µA
WDT disabled, VCC = 5V 6.6 36 µA
Analog Comparator VCC = 5V
VACIO 10 40 mV
Input Offset Voltage Vin = VCC/2
Analog Comparator VCC = 5V
IACLK -50 50 nA
Input Leakage Current Vin = VCC/2
Analog Comparator
tACID VCC = 4.5V 140 ns
Propagation Delay
Notes: 1. “Max” means the highest value where the pin is guaranteed to be read as low
2. “Min” means the lowest value where the pin is guaranteed to be read as high
3. Although each I/O port can sink more than the test conditions (20mA at VCC = 5V, 10mA at VCC = 3V) under steady state
conditions (non-transient), the following must be observed:
ATA6602/ATA6603:
1] The sum of all IOL, for ports C0 - C5, should not exceed 100 mA.
2] The sum of all IOL, for ports C6, D0 - D4, should not exceed 100 mA.
3] The sum of all IOL, for ports B0 - B7, D5 - D7, should not exceed 100 mA.
If IOL exceeds the test condition, VOL may exceed the related specification. Pins are not guaranteed to sink current greater
than the listed test condition.
4. Although each I/O port can source more than the test conditions (20mA at VCC = 5V, 10mA at VCC = 3V) under steady state
conditions (non-transient), the following must be observed:
ATA6602/ATA6603:
1] The sum of all IOH, for ports C0 - C5, should not exceed 100 mA.
2] The sum of all IOH, for ports C6, D0 - D4, should not exceed 100 mA.
3] The sum of all IOH, for ports B0 - B7, D5 - D7, should not exceed 100 mA.
If IOH exceeds the test condition, VOH may exceed the related specification. Pins are not guaranteed to source current
greater than the listed test condition.
5. All DC Characteristics contained in this datasheet are based on actual ATA6602 microcontrollers characterization.
6. Values with “Power Reduction REgister - PRR” enabled (0xEF).
318 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
VIH1
VIL1
tCLCX
tCLCL
16 MHz
8 MHz
Safe Operating Area
319
4921C–AUTO–01/07
4.26 LIN Re-synchronization Algorithm
Figure 4-130. Dichotomic Algorithm Used for LIN Slave Clock Re-synchronization
Measuring
actual TBit
Y
-2% < Delta(TBit) < 2% STOP:
Oscillator
Calibrated
Decrement
OSCCAL Delta(TBit) > 2%
Increment
Delta(TBit) < -2%
OSCCAL
320 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
321
4921C–AUTO–01/07
Table 5-1. 2-wire Serial Bus Requirements (Continued)
Symbol Parameter Condition Min Max Units
(1)
Ci Capacitance for each I/O Pin – 10 pF
fSCL SCL Clock Frequency fCK(4) (5)
> max(16fSCL, 250kHz) 0 400 kHz
V CC – 0,4V 1000ns
fSCL ≤100 kHz ---------------------------- ------------------- Ω
3mA Cb
Rp Value of Pull-up resistor
V CC – 0,4V 300ns
fSCL > 100 kHz ---------------------------- ---------------- Ω
3mA Cb
Bus free time between a STOP and START fSCL ≤100 kHz 4.7 – µs
tBUF
condition fSCL > 100 kHz 1.3 – µs
Notes: 1. In ATA6602/ATA6603, this parameter is characterized and not 100% tested.
2. Required only for fSCL > 100 kHz.
3. Cb = capacitance of one bus line in pF.
4. fCK = CPU clock frequency
5. This requirement applies to all ATA6602/ATA6603 2-wire Serial Interface operation. Other devices connected to the 2-wire
Serial Bus need only obey the general fSCL requirement.
6. The actual low period generated by the ATA6602/ATA6603 2-wire Serial Interface is (1/fSCL - 2/fCK), thus fCK must be
greater than 6 MHz for the low time requirement to be strictly met at fSCL = 100 kHz.
7. The actual low period generated by the ATA6602/ATA6603 2-wire Serial Interface is (1/fSCL - 2/fCK), thus the low time
requirement will not be strictly met for fSCL > 308 kHz when fCK = 8 MHz. Still, ATA6602/ATA6603 devices connected to the
bus may communicate at full speed (400 kHz) with other ATA6602/ATA6603 devices, as well as any other device with a
proper tLOW acceptance margin.
322 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
tLOW tLOW
SCL
tSU;STA tHD;STA tHD;DAT tSU;DAT
tSU;STO
SDA
tBUF
323
4921C–AUTO–01/07
Figure 5-2. SPI Interface Timing Requirements (Master Mode)
SS
6 1
SCK
(CPOL = 0)
2 2
SCK
(CPOL = 1)
4 5 3
MISO
MSB ... LSB
(Data Input)
7 8
MOSI
MSB ... LSB
(Data Output)
SS
10 16
9
SCK
(CPOL = 0)
11 11
SCK
(CPOL = 1)
13 14 12
MOSI
MSB ... LSB
(Data Input)
15 17
MISO
MSB ... LSB X
(Data Output)
324 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
325
4921C–AUTO–01/07
5.3 ATA6602/ATA6603 Typical Characteristics
Figure 5-4. Active Supply Current versus Frequency (1 MHz to 20 MHz), Temp = 125°C
20
18
16
5.5 V
14
5.0 V
ICC(mA)
12
4.5 V
10
8 3.3 V
3.0 V
6
2.7 V
4
0
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
Figure 5-5. Idle Supply Current versus Frequency (1 MHz to 20 MHz), Temp = 125°C
6
4
5.5 V
ICC(mA)
5.0 V
4.5 V
2 3.3 V
3.0 V
2.7 V
0
0 2 4 6 8 10 12 14 16 18 20
Frequency (MHz)
326 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Figure 5-6. Power-down Supply Current versus VCC (Watchdog Timer Disabled)
5 125
85
ICC (uA)
4
25
3 -40
0
3 3.5 4 4.5 5 5.5
V CC (V)
Figure 5-7. Power-down Supply Current versus VCC (Watchdog Timer Enabled)
5 125
85
ICC (uA)
4
25
3 -40
0
2.5 3 3.5 4 4.5 5 5.5
V CC (V)
327
4921C–AUTO–01/07
5.3.1.2 Pin Pull-up
Figure 5-8. I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 5V)
160
125
140
120
-40
100
IOP (uA)
80
60
40
20
0
0 1 2 3 4 5 6
V OP (V)
Figure 5-9. Output Low Voltage vs. Output Low Current (VCC = 5V)
0.8
0.7
0.6 125 ˚C
85 ˚C
0.5
25 ˚C
Vol (V)
0.4
-40 ˚C
0.3
0.2
0.1
0
0 2 4 6 8 10 12 14 16 18 20
IOL (mA)
328 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Figure 5-10. Output Low Voltage vs. Output Low Current (VCC = 3V)
1.2
1 125 ˚C
85 ˚C
0.8
IOL (mA)
25 ˚C
0.6
-40 ˚C
0.4
0.2
0
0 2 4 6 8 10 12 14 16 18 20
VOL (V)
Figure 5-11. Output High Voltage vs. Output High Current (VCC = 5V)
5.2
4.8
Voh (V)
4.6
-40 ˚C
25 ˚C
4.4 85 ˚C
125 ˚C
4.2
4
0 2 4 6 8 10 12 14 16 18 20
IOH (mA)
329
4921C–AUTO–01/07
Figure 5-12. Output High Voltage vs. Output High Current (VCC = 3V)
3.5
2.5
-40 ˚C
25 ˚C
Current (V)
2 85 ˚C
125 ˚C
1.5
0.5
0
0 2 4 6 8 10 12 14 16 18 20
IOH (mA)
Figure 5-13. Reset Pull-Up Resistor Current vs. Reset Pin Voltage (VCC = 5V)
160
125
140
120
-40
100
IOP (uA)
80
60
40
20
0
0 1 2 3 4 5 6
V OP (V)
330 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Figure 5-14. Output Low Voltage versus Output Low Current (VCC = 5V)
0.8
0.7
0.6 125 ˚C
85 ˚C
0.5
25 ˚C
Vol (V)
0.4
-40 ˚C
0.3
0.2
0.1
0
0 2 4 6 8 10 12 14 16 18 20
IOL (mA)
Figure 5-15. Output Low Voltage versus Output Low Current (VCC = 3V)
1.2
1 125 ˚C
85 ˚C
0.8
IOL (mA)
25 ˚C
0.6
-40 ˚C
0.4
0.2
0
0 2 4 6 8 10 12 14 16 18 20
VOL (V)
331
4921C–AUTO–01/07
Figure 5-16. Output High Voltage versus Output High Current (VCC = 5V)
5.2
4.8
Voh (V)
4.6
-40 ˚C
25 ˚C
4.4 85 ˚C
125 ˚C
4.2
4
0 2 4 6 8 10 12 14 16 18 20
IOH (mA)
Figure 5-17. Output High Voltage versus Output High Current (VCC = 3V)
3.5
2.5
-40 ˚C
25 ˚C
Current (V)
2 85 ˚C
125 ˚C
1.5
0.5
0
0 2 4 6 8 10 12 14 16 18 20
IOH (mA)
332 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Figure 5-18. I/O Pin Input Threshold versus VCC (VIH, I/O Pin Read as 1)
3.5
2.5 125
85
Vih (V)
25
2
-40
1.5
1
2 2.5 3 3.5 4 4.5 5 5.5
V CC (V)
Figure 5-19. I/O Pin Input Threshold versus VCC (VIL, I/O Pin Read as 0)
3
125 ˚C
-40 ˚C
2.5
2
Vil (V)
1.5
0.5
0
2 2.5 3 3.5 4 4.5 5 5.5 6
V CC (V)
333
4921C–AUTO–01/07
Figure 5-20. Reset Input Threshold Voltage versus VCC (VIH, Reset Pin Read as 1)
3.5
-40 ˚C
2.5 25 ˚C
Threshold (V)
85 ˚C
125 ˚C
2
1.5
0.5
0
2 2.5 3 3.5 4 4.5 5 5.5
V CC (V)
Figure 5-21. Reset Input Threshold Voltage versus VCC (VIL, Reset Pin Read as 0)
2.5 125 ˚C
85 ˚C
25 ˚C
-40 ˚C
2
Threshold (V)
1.5
0.5
0
2 2.5 3 3.5 4 4.5 5 5.5
VCC (V)
334 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
130
128
126
-40 ˚C
124 25 ˚C
122
FRC (kHz)
120
85 ˚C
118 125 ˚C
116
114
112
110
2.5 3 3.5 4 4.5 5 5.5
V CC (V)
8.4
8.3
8.2
5.0 V
8.1
FRC (MHz)
2.7 V
8
7.9
7.8
7.7
7.6
-40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120
Temperature
335
4921C–AUTO–01/07
Figure 5-24. Calibrated 8 MHz RC Oscillator Frequency vs. VCC
8.4
8.2
125 ˚C
85 ˚C
8 25 ˚C
-40 ˚C
FRC (MHz)
7.8
7.6
7.4
7.2
7
2.5 3 3.5 4 4.5 5 5.5
V CC (V)
Figure 5-25. Calibrated 8 MHz RC Oscillator Frequency vs. OSCAL Value (for ATA6603)
16
125 ˚C
85 ˚C
14
25 ˚C
-40 ˚C
12
FRC (MHz)
10
2
0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240
OSCCAL (X1)
336 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
Figure 5-26. Calibrated 8 MHz RC Oscillator Frequency vs. OSCAL Value (for ATA6602 only)
14 125 ˚C
85 ˚C
25 ˚C
12 -40 ˚C
10
FRC (MHz)
2
0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240
OSCCAL (X1)
4.5
Threshold (V)
Rising VCC
4.4
4.3
Falling VCC
4.2
4.1
4
-55 -45 -35 -25 -15 -5 5 15 25 35 45 55 65 75 85 95 105 115 125
Temperature (C)
337
4921C–AUTO–01/07
Figure 5-28. BOD Threshold versus Temperature (BODLEVEL is 2.7V)
3
2.9
Threshold (V)
2.8
Rising VCC
2.7
Falling VCC
2.6
2.5
2.4
-50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120
Temperature (C)
1.095
Bandgap Voltage (V)
1.09
85 ˚C
25 ˚C
125 ˚C
1.085
1.08
-40 ˚C
1.075
2.5 3 3.5 4 4.5 5 5.5
VCC (V)
338 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
-0.20
-0.40
4V IDLE
-0.80
4V STD
-1.00
-1.20
-1.40
-1.60
-50 0 50 100 150
Temperature
2.00
Error (LSB)
1.50
4V IDLE
4V STD
1.00
0.50
0.00
-50 0 50 100 150
Temperature
339
4921C–AUTO–01/07
Figure 5-32. Analog to Digital Converter DNL versus VCC
0.40
0.35
0.30
Error (LSB)
0.25 4V IDLE
0.20
4V STD
0.15
0.10
0.05
0.00
-50 0 50 100 150
Temperature
0.60
0.50
Error (LSB)
0.40
4V IDLE
4V STD
0.30
0.20
0.10
0.00
-50 0 50 100 150
Temperature
340 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
341
4921C–AUTO–01/07
5.4 Register Summary (Continued)
Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Page
(0xDF) Reserved – – – – – – – –
(0xDE) Reserved – – – – – – – –
(0xDD) Reserved – – – – – – – –
(0xDC) Reserved – – – – – – – –
(0xDB) Reserved – – – – – – – –
(0xDA) Reserved – – – – – – – –
(0xD9) Reserved – – – – – – – –
(0xD8) Reserved – – – – – – – –
(0xD7) Reserved – – – – – – – –
(0xD6) Reserved – – – – – – – –
(0xD5) Reserved – – – – – – – –
(0xD4) Reserved – – – – – – – –
(0xD3) Reserved – – – – – – – –
(0xD2) Reserved – – – – – – – –
(0xD1) Reserved – – – – – – – –
(0xD0) Reserved – – – – – – – –
(0xCF) Reserved – – – – – – – –
(0xCE) Reserved – – – – – – – –
(0xCD) Reserved – – – – – – – –
(0xCC) Reserved – – – – – – – –
(0xCB) Reserved – – – – – – – –
(0xCA) Reserved – – – – – – – –
(0xC9) Reserved – – – – – – – –
(0xC8) Reserved – – – – – – – –
(0xC7) Reserved – – – – – – – –
(0xC6) UDR0 USART I/O Data Register 209
(0xC5) UBRR0H USART Baud Rate Register High 214
(0xC4) UBRR0L USART Baud Rate Register Low 214
(0xC3) Reserved – – – – – – – –
UCSZ01 UCSZ00 /
(0xC2) UCSR0C UMSEL01 UMSEL00 UPM01 UPM00 USBS0 UCPOL0 212/225
/UDORD0 UCPHA0
(0xC1) UCSR0B RXCIE0 TXCIE0 UDRIE0 RXEN0 TXEN0 UCSZ02 RXB80 TXB80 211
(0xC0) UCSR0A RXC0 TXC0 UDRE0 FE0 DOR0 UPE0 U2X0 MPCM0 210
Note: 1. For compatibility with future devices, reserved bits should be written to zero if accessed. Reserved I/O memory addresses
should never be written.
2. I/O Registers within the address range 0x00 - 0x1F are directly bit-accessible using the SBI and CBI instructions. In these
registers, the value of single bits can be checked by using the SBIS and SBIC instructions.
3. Some of the Status Flags are cleared by writing a logical one to them. Note that, unlike most other AVRs, the CBI and SBI
instructions will only operate on the specified bit, and can therefore be used on registers containing such Status Flags. The
CBI and SBI instructions work with registers 0x00 to 0x1F only.
4. When using the I/O specific commands IN and OUT, the I/O addresses 0x00 - 0x3F must be used. When addressing I/O
Registers as data space using LD and ST instructions, 0x20 must be added to these addresses. The ATA6602/ATA6603 is
a complex microcontroller with more peripheral units than can be supported within the 64 location reserved in Opcode for
the IN and OUT instructions. For the Extended I/O space from 0x60 - 0xFF in SRAM, only the ST/STS/STD and
LD/LDS/LDD instructions can be used.
5. Only valid for ATA6602/ATA6603
342 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
343
4921C–AUTO–01/07
5.4 Register Summary (Continued)
Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Page
(0x9E) Reserved – – – – – – – –
(0x9D) Reserved – – – – – – – –
(0x9C) Reserved – – – – – – – –
(0x9B) Reserved – – – – – – – –
(0x9A) Reserved – – – – – – – –
(0x99) Reserved – – – – – – – –
(0x98) Reserved – – – – – – – –
(0x97) Reserved – – – – – – – –
(0x96) Reserved – – – – – – – –
(0x95) Reserved – – – – – – – –
(0x94) Reserved – – – – – – – –
(0x93) Reserved – – – – – – – –
(0x92) Reserved – – – – – – – –
(0x91) Reserved – – – – – – – –
(0x90) Reserved – – – – – – – –
(0x8F) Reserved – – – – – – – –
(0x8E) Reserved – – – – – – – –
(0x8D) Reserved – – – – – – – –
(0x8C) Reserved – – – – – – – –
(0x8B) OCR1BH Timer/Counter1 - Output Compare Register B High Byte 156
(0x8A) OCR1BL Timer/Counter1 - Output Compare Register B Low Byte 156
(0x89) OCR1AH Timer/Counter1 - Output Compare Register A High Byte 156
(0x88) OCR1AL Timer/Counter1 - Output Compare Register A Low Byte 156
(0x87) ICR1H Timer/Counter1 - Input Capture Register High Byte 157
(0x86) ICR1L Timer/Counter1 - Input Capture Register Low Byte 157
(0x85) TCNT1H Timer/Counter1 - Counter Register High Byte 156
(0x84) TCNT1L Timer/Counter1 - Counter Register Low Byte 156
(0x83) Reserved – – – – – – – –
(0x82) TCCR1C FOC1A FOC1B – – – – – – 155
(0x81) TCCR1B ICNC1 ICES1 – WGM13 WGM12 CS12 CS11 CS10 154
(0x80) TCCR1A COM1A1 COM1A0 COM1B1 COM1B0 – – WGM11 WGM10 152
(0x7F) DIDR1 – – – – – – AIN1D AIN0D 261
(0x7E) DIDR0 – – ADC5D ADC4D ADC3D ADC2D ADC1D ADC0D 278
Note: 1. For compatibility with future devices, reserved bits should be written to zero if accessed. Reserved I/O memory addresses
should never be written.
2. I/O Registers within the address range 0x00 - 0x1F are directly bit-accessible using the SBI and CBI instructions. In these
registers, the value of single bits can be checked by using the SBIS and SBIC instructions.
3. Some of the Status Flags are cleared by writing a logical one to them. Note that, unlike most other AVRs, the CBI and SBI
instructions will only operate on the specified bit, and can therefore be used on registers containing such Status Flags. The
CBI and SBI instructions work with registers 0x00 to 0x1F only.
4. When using the I/O specific commands IN and OUT, the I/O addresses 0x00 - 0x3F must be used. When addressing I/O
Registers as data space using LD and ST instructions, 0x20 must be added to these addresses. The ATA6602/ATA6603 is
a complex microcontroller with more peripheral units than can be supported within the 64 location reserved in Opcode for
the IN and OUT instructions. For the Extended I/O space from 0x60 - 0xFF in SRAM, only the ST/STS/STD and
LD/LDS/LDD instructions can be used.
5. Only valid for ATA6602/ATA6603
344 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
345
4921C–AUTO–01/07
5.4 Register Summary (Continued)
Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Page
0x3F (0x5F) SREG I T H S V N Z C 32
5.
0x3E (0x5E) SPH – – – – – (SP10) SP9 SP8 34
0x3D (0x5D) SPL SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 34
0x3C (0x5C) Reserved – – – – – – – –
0x3B (0x5B) Reserved – – – – – – – –
0x3A (0x5A) Reserved – – – – – – – –
0x39 (0x59) Reserved – – – – – – – –
0x38 (0x58) Reserved – – – – – – – –
0x37 (0x57) SPMCSR SPMIE (RWWSB)5. – (RWWSRE)5. BLBSET PGWRT PGERS SELFPRGEN 286
0x36 (0x56) Reserved – – – – – – – –
0x35 (0x55) MCUCR – – – PUD – – IVSEL IVCE
0x34 (0x54) MCUSR – – – – WDRF BORF EXTRF PORF
0x33 (0x53) SMCR – – – – SM2 SM1 SM0 SE 60
0x32 (0x52) Reserved – – – – – – – –
0x31 (0x51) Reserved – – – – – – – –
0x30 (0x50) ACSR ACD ACBG ACO ACI ACIE ACIC ACIS1 ACIS0 260
0x2F (0x4F) Reserved – – – – – – – –
0x2E (0x4E) SPDR SPI Data Register 188
0x2D (0x4D) SPSR SPIF WCOL – – – – – SPI2X 188
0x2C (0x4C) SPCR SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 186
0x2B (0x4B) GPIOR2 General Purpose I/O Register 2 47
0x2A (0x4A) GPIOR1 General Purpose I/O Register 1 47
0x29 (0x49) Reserved – – – – – – – –
0x28 (0x48) OCR0B Timer/Counter0 Output Compare Register B
0x27 (0x47) OCR0A Timer/Counter0 Output Compare Register A
0x26 (0x46) TCNT0 Timer/Counter0 (8-bit)
0x25 (0x45) TCCR0B FOC0A FOC0B – – WGM02 CS02 CS01 CS00
0x24 (0x44) TCCR0A COM0A1 COM0A0 COM0B1 COM0B0 – – WGM01 WGM00
0x23 (0x43) GTCCR TSM – – – – – PSRASY PSRSYNC 130/180
5.
0x22 (0x42) EEARH (EEPROM Address Register High Byte) 42
0x21 (0x41) EEARL EEPROM Address Register Low Byte 42
0x20 (0x40) EEDR EEPROM Data Register 42
Note: 1. For compatibility with future devices, reserved bits should be written to zero if accessed. Reserved I/O memory addresses
should never be written.
2. I/O Registers within the address range 0x00 - 0x1F are directly bit-accessible using the SBI and CBI instructions. In these
registers, the value of single bits can be checked by using the SBIS and SBIC instructions.
3. Some of the Status Flags are cleared by writing a logical one to them. Note that, unlike most other AVRs, the CBI and SBI
instructions will only operate on the specified bit, and can therefore be used on registers containing such Status Flags. The
CBI and SBI instructions work with registers 0x00 to 0x1F only.
4. When using the I/O specific commands IN and OUT, the I/O addresses 0x00 - 0x3F must be used. When addressing I/O
Registers as data space using LD and ST instructions, 0x20 must be added to these addresses. The ATA6602/ATA6603 is
a complex microcontroller with more peripheral units than can be supported within the 64 location reserved in Opcode for
the IN and OUT instructions. For the Extended I/O space from 0x60 - 0xFF in SRAM, only the ST/STS/STD and
LD/LDS/LDD instructions can be used.
5. Only valid for ATA6602/ATA6603
346 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
347
4921C–AUTO–01/07
5.5 Instruction Set Summary
Mnemonics Operands Description Operation Flags #Clocks
ARITHMETIC AND LOGIC INSTRUCTIONS
ADD Rd, Rr Add two Registers Rd ←Rd + Rr Z,C,N,V,H 1
ADC Rd, Rr Add with Carry two Registers Rd ←Rd + Rr + C Z,C,N,V,H 1
ADIW Rdl,K Add Immediate to Word Rdh:Rdl ←Rdh:Rdl + K Z,C,N,V,S 2
SUB Rd, Rr Subtract two Registers Rd ←Rd - Rr Z,C,N,V,H 1
SUBI Rd, K Subtract Constant from Register Rd ←Rd - K Z,C,N,V,H 1
SBC Rd, Rr Subtract with Carry two Registers Rd ←Rd - Rr - C Z,C,N,V,H 1
SBCI Rd, K Subtract with Carry Constant from Reg. Rd ←Rd - K - C Z,C,N,V,H 1
SBIW Rdl,K Subtract Immediate from Word Rdh:Rdl ←Rdh:Rdl - K Z,C,N,V,S 2
AND Rd, Rr Logical AND Registers Rd ←Rd • Rr Z,N,V 1
ANDI Rd, K Logical AND Register and Constant Rd ←Rd • K Z,N,V 1
OR Rd, Rr Logical OR Registers Rd ←Rd v Rr Z,N,V 1
ORI Rd, K Logical OR Register and Constant Rd ←Rd v K Z,N,V 1
EOR Rd, Rr Exclusive OR Registers Rd ←Rd ⊕ Rr Z,N,V 1
COM Rd One’s Complement Rd ←0xFF −Rd Z,C,N,V 1
NEG Rd Two’s Complement Rd ←0x00 −Rd Z,C,N,V,H 1
SBR Rd,K Set Bit(s) in Register Rd ←Rd v K Z,N,V 1
CBR Rd,K Clear Bit(s) in Register Rd ←Rd • (0xFF - K) Z,N,V 1
INC Rd Increment Rd ←Rd + 1 Z,N,V 1
DEC Rd Decrement Rd ←Rd −1 Z,N,V 1
TST Rd Test for Zero or Minus Rd ←Rd • Rd Z,N,V 1
CLR Rd Clear Register Rd ←Rd ⊕ Rd Z,N,V 1
SER Rd Set Register Rd ←0xFF None 1
MUL Rd, Rr Multiply Unsigned R1:R0 ←Rd x Rr Z,C 2
MULS Rd, Rr Multiply Signed R1:R0 ←Rd x Rr Z,C 2
MULSU Rd, Rr Multiply Signed with Unsigned R1:R0 ←Rd x Rr Z,C 2
FMUL Rd, Rr Fractional Multiply Unsigned R1:R0 ←(Rd x Rr) << 1 Z,C 2
FMULS Rd, Rr Fractional Multiply Signed R1:R0 ←(Rd x Rr) << 1 Z,C 2
FMULSU Rd, Rr Fractional Multiply Signed with Unsigned R1:R0 ←(Rd x Rr) << 1 Z,C 2
BRANCH INSTRUCTIONS
RJMP k Relative Jump PC ←PC + k + 1 None 2
IJMP Indirect Jump to (Z) PC ←Z None 2
JMP(1) k Direct Jump PC ←k None 3
RCALL k Relative Subroutine Call PC ←PC + k + 1 None 3
ICALL Indirect Call to (Z) PC ←Z None 3
CALL (1)
k Direct Subroutine Call PC ←k None 4
RET Subroutine Return PC ←STACK None 4
RETI Interrupt Return PC ←STACK I 4
CPSE Rd,Rr Compare, Skip if Equal if (Rd = Rr) PC ←PC + 2 or 3 None 1/2/3
CP Rd,Rr Compare Rd −Rr Z, N,V,C,H 1
CPC Rd,Rr Compare with Carry Rd −Rr −C Z, N,V,C,H 1
CPI Rd,K Compare Register with Immediate Rd −K Z, N,V,C,H 1
SBRC Rr, b Skip if Bit in Register Cleared if (Rr(b)=0) PC ←PC + 2 or 3 None 1/2/3
Note: 1. These instructions are only available in ATA6603
348 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
349
4921C–AUTO–01/07
5.5 Instruction Set Summary (Continued)
Mnemonics Operands Description Operation Flags #Clocks
CLI Global Interrupt Disable I ←0 I 1
SES Set Signed Test Flag S ←1 S 1
CLS Clear Signed Test Flag S ←0 S 1
SEV Set Twos Complement Overflow. V ←1 V 1
CLV Clear Twos Complement Overflow V ←0 V 1
SET Set T in SREG T ←1 T 1
CLT Clear T in SREG T ←0 T 1
SEH Set Half Carry Flag in SREG H ←1 H 1
CLH Clear Half Carry Flag in SREG H ←0 H 1
DATA TRANSFER INSTRUCTIONS
MOV Rd, Rr Move Between Registers Rd ←Rr None 1
MOVW Rd, Rr Copy Register Word Rd+1:Rd ←Rr+1:Rr None 1
LDI Rd, K Load Immediate Rd ←K None 1
LD Rd, X Load Indirect Rd ←(X) None 2
LD Rd, X+ Load Indirect and Post-Inc. Rd ←(X), X ←X + 1 None 2
LD Rd, - X Load Indirect and Pre-Dec. X ←X - 1, Rd ←(X) None 2
LD Rd, Y Load Indirect Rd ←(Y) None 2
LD Rd, Y+ Load Indirect and Post-Inc. Rd ←(Y), Y ←Y + 1 None 2
LD Rd, - Y Load Indirect and Pre-Dec. Y ←Y - 1, Rd ←(Y) None 2
LDD Rd,Y+q Load Indirect with Displacement Rd ←(Y + q) None 2
LD Rd, Z Load Indirect Rd ←(Z) None 2
LD Rd, Z+ Load Indirect and Post-Inc. Rd ←(Z), Z ←Z+1 None 2
LD Rd, -Z Load Indirect and Pre-Dec. Z ←Z - 1, Rd ←(Z) None 2
LDD Rd, Z+q Load Indirect with Displacement Rd ←(Z + q) None 2
LDS Rd, k Load Direct from SRAM Rd ←(k) None 2
ST X, Rr Store Indirect (X) ←Rr None 2
ST X+, Rr Store Indirect and Post-Inc. (X) ←Rr, X ←X + 1 None 2
ST - X, Rr Store Indirect and Pre-Dec. X ←X - 1, (X) ←Rr None 2
ST Y, Rr Store Indirect (Y) ←Rr None 2
ST Y+, Rr Store Indirect and Post-Inc. (Y) ←Rr, Y ←Y + 1 None 2
ST - Y, Rr Store Indirect and Pre-Dec. Y ←Y - 1, (Y) ←Rr None 2
STD Y+q,Rr Store Indirect with Displacement (Y + q) ←Rr None 2
ST Z, Rr Store Indirect (Z) ←Rr None 2
ST Z+, Rr Store Indirect and Post-Inc. (Z) ←Rr, Z ←Z + 1 None 2
ST -Z, Rr Store Indirect and Pre-Dec. Z ←Z - 1, (Z) ←Rr None 2
STD Z+q,Rr Store Indirect with Displacement (Z + q) ←Rr None 2
STS k, Rr Store Direct to SRAM (k) ←Rr None 2
LPM Load Program Memory R0 ←(Z) None 3
LPM Rd, Z Load Program Memory Rd ←(Z) None 3
LPM Rd, Z+ Load Program Memory and Post-Inc Rd ←(Z), Z ←Z+1 None 3
SPM Store Program Memory (Z) ←R1:R0 None -
IN Rd, P In Port Rd ←P None 1
OUT P, Rr Out Port P ←Rr None 1
Note: 1. These instructions are only available in ATA6603
350 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
351
4921C–AUTO–01/07
6. Application
100n
100n
48
10µ 10k
1
WAKE
ATA6602/ATA6603 33k
VS
*) GND
1k
100n 10µ
100n
100n 22µ
LIN
XTAL
*) LIN-Master pullup
51k
Note: All open pins are MCM-IOs that can be used for application-specific purposes. The shown
connections between the LIN-system-basis-chips and the MCM require the software in the MCM
being programmed correspondingly.
352 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
6.2 Application with External NPN Transistor for Increased VCC Current Demand
100n
100n
48
10µ 10k
1
WAKE
ATA6602/ATA6603 33k
VS
*) GND
10µ 1k
100n
100n 22µ
LIN
100n
XTAL
*) LIN-Master pullup
51k
3
22p 22p 220p
2.2µ
The VCC pin drives the base of an external NPN transistor. The voltage regulation is done via
the control loop over the sense input PVCC. Note that no current limitation is available in the
configuration shown above.
Note: All open pins are MCM-IOs that can be used for application-specific purposes. The shown
connections between the LIN-system-basis-chips and the MCM require the software in the MCM
being programmed correspondingly.
353
4921C–AUTO–01/07
7. Ordering Information
Extended Type Number Program Memory Package
ATA6602-PLQW 8 kB flash QFN48, 7× 7
ATA6603-PLQW 16 kB flash QFN48, 7× 7
8. Package Information
354 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
9. Revision History
Please note that the following page numbers referred to in this section refer to the specific revision
mentioned, not to this document.
Revision No. History
• Put datasheet in a new template
• Section 3.3.1 “Supply Pin (VS)” on page 6 changed
• Section 3.3.7 “TXD Dominant Time-out Function” on page 7 changed
• Section 3.3.13.3 “Sleep Mode” on page 10 changed
• Section 3.3.14 in “Wake-up Scenarios from Silent or Sleep Mode” renamed
4921C-AUTO-12/06 • Section 3.3.15 “Fail-safe Features” on page 13 changed
• Section 3.3.18 “Temperature Monitor at Pin TEMP” on page 17 changed
• Table “Electrical Characteristics” numbers 10.4, 13.2 and 15.3 on pages 22 to 23
changed
• Table “Electrical Characteristics” numbers 17.1, 17.2 and 17.3 on page 24 added
• Section 4.25.1 “Absolute Maximum Ratings” on page 317 changed
355
4921C–AUTO–01/07
10. Table of Contents
General Features....................................................................................... 1
1 Description ............................................................................................... 1
356 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
357
4921C–AUTO–01/07
4.10 I/O-Ports .............................................................................................................85
4.10.1 Introduction ...................................................................................................85
4.10.2 Ports as General Digital I/O ..........................................................................87
4.10.3 Alternate Port Functions ...............................................................................92
4.10.4 Register Description for I/O Ports ...............................................................104
4.11 External Interrupts ............................................................................................105
4.11.1 External Interrupt Control Register A – EICRA ...........................................106
4.11.2 External Interrupt Mask Register – EIMSK .................................................107
4.11.3 External Interrupt Flag Register – EIFR ......................................................107
4.11.4 Pin Change Interrupt Control Register - PCICR .........................................108
4.11.5 Pin Change Interrupt Flag Register - PCIFR ..............................................108
4.11.6 Pin Change Mask Register 2 – PCMSK2 ...................................................109
4.11.7 Pin Change Mask Register 1 – PCMSK1 ...................................................109
4.11.8 Pin Change Mask Register 0 – PCMSK0 ...................................................109
4.12 8-bit Timer/Counter0 with PWM .......................................................................110
4.12.1 Overview .....................................................................................................110
4.12.2 Timer/Counter Clock Sources .....................................................................111
4.12.3 Counter Unit ................................................................................................112
4.12.4 Output Compare Unit ..................................................................................113
4.12.5 Compare Match Output Unit .......................................................................114
4.12.6 Modes of Operation ....................................................................................115
4.12.7 Timer/Counter Timing Diagrams .................................................................120
4.12.8 8-bit Timer/Counter Register Description ....................................................122
4.13 Timer/Counter0 and Timer/Counter1 Prescalers .............................................128
4.13.1 Internal Clock Source ..................................................................................128
4.13.2 Prescaler Reset ..........................................................................................128
4.13.3 External Clock Source ................................................................................128
4.13.4 General Timer/Counter Control Register – GTCCR ...................................130
4.14 16-bit Timer/Counter1 with PWM .....................................................................130
4.14.1 Overview .....................................................................................................130
4.14.2 Accessing 16-bit Registers .........................................................................132
4.14.3 Timer/Counter Clock Sources .....................................................................136
4.14.4 Counter Unit ................................................................................................136
4.14.5 Input Capture Unit .......................................................................................137
4.14.6 Output Compare Units ................................................................................139
4.14.7 Compare Match Output Unit .......................................................................141
4.14.8 Modes of Operation ....................................................................................142
4.14.9 Timer/Counter Timing Diagrams .................................................................150
4.14.10 16-bit Timer/Counter Register Description ..................................................152
4.15 8-bit Timer/Counter2 with PWM and Asynchronous Operation .......................159
4.15.1 Overview .....................................................................................................159
4.15.2 Timer/Counter Clock Sources .....................................................................160
4.15.3 Counter Unit ................................................................................................161
4.15.4 Output Compare Unit ..................................................................................162
4.15.5 Compare Match Output Unit .......................................................................163
358 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
359
4921C–AUTO–01/07
4.21.3 Prescaling and Conversion Timing .............................................................265
4.21.4 Changing Channel or Reference Selection .................................................268
4.21.5 ADC Noise Canceler ...................................................................................269
4.21.6 ADC Conversion Result ..............................................................................274
4.22 debugWIRE On-chip Debug System ................................................................279
4.22.1 Features ......................................................................................................279
4.22.2 Overview .....................................................................................................279
4.22.3 Physical Interface ........................................................................................279
4.22.4 Software Break Points ................................................................................280
4.22.5 Limitations of debugWIRE ..........................................................................280
4.22.6 debugWIRE Related Register in I/O Memory .............................................280
4.23 Boot Loader Support – Read-While-Write Self-Programming,
ATA6602 and ATA6603 .................................................................................281
4.23.1 Boot Loader Features .................................................................................281
4.23.2 Application and Boot Loader Flash Sections ..............................................281
4.23.3 Read-While-Write and No Read-While-Write Flash Sections .....................282
4.23.4 Boot Loader Lock Bits .................................................................................285
4.23.5 Entering the Boot Loader Program .............................................................286
4.23.6 Addressing the Flash During Self-Programming .........................................288
4.23.7 Self-Programming the Flash .......................................................................289
4.24 Memory Programming ......................................................................................297
4.24.1 Program And Data Memory Lock Bits .........................................................297
4.24.2 Fuse Bits .....................................................................................................298
4.24.3 Signature Bytes ...........................................................................................300
4.24.4 Calibration Byte ...........................................................................................301
4.24.5 Parallel Programming Parameters, Pin Mapping, and Commands ............301
4.24.6 Serial Programming Pin Mapping ...............................................................303
4.24.7 Parallel Programming .................................................................................303
4.24.8 Serial Downloading .....................................................................................312
4.25 Electrical Characteristics ..................................................................................317
4.25.1 Absolute Maximum Ratings ........................................................................317
4.25.2 DC Characteristics ......................................................................................317
4.25.3 External Clock Drive Waveforms ................................................................319
4.25.4 External Clock Drive ...................................................................................319
4.25.5 Maximum Speed versus VCC .......................................................................319
4.26 LIN Re-synchronization Algorithm ....................................................................320
4.26.1 Synchronization Algorithm ..........................................................................320
4.26.2 Precaution Against OSCCAL Discontinuity .................................................320
360 ATA6602/ATA6603
4921C–AUTO–01/07
ATA6602/ATA6603
361
4921C–AUTO–01/07
Atmel Corporation Atmel Operations
2325 Orchard Parkway Memory RF/Automotive
San Jose, CA 95131, USA 2325 Orchard Parkway Theresienstrasse 2
Tel: 1(408) 441-0311 San Jose, CA 95131, USA Postfach 3535
Fax: 1(408) 487-2600 Tel: 1(408) 441-0311 74025 Heilbronn, Germany
Fax: 1(408) 436-4314 Tel: (49) 71-31-67-0
Fax: (49) 71-31-67-2340
Regional Headquarters Microcontrollers
2325 Orchard Parkway 1150 East Cheyenne Mtn. Blvd.
Europe San Jose, CA 95131, USA Colorado Springs, CO 80906, USA
Atmel Sarl Tel: 1(408) 441-0311 Tel: 1(719) 576-3300
Route des Arsenaux 41 Fax: 1(408) 436-4314 Fax: 1(719) 540-1759
Case Postale 80
CH-1705 Fribourg La Chantrerie Biometrics
Switzerland BP 70602 Avenue de Rochepleine
Tel: (41) 26-426-5555 44306 Nantes Cedex 3, France BP 123
Fax: (41) 26-426-5500 Tel: (33) 2-40-18-18-18 38521 Saint-Egreve Cedex, France
Fax: (33) 2-40-18-19-60 Tel: (33) 4-76-58-47-50
Asia
Fax: (33) 4-76-58-47-60
Room 1219 ASIC/ASSP/Smart Cards
Chinachem Golden Plaza Zone Industrielle
77 Mody Road Tsimshatsui 13106 Rousset Cedex, France
East Kowloon Tel: (33) 4-42-53-60-00
Hong Kong Fax: (33) 4-42-53-60-01
Tel: (852) 2721-9778
Fax: (852) 2722-1369 1150 East Cheyenne Mtn. Blvd.
Colorado Springs, CO 80906, USA
Japan
Tel: 1(719) 576-3300
9F, Tonetsu Shinkawa Bldg.
Fax: 1(719) 540-1759
1-24-8 Shinkawa
Chuo-ku, Tokyo 104-0033
Scottish Enterprise Technology Park
Japan
Maxwell Building
Tel: (81) 3-3523-3551
East Kilbride G75 0QR, Scotland
Fax: (81) 3-3523-7581
Tel: (44) 1355-803-000
Fax: (44) 1355-242-743
Literature Requests
www.atmel.com/literature
Disclaimer: The information in this document is provided in connection with Atmel products. No license, express or implied, by estoppel or otherwise, to any
intellectual property right is granted by this document or in connection with the sale of Atmel products. EXCEPT AS SET FORTH IN ATMEL’S TERMS AND CONDI-
TIONS OF SALE LOCATED ON ATMEL’S WEB SITE, ATMEL ASSUMES NO LIABILITY WHATSOEVER AND DISCLAIMS ANY EXPRESS, IMPLIED OR STATUTORY
WARRANTY RELATING TO ITS PRODUCTS INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE, SPECIAL OR INCIDEN-
TAL DAMAGES (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF PROFITS, BUSINESS INTERRUPTION, OR LOSS OF INFORMATION) ARISING OUT
OF THE USE OR INABILITY TO USE THIS DOCUMENT, EVEN IF ATMEL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Atmel makes no
representations or warranties with respect to the accuracy or completeness of the contents of this document and reserves the right to make changes to specifications
and product descriptions at any time without notice. Atmel does not make any commitment to update the information contained herein. Unless specifically provided
otherwise, Atmel products are not suitable for, and shall not be used in, automotive applications. Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life.
© 2007 Atmel Corporation. All rights reserved. Atmel®, logo and combinations thereof, Everywhere You Are ®, AVR® , AVR Studio ® and oth-
ers, are registered trademarks or trademarks of Atmel Corporation or its subsidiaries. Other terms and product names may be trademarks of
others.
4921C–AUTO–01/07