93
ATmega8535(L)
2502K–AVR–10/06
The following code examples show how to do an atomic read of the TCNT1 Register
contents. Reading any of the OCR1A/B or ICR1 Registers can be done by using the
same principle.
Note:
1. See “About Code Examples” on page 7.
The assembly code example returns the TCNT1 value in the r17:r16 register pair.
Assembly Code Example
TIM16_ReadTCNT
1
:
;
Save Global Interrupt Flag
in
r18,SREG
;
Disable interrupts
cli
; Read TCNT
1
into r17:r16
in
r16,TCNT
1
L
in
r17,TCNT
1
H
;
Restore Global Interrupt Flag
out
SREG,r18
ret
C Code Example
unsigned int
TIM16_ReadTCNT
1
(
void
)
{
unsigned char
sreg;
unsigned int
i;
/*
Save Global Interrupt Flag
*/
sreg = SREG;
/*
Disable interrupts
*/
_CLI();
/*
Read TCNT
1
into i
*/
i = TCNT
1
;
/*
Restore Global Interrupt Flag
*/
SREG = sreg;
return
i;
}
Summary of Contents for ATmega8535
Page 314: ...314 ATmega8535 L 2502K AVR 10 06 ...
Page 320: ...vi ATmega8535 L 2502K AVR 10 06 ...