Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Уважаемые! Вы знаете ,как я к вам хорошо отношусь...
Отправлено
Гарин
25 апреля 2008 г. 14:34
подскажите неучу, как верно оперировать битами регистров програмируя на Сях, и почему именно так нужно поступать?
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)
while (!(TWCR & (1<<TWINT)));
if ((TWSR & 0xF8) != START) ERROR();
Вот как правильно это читать/понимать?
Составить ответ
|
Вернуться на конференцию
Ответы
А это не только на Сях - на АСМ то же самое. Вкратце - для твоего же удобства, развернуто - внутри(+)
—
MBedder
(25.04.2008 15:08:1
80.92.96.19
, 1503 байт)
Спс! Думаю, что усек :) Плюс при переходе на другой проц, многое в написан...{+}(+)
—
Гарин
(25.04.2008 17:22:50
213.186.45.33
, 255 байт)
Хедеры менять получится лишь внутри семейства, и то с оглядкой на ДШ - у каждого семейства свои названия/сокращения периферийных устройств
—
MBedder
(25.04.2008 17:27:32
80.92.96.19
,
пустое
)
Понятно. Бум пробовать! Кстати нашел аналог ADM24xx! Ну я думаю, что аналог! :) Вота: IL485
—
Гарин
(25.04.2008 17:44:24
213.186.45.33
, 98 байт)
Это не аналог, а кака глючная. Если хочешь приличных аналогов - то тогда уж либо TI, либо Silabs -->
—
MBedder
(25.04.2008 18:19:24
80.92.96.19
,
пустое
,
ссылка
,
картинка
)
Вот теперь то же самое объясни мне, потому как в том же IARе на MSP430 биты определены не номерами битов, а масками, все пишут (BIT7 | BIT0) и не парятся. Если не использовать собственных присвоений, будет так же безошибочно и понятно.
—
Vladimir Ljaschko
(25.04.2008 15:41:17
194.158.204.49
, 1224 байт)
Как в хедере впервые нопесали - так и тянется. Ничто, кроме лени и элементарной заботы о совместимости, не мешает переписать хедеры, или писать ldi r16,exp2(bit1)|exp2(bit2), или применять макросы
—
MBedder
(25.04.2008 16:51:5
80.92.96.19
,
пустое
)
sbi EECR, EEWE мешает - часть битов определять масками, а часть номерами - некузяво, лучше все номерами.
—
ReAl
(25.04.2008 18:29:32
193.111.248.46
,
пустое
)
Это да - повбывыв бы :))
—
MBedder
(25.04.2008 19:20:18
80.92.96.19
,
пустое
)
+1 Да в IAR'овских хидерах для MSP430xxx вообще всё очень , даже уютненько- не заблудиссси ;) чего не скажешь о даташитах. Но за столько времени и с этими гулениями (курениями) в них привыкаешь. Да и Компелл, смотрю , отслеживает неплохо.
—
Макаров
(25.04.2008 16:13:24
192.168.235.10, 77.235.200.210
,
пустое
)
У AVR в некоторых командах нужны номера битов, а не маски, а *.h файлы общие для С и для ассемблера (и тем более для ассемблерных вставок).
—
ReAl
(25.04.2008 15:51:20
193.111.248.46
,
пустое
)
Спасибо, теперь понял откуда эта хрень пошла :)
—
Vladimir Ljaschko
(25.04.2008 16:02:36
194.158.204.49
,
пустое
)
Там для ленивых макрос есть #define _BV(BIT) (1<<(BIT)), но мне привычнее сдвигами.
—
ReAl
(25.04.2008 16:28:51
193.111.248.46
,
пустое
)
Ответ:
—
Тумблер
(25.04.2008 14:52:18
194.190.167.185, 194.190.165.196
, 546 байт)
а если несколько бит то: TWCR &= ~(1<<TWINT))~(1<<TWSTA)~(1<<TWEN); ?
—
Гарин
(25.04.2008 17:26:9
213.186.45.33
,
пустое
)
TWCR &= ~((1<<TWINT)|(1<<TWSTA)|(1<<TWEN));
—
Andrey190
(25.04.2008 19:06:40
80.76.181.109, 83.234.191.193
,
пустое
)
если несколько бит СБРОСИТЬ я имел ввиду..
—
Гарин
(25.04.2008 17:27:30
213.186.45.33
,
пустое
)
Ответ: а подумать ? ;)
—
Тумблер
(25.04.2008 17:46:18
194.186.242.78
, 106 байт)
Дурная привычка - совать куда ни попадя &= и |=, он приводит к двум лишним операциям и ненужному (а иногда и вредному) ЧТЕНИЮ i/o регистра. Так делать нужно только тогда, когда требуется сбросить ТОЛЬКО определенные биты, а остальные оставить нетронутыми, а если нужно сбросить ЭТИ биты в 0, а остальные - в 1, то TWCR = ~(((1<<TWINT))|((1<<TWSTA))|((1<<TWEN)))
—
MBedder
(25.04.2008 19:18:12
80.92.96.19
,
пустое
)
А я и не спорю. Сделано именно то, что сделано - сброшены конкретные биты и не тронуты все остальные.
—
Тумблер
(25.04.2008 22:15:13
194.186.242.78
,
пустое
)
Ответ: Пока попытаюсь просто запомнить! :) Спасибо!
—
Гарин
(25.04.2008 19:04:24
92.113.13.179
, 167 байт)
Она делает из единиц нули и наоборот
—
MBedder
(25.04.2008 19:19:12
80.92.96.19
,
пустое
)
Ответ:
—
misyachniy
(25.04.2008 14:50:34
195.10.210.194
, 957 байт)
"ЖЫ, ШЫ пишутся через И"...
—
ETM
(25.04.2008 14:42:1
62.117.85.84
,
пустое
)
е2-е4 :)
—
Гарин
(25.04.2008 17:46:1
213.186.45.33
,
пустое
)
А если я "въеду", буду помогать потом новичкам с такими вопросами! Ну чесна! :)
—
Гарин
(25.04.2008 14:35:32
213.186.45.33
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
прибавьте тройку к двум:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru