atmega32u4-16mu ATMEL Corporation, atmega32u4-16mu Datasheet - Page 178

no-image

atmega32u4-16mu

Manufacturer Part Number
atmega32u4-16mu
Description
Atmega32u4 8-bit Avr Microcontroller With 32k Bytes Of Isp Flash And Usb Controller
Manufacturer
ATMEL Corporation
Datasheet
16.11 Accessing 10-Bit Registers
178
ATmega32U4
If 10-bit values are written to the TCNTn and OCRnA/B/C/D registers, the 10-bit registers can be
byte accessed by the AVR CPU via the 8-bit data bus using two read or write operations. The
10-bit registers have a common 2-bit Timer/Counter4 High Byte Register (TC4H) that is used for
temporary storing of the two MSBs of the 10-bit access. The same TC4H register is shared
between all 10-bit registers. Accessing the low byte triggers the 10-bit read or write operation.
When the low byte of a 10-bit register is written by the CPU, the high byte stored in the TC4H
register, and the low byte written are both copied into the 10-bit register in the same clock cycle.
When the low byte of a 10-bit register is read by the CPU, the high byte of the 10-bit register is
copied into the TC4H register in the same clock cycle as the low byte is read.
To do a 10-bit write, the high byte must be written to the TC4H register before the low byte is
written. For a 10-bit read, the low byte must be read before the high byte.
The following code examples show how to access the 10-bit timer registers assuming that no
interrupts updates the TC4H register. The same principle can be used directly for accessing the
OCRnA/B/C/C/D registers.
Note:
The assembly code example returns the TCNTn value in the r17:r16 register pair.
Assembly Code Example
C Code Example
unsigned int i;
...
/* Set TCNTn to 0x01FF */
TCnH = 0x01;
TCNTn = 0xFF;
/* Read TCNTn into i */
i = TCNTn;
i |= ((unsigned int)TCnH << 8);
...
...
; Set TCNTn to 0x01FF
ldi r17,0x01
ldi r16,0xFF
out TCnH,r17
out TCNTn,r16
; Read TCNTn into r17:r16
in r16,TCNTn
in r17,TCnH
...
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”.
7766A–AVR–03/08

Related parts for atmega32u4-16mu