Atmega32A DataSheet Complete DS40002072A 15
Atmega32A DataSheet Complete DS40002072A 15
INL
Ideal ADC
Actual ADC
• 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.
V IN 1024
ADC = --------------------------
V REF
where VIN is the voltage on the selected input pin and VREF the selected voltage reference (see Table 23-3 on page
214 and Table 23-4 on page 214). 0x000 represents analog ground, and 0x3FF represents the selected reference
voltage minus one LSB.
If differential channels are used, the result is
V POS – V NEG GAIN 512
ADC = ------------------------------------------------------------------------
V REF
where VPOS is the voltage on the positive input pin, VNEG the voltage on the negative input pin, GAIN the selected
gain factor, and VREF the selected voltage reference. The result is presented in two’s complement form, from 0x200
(-512d) through 0x1FF (+511d). Note that if the user wants to perform a quick polarity check of the results, it is suf-
ficient to read the MSB of the result (ADC9 in ADCH). If this bit is one, the result is negative, and if this bit is zero,
the result is positive. Figure 23-14 shows the decoding of the differential input range.
Table 23-2 shows the resulting output codes if the differential input channel pair (ADCn - ADCm) is selected with a
gain of GAIN and a reference voltage of VREF.
Output Code
0x1FF
0x000
0x200
Example:
ADMUX = 0xED (ADC3 - ADC2, 10x gain, 2.56V reference, left adjusted result)
Voltage on ADC3 is 300 mV, voltage on ADC2 is 500 mV.
ADCR = 512 × 10 × (300 - 500) / 2560 = -400 = 0x270
ADCL will thus read 0x00, and ADCH will read 0x9C. Writing zero to ADLAR right adjusts the result:
ADCL = 0x70, ADCH = 0x02.
Bit 7 6 5 4 3 2 1 0
REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0 ADMUX
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
Bit 7 6 5 4 3 2 1 0
ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0 ADCSRA
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
23.9.3.1 ADLAR = 0
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
23.9.3.2 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. If differential channels are used,
the result is presented in two’s complement form.
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.
Bit 7 6 5 4 3 2 1 0
ADTS2 ADTS1 ADTS0 – ACME PUD PSR2 PSR10 SFIOR
Read/Write R/W R/W R/W R R/W R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0
24.1 Features
• JTAG (IEEE std. 1149.1 Compliant) Interface
• Boundary-scan Capabilities According to the IEEE std. 1149.1 (JTAG) Standard
• Debugger Access to:
– All Internal Peripheral Units
– Internal and External RAM
– The Internal Register File
– Program Counter
– EEPROM and Flash Memories
– Extensive On-chip Debug Support for Break Conditions, Including
– AVR Break Instruction
– Break on Change of Program Memory Flow
– Single Step Break
– Program Memory Breakpoints on Single Address or Address Range
– Data Memory Breakpoints on Single Address or Address Range
• Programming of Flash, EEPROM, Fuses, and Lock Bits through the JTAG Interface
• On-chip Debugging Supported by Atmel Studio
24.2 Overview
The AVR IEEE std. 1149.1 compliant JTAG interface can be used for
• Testing PCBs by using the JTAG Boundary-scan capability
• Programming the non-volatile memories, Fuses and Lock bits
• On-chip Debugging
A brief description is given in the following sections. Detailed descriptions for Programming via the JTAG interface,
and using the Boundary-scan Chain can be found in the sections “Programming via the JTAG Interface” on page
274 and “IEEE 1149.1 (JTAG) Boundary-scan” on page 224, respectively. The On-chip Debug support is consid-
ered being private JTAG instructions, and distributed within Microchip and to selected third party vendors only.
Figure 24-1 shows a block diagram of the JTAG interface and the On-chip Debug system. The TAP Controller is a
state machine controlled by the TCK and TMS signals. The TAP Controller selects either the JTAG Instruction
Register or one of several Data Registers as the scan chain (Shift Register) between the TDI input and TDO out-
put. The Instruction Register holds JTAG instructions controlling the behavior of a Data Register.
The ID-Register, Bypass Register, and the Boundary-scan Chain are the Data Registers used for board-level test-
ing. The JTAG Programming Interface (actually consisting of several physical and virtual Data Registers) is used
for JTAG Serial Programming via the JTAG interface. The Internal Scan Chain and Break Point Scan Chain are
used for On-chip Debugging only.
• TDO: Test Data Out. Serial output data from Instruction Register or Data Register.
The IEEE std. 1149.1 also specifies an optional TAP signal; TRST – Test ReSeT – which is not provided.
When the JTAGEN fuse is unprogrammed, these four TAP pins are normal port pins and the TAP controller is in
reset. When programmed and the JTD bit in MCUCSR is cleared, the TAP input signals are internally pulled high
and the JTAG is enabled for Boundary-scan and programming. In this case, the TAP output pin (TDO) is left float-
ing in states where the JTAG TAP controller is not shifting data, and must therefore be connected to a pull-up
resistor or other hardware having pull-ups (for instance the TDI-input of the next device in the scan chain). The
device is shipped with this fuse programmed.
For the On-chip Debug system, in addition to the JTAG interface pins, the RESET pin is monitored by the debug-
ger to be able to detect external reset sources. The debugger can also pull the RESET pin low to reset the whole
system, assuming only open collectors on the reset line are used in the application.
DEVICE BOUNDARY
TDI
JTAG PROGRAMMING
TDO TAP INTERFACE
TCK CONTROLLER
TMS
AVR CPU
INTERNAL
FLASH Address SCAN PC
INSTRUCTION MEMORY Data CHAIN Instruction
REGISTER
ID
REGISTER BREAKPOINT
UNIT
M FLOW CONTROL
PERIPHERIAL
BYPASS
Analog inputs
U UNIT
ANALOG
X REGISTER DIGITAL
UNITS
PERIPHERAL
UNITS
BREAKPOINT
SCAN CHAIN
JTAG / AVR CORE
COMMUNICATION
ADDRESS INTERFACE
I/O PORT n
1 Test-Logic-Reset
0 1 1 1
Run-Test/Idle Select-DR Scan Select-IR Scan
0 0
1 1
Capture-DR Capture-IR
0 0
Shift-DR 0 Shift-IR 0
1 1
1 1
Exit1-DR Exit1-IR
0 0
Pause-DR 0 Pause-IR 0
1 1
0 0
Exit2-DR Exit2-IR
1 1
Update-DR Update-IR
1 0 1 0
TDO pin. The JTAG Instruction selects a particular Data Register as path between TDI and TDO and controls
the circuitry surrounding the selected Data Register.
• Apply the TMS sequence 1, 1, 0 to re-enter the Run-Test/Idle state. The instruction is latched onto the parallel
output from the Shift Register path in the Update-IR state. The Exit-IR, Pause-IR, and Exit2-IR states are only
used for navigating the state machine.
• At the TMS input, apply the sequence 1, 0, 0 at the rising edges of TCK to enter the Shift Data Register – Shift-
DR state. While in this state, upload the selected Data Register (selected by the present JTAG instruction in the
JTAG Instruction Register) from the TDI input at the rising edge of TCK. In order to remain in the Shift-DR state,
the TMS input must be held low during input of all bits except the MSB. The MSB of the data is shifted in when
this state is left by setting TMS high. While the Data Register is shifted in from the TDI pin, the parallel inputs to
the Data Register captured in the Capture-DR state is shifted out on the TDO pin.
• Apply the TMS sequence 1, 1, 0 to re-enter the Run-Test/Idle state. If the selected Data Register has a latched
parallel-output, the latching takes place in the Update-DR state. The Exit-DR, Pause-DR, and Exit2-DR states
are only used for navigating the state machine.
As shown in the state diagram, the Run-Test/Idle state need not be entered between selecting JTAG instruction
and using Data Registers, and some JTAG instructions may select certain functions to be performed in the Run-
Test/Idle, making it unsuitable as an Idle state.
Note: Independent of the initial state of the TAP Controller, the Test-Logic-Reset state can always be entered by holding TMS
high for five TCK clock periods.
For detailed information on the JTAG specification, refer to the literature listed in “Bibliography” on page 223.
The JTAGEN Fuse must be programmed to enable the JTAG Test Access Port. In addition, the OCDEN Fuse must
be programmed and no Lock bits must be set for the On-chip Debug system to work. As a security feature, the On-
chip Debug system is disabled when any Lock bits are set. Otherwise, the On-chip Debug system would have pro-
vided a back-door into a secured device.
The AVR JTAG ICE is a powerful development tool for On-chip Debugging of all AVR 8-bit RISC Microcontrollers
with IEEE 1149.1 compliant JTAG interface. The JTAG ICE and the Atmel Studio user interface give the user com-
plete control of the internal resources of the microcontroller, helping to reduce development time by making
debugging easier. The JTAG ICE performs real-time emulation of the micrcontroller while it is running in a target
system.
Refer to the Support Tools section on the AVR pages on www.microchip.com for a full description of the AVR
JTEG ICE. Atmel Studio can be downloaded free from Software section on the same web site.
All necessary execution commands are available in Atmel Studio, both on source level and on disassembly level.
The user can execute the program, single step through the code either by tracing into or stepping over functions,
step out of functions, place the cursor on a statement and execute until the statement is reached, stop the execu-
tion, and reset the execution target. In addition, the user can have an unlimited number of code breakpoints (using
the BREAK instruction) and up to two data memory breakpoints, alternatively combined as a mask (range) Break
Point.
24.7.1 PRIVATE0; $8
Private JTAG instruction for accessing On-chip Debug system.
24.7.2 PRIVATE1; $9
Private JTAG instruction for accessing On-chip Debug system.
24.7.3 PRIVATE2; $A
Private JTAG instruction for accessing On-chip Debug system.
24.7.4 PRIVATE3; $B
Private JTAG instruction for accessing On-chip Debug system.
The details on programming through the JTAG interface and programming specific JTAG instructions are given in
the section “Programming via the JTAG Interface” on page 274.
Bit 7 6 5 4 3 2 1 0
MSB/IDRD LSB OCDR
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 OCDR Register provides a communication channel from the running program in the microcontroller to the
debugger. The CPU can transfer a byte to the debugger by writing to this location. At the same time, an Internal
Flag; I/O Debug Register Dirty – IDRD – is set to indicate to the debugger that the register has been written. When
the CPU reads the OCDR Register the 7 LSB will be from the OCDR Register, while the MSB is the IDRD bit. The
debugger clears the IDRD bit when it has read the information.
In some AVR devices, this register is shared with a standard I/O location. In this case, the OCDR Register can only
be accessed if the OCDEN Fuse is programmed, and the debugger enables access to the OCDR Register. In all
other cases, the standard I/O location is accessed.
Refer to the debugger documentation for further information on how to use this register.
24.10 Bibliography
For more information about general Boundary-scan, the following literature can be consulted:
• IEEE: IEEE Std 1149.1-1990. IEEE Standard Test Access Port and Boundary-scan Architecture, IEEE, 1993
• Colin Maunder: The Board Designers Guide to Testable Logic Circuits, Addison-Wesley, 1992
25.1 Features
• JTAG (IEEE std. 1149.1 Compliant) Interface
• Boundary-scan Capabilities According to the JTAG Standard
• Full Scan of all Port Functions as well as Analog Circuitry having Off-chip Connections
• Supports the Optional IDCODE Instruction
• Additional Public AVR_RESET Instruction to Reset the AVR
25.2 Overview
The Boundary-scan chain has the capability of driving and observing the logic levels on the digital I/O pins, as well
as the boundary between digital and analog logic for analog circuitry having Off-chip connections. At system level,
all ICs having JTAG capabilities are connected serially by the TDI/TDO signals to form a long Shift Register. An
external controller sets up the devices to drive values at their output pins, and observe the input values received
from other devices. The controller compares the received data with the expected result. In this way, Boundary-scan
provides a mechanism for testing interconnections and integrity of components on Printed Circuits Boards by using
the four TAP signals only.
The four IEEE 1149.1 defined mandatory JTAG instructions IDCODE, BYPASS, SAMPLE/PRELOAD, and
EXTEST, as well as the AVR specific public JTAG instruction AVR_RESET can be used for testing the Printed Cir-
cuit Board. Initial scanning of the Data Register path will show the ID-code of the device, since IDCODE is the
default JTAG instruction. It may be desirable to have the AVR device in Reset during Test mode. If not reset, inputs
to the device may be determined by the scan operations, and the internal software may be in an undetermined
state when exiting the Test mode. Entering reset, the outputs of any Port Pin will instantly enter the high imped-
ance state, making the HIGHZ instruction redundant. If needed, the BYPASS instruction can be issued to make the
shortest possible scan chain through the device. The device can be set in the reset state either by pulling the exter-
nal RESET pin low, or issuing the AVR_RESET instruction with appropriate setting of the Reset Data Register.
The EXTEST instruction is used for sampling external pins and loading output pins with data. The data from the
output latch will be driven out on the pins as soon as the EXTEST instruction is loaded into the JTAG IR-Register.
Therefore, the SAMPLE/PRELOAD should also be used for setting initial values to the scan ring, to avoid damag-
ing the board when issuing the EXTEST instruction for the first time. SAMPLE/PRELOAD can also be used for
taking a snapshot of the external pins during normal operation of the part.
The JTAGEN Fuse must be programmed and the JTD bit in the I/O Register MCUCSR must be cleared to enable
the JTAG Test Access Port.
When using the JTAG interface for Boundary-scan, using a JTAG TCK clock frequency higher than the internal
chip frequency is possible. The chip clock is not required to run.
MSB LSB
Bit 31 28 27 12 11 1 0
Device ID Version Part Number Manufacturer ID 1
4 bits 16 bits 11 bits 1 bit
25.3.2.1 Version
Version is a 4-bit number identifying the revision of the component. The JTAG version number follows the revision
of the device. Revision A is 0x0, revision B is x1 and so on.
25.3.2.3 Manufacturer ID
The Manufacturer ID is a 11 bit code identifying the manufacturer. The JTAG manufacturer ID is listed in Table 25-
2.