реклама на сайте
подробности

 
 
> Битовые поля
Ivan_Kov
сообщение Feb 6 2007, 12:07
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 30-10-06
Из: г. Курск
Пользователь №: 21 787



Рассматривая примеры программ в Embedded (для ARM) обратил внимание, что нигде не встречается работа с регистрами микроконтроллеров с использованием битовых полей. Интересно, почему так?
Помнится еще студентами ставили эксперимент, сравнивая скорость работы через битовые поля и использование масок со сдвигами. Пришли к выводу что битовые поля как-то побыстрее.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Ivan_Kov
сообщение Feb 6 2007, 12:27
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 30-10-06
Из: г. Курск
Пользователь №: 21 787



что-то мне не верится что просто-так. хотя бы потому, что битовые поля - удобнее.
некоторое время назад писал софт для ЦОС, взаимодействующий с ПЛИС. и я софт разрабатывал и человек проект для ПЛИС тоже разрабатывал. естественно были всякие регистры с битовыми полями, формат которых менялся в процессе разработки. Если-бы я не использовал структуры с битовыми полями, то намного сложнее было бы адаптировать софт под новые версии проекта ПЛИС.

Цитата(Doka @ Feb 6 2007, 12:21) *
... А битовые поля каждый раз описывать надо....


Почему это каждый раз? один раз описал формат для конкретного регистра, и используй сколько хочешь.
А в случае с масками, это надо каждый раз при использовании учитывать расположение битов.
А если формат измениться, скажем поле шире станет, так это надо будет по всему проекту исправлять, запаришься.
Go to the top of the page
 
+Quote Post
Doka
сообщение Feb 6 2007, 12:45
Сообщение #3


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



Цитата(Ivan_Kov @ Feb 6 2007, 12:27) *
Цитата(Doka @ Feb 6 2007, 12:21) *
... А битовые поля каждый раз описывать надо....
Почему это каждый раз? один раз описал формат для конкретного регистра, и используй сколько хочешь.
А в случае с масками, это надо каждый раз при использовании учитывать расположение битов.

ок. 1:1 =)
ибо биты маски тоже через #define определить можно:
Код
#define DMAINT0 (1<<2)  /* IFR1 */
#define DMAINT1 (1<<9)  /* IFR0 */


ну а по поводу начального вопроса: думаю тут еще играют роль другие факторы:
описал я например регистр в пространстве ввода-вывода (уже существующий) как:
Код
#define  DMA_CSSA_L0  (*(volatile ioport unsigned int *)(0x0C04))   /* DMA Channel 0 Source Start Address, lower bits, register */
и потом его спокойно юзаю через всякие:
Код
#define SETBIT(REG,BIT)  REG |=  (BIT)
как для того же самого декларировать битовые поля - не было времени разбираться. А дальше - просто привычка)


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016