Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Int_Stop_Time = ((TCNT1H<<8) | TCNT1L); - Даст неправильный результат (только TCNT1L)
Отправлено
leon
17 апреля 2008 г. 20:21
В ответ на:
А CV позволяет копировать 16-битные регистры в переменные целиком?...
отправлено Dikoy 17 апреля 2008 г. 17:10
Правильный результат, (но не оптимальный для CV) если так
Int_Stop_Time = (((int)TCNT1H<<8) | TCNT1L);
Составить ответ
|
Вернуться на конференцию
Ответы
Правильный результат - это когда читаешь ДШ и узнаёшь оттуда тонкости доступа к 16-битным регистрам. Прямой вариант - Var = TCNT1 - правильный, патамушта TCNT1 определен в .h как SFRW со специальным доступом - читать сначала младший, а потом старший байт, а записывать - наоборот. И когда тебе что-то говорят - слушайся, а не гони пургу -->
—
MBedder
(17.04.2008 21:05:19
80.92.96.19
,
пустое
,
ссылка
)
Похоже, о старой странице все уже забыли. Спокойной ночи.
—
leon
(17.04.2008 23:25:29
82.207.118.75
,
пустое
)
Для чтения можно так - Var = IN_PORT16(TCNT1); , предварительно определив #define IN_PORT16(PORT) *(int*)&(PORT ## L). Но записывать то подобным образом нельзя. Как же?
—
leon
(17.04.2008 23:19:8
82.207.118.75
,
пустое
)
Константу можно записывать так - #define OUT_PORT16(PORT, CONST16) (PORT ## H = CONST16 >> 8, PORT ## L = CONST16)
—
leon
(17.04.2008 23:29:51
82.207.118.75
,
пустое
)
Для ATmega88 записи Var = TCNT1; и TCNT1 = Var; в CV вызывают ошибку. То как?
—
leon
(17.04.2008 23:09:17
82.207.118.75
,
пустое
)
Хотелось бы знать Ваше мнение о том, как можно красиво и правильно записывать результат в такие регистры, если они в области SRAM
—
leon
(17.04.2008 22:36:32
82.207.118.75
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
поделите шесть пополам:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru