Datasheet

96
7701F–AVR–10/12
Atmel ATtiny24/44/84 [Preliminary]
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. See “About Code Examples” on page 6.
The assembly code example requires that the r17:r16 register pair contains the value to be
written to TCNT1.
14.3.1 Reusing the Temporary High Byte Register
If when writing to more than one 16-bit register the high byte is the same for all registers writ-
ten, 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.
14.4 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/Counter Prescaler” on page 120.
Assembly Code Example
(1)
TIM16_WriteTCNT1:
; Save global interrupt flag
in r18,SREG
; Disable interrupts
cli
; Set TCNT1 to r17:r16
out TCNT1H,r17
out TCNT1L,r16
; Restore global interrupt flag
out SREG,r18
ret
C Code Example
(1)
void TIM16_WriteTCNT1( unsigned int i )
{
unsigned char sreg;
unsigned int i;
/* Save global interrupt flag */
sreg = SREG;
/* Disable interrupts */
_CLI();
/* Set TCNT1 to i */
TCNT1 = i;
/* Restore global interrupt flag */
SREG = sreg;
}