Datasheet

2018 Microchip Technology Inc. Data Sheet Complete DS40002060A-page 81
ATtiny4/5/9/10
The code example returns the TCNT0 value in the r17:r16 register pair.
The following code example shows how to do an atomic write of the TCNT0 Register contents. Writing any of the OCR0A/
B or ICR0 Registers can be done by using the same principle.
Note: See “Code Examples” on page 15.
The code example requires that the r17:r16 register pair contains the value to be written to TCNT0.
12.10.1 Reusing the Temporary High Byte Register
If writing to more than one 16-bit register where the high byte is the same for all registers written, then the high byte only
needs to be written once. However, note that the same rule of atomic operation described previously also applies in this
case.
12.11 Register Description
12.11.1 TCCR0A – Timer/Counter0 Control Register A
Bits 7:6 – COM0A1:0: Compare Output Mode for Channel A
Bits 5:4 – COM0B1:0: Compare Output Mode for Channel B
The COM0A1:0 and COM0B1:0 control the behaviour of Output Compare pins OC0A and OC0B, respectively. If one or
both COM0A1:0 bits are written to one, the OC0A output overrides the normal port functionality of the I/O pin it is con-
nected to. Similarly, if one or both COM0B1:0 bit are written to one, the OC0B output overrides the normal port functionality
of the I/O pin it is connected to.
Note, however, that the Data Direction Register (DDR) bit corresponding to the OC0A or OC0B pin must be set in order to
enable the output driver.
Assembly Code Example
TIM16_WriteTCNT0:
; Save global interrupt flag
in r18,SREG
; Disable interrupts
cli
; Set TCNT0 to r17:r16
out TCNT0H,r17
out TCNT0L,r16
; Restore global interrupt flag
out SREG,r18
ret
Bit 76543210
0x2E COM0A1 COM0A0 COM0B1 COM0B0
WGM01 WGM00 TCCR0A
Read/Write R/W R/W R/W R/W R R R/W R/W
Initial Value 0 0 0 0 0 0 0 0