Rainbow-electronics Atmega169L Instrukcja Użytkownika Strona 98

  • Pobierz
  • Dodaj do moich podręczników
  • Drukuj
  • Strona
    / 317
  • Spis treści
  • BOOKMARKI
  • Oceniono. / 5. Na podstawie oceny klientów
Przeglądanie stron 97
98
ATmega169V/L
2514AAVR08/02
Therefore, when both the main code and the interrupt code update the temporary regis-
ter, the main code must disable the interrupts during the 16-bit access.
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. 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 LDSand STScombined with SBRS, SBRC, SBR, and
CBR.
The assembly code example returns the TCNT1 value in the r17:r16 register pair.
Assembly Code Example
(1)
TIM16_ReadTCNT1:
;
Save global interrupt flag
in r18,SREG
;
Disable interrupts
cli
; Read TCNT
1 into r17:r16
in r16,TCNT
1L
in r17,TCNT
1H
;
Restore global interrupt flag
out SREG,r18
ret
C Code Example
(1)
unsigned int TIM16_ReadTCNT1( 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;
}
Przeglądanie stron 97
1 2 ... 93 94 95 96 97 98 99 100 101 102 103 ... 316 317

Komentarze do niniejszej Instrukcji

Brak uwag