Цитата
WHALE Дата Сегодня, 20:11
В даташите-же все есть
in r18,sreg
cli
in r16,tcnt1h
in r17,tcnt1l
out sreg,r18
Т.е для чтения счетчика на лету надо добиться атомарности операции чтения
____________
Небольшое, но важное уточнение!
цитата из www.atmel.com/... .../doc2486.pdf (ATmega8)
Цитата
To do a 16-bit write, the High byte must be written before the Low byte. For a 16-bit
read, the Low byte must be read before the High byte.
...
Assembly Code Example(1)
...
Код
; Set TCNT1 to 0x01FF
ldi r17,0x01
ldi r16,0xFF
out TCNT1H,r17
out TCNT1L,r16
; Read TCNT1 into r17:r16
in r16,TCNT1L
in r17,TCNT1H
...
То есть, при чтении 16-разрядного регистра таймера необходимо читать
сначала младший байт, а затем старший.
А при записи - наоборот.
Смотри в даташите раздел "Accessing 16-Bit Registers".
(Или, если проблемы с англицким, в книге:
Евстифеев А.В.
"Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL")
Александр
2006 03 24