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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Как лучше описать регистры, оставить как есть в uint32_t или в битовых полях
adnega
сообщение Aug 14 2014, 07:30
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(menzoda @ Aug 14 2014, 11:19) *
Спасибо, доктор! Как же я раньше такой больной то ходил. Попытки принижения собеседника при отсутствии аргументов - это обязательный элемент твоей вашей стратегии спора? Это - риторический вопрос. Если уж притворяешся притворяетесь умным и вежливым человеком - так притворяйся притворяйтесь до конца.

Вы не воспринимайте близко к сердцу, действительно, остаивать магические числа - это, мягко говоря, странно. И случай такой можно назвать
клиническим, но это не означает, что вы не здоровы. Естественный процесс развития от простого к сложному. Магические числа - это самый первый этап.
Затем, если разработчик чувствует перспективу и не ленится, то найдет/напишет библиотеки и будет ими пользоваться. Вы же признались, что лень
в вас победила здравый смысл. Отсюда и диагнозы. Вот если бы вы не ленились - вы бы сделали по-другому?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 14 2014, 07:37
Сообщение #32


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Я показал лучшее решение в сообщении #4, но "опытным профессионалам" лень разобраться и оценить его по-достоинству. Обратите внимание на XX * N.
Go to the top of the page
 
+Quote Post
dxp
сообщение Aug 15 2014, 05:58
Сообщение #33


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



QUOTE (ViKo @ Aug 14 2014, 14:37) *
Я показал лучшее решение в сообщении #4, но "опытным профессионалам" лень разобраться и оценить его по-достоинству. Обратите внимание на XX * N.

Чем это лучше, чем просто комментить строку? Закомментированная строка сразу видна в редакторе с подсветкой синтактсиса, что, имхо, является плюсом, т.к. сразу видно, что активно, а что нет. Или вы что-то иное, нежели механизм оперативного включения/выключения битов, имели в виду?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
ViKo
сообщение Aug 15 2014, 22:05
Сообщение #34


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(dxp @ Aug 15 2014, 08:58) *
Чем это лучше, чем просто комментить строку? Закомментированная строка сразу видна в редакторе с подсветкой синтактсиса, что, имхо, является плюсом, т.к. сразу видно, что активно, а что нет. Или вы что-то иное, нежели механизм оперативного включения/выключения битов, имели в виду?

Иное. Хотя и с вашим утверждением не согласен. Умножил на 0, и знаешь, что этот бит в нуле. Нужна 1, заменил 0 на 1. Однообразие.
Имею же в виду следующее, покажу конкретно на примере из сообщения №4.
Код
    ADC12_CCR_DELAY_0    * 4 |    // Delay between 2 sampling phases: 5

Из stm32f30x.h имеем
Код
#define ADC12_CCR_DELAY_0           ((uint32_t)0x00000100) /*!< DELAY bit 0 */

Из мануала на STM32F303xx
Цитата
Bits 11:8 DELAY: Delay between 2 sampling phases
Set and cleared by software. These bits are used in dual interleaved modes.
...
0100 5 * TADC_CLK

0x00000100 * 0x4 = 0x00000400
Таким образом, умножив маску младшего бита на номер режима, я задаю все нужные биты режима одним махом. Не нужно устанавливать/сбрасывать все биты по-отдельности. Получается не 32 строчки (о чем писалось в начале темы), а намного меньше, столько, сколько есть полей для выбора режимов (в некоторых исключительных случаях поля режимов разбиты на 2, один бит где-то в другом месте болтается, тогда приходится описывать его отдельно).
И тогда - пробежался взглядом по инициализации, и все установки - как на ладони.

Для демонстрации красоты способа, вот другой пример (табуляция сползает, надоело править!):
Код
  DAC->CR =
    DAC_CR_EN1        *  1 |     // DAC channel1 enable
    DAC_CR_BOFF1        *  0 |     // DAC channel1 output buffer disable
    DAC_CR_TEN1        *  1 |     // DAC channel1 Trigger enable
    DAC_CR_TSEL1_0      *  3 |     // DAC channel1 Trigger selection: TIM15
    DAC_CR_WAVE1_0    *  2 |     // DAC channel1 noise/triangle wave generation
    DAC_CR_MAMP1_0     * 11 | // DAC channel1 Mask/Amplitude selector: 12 bit
    DAC_CR_DMAEN1      *  0 |     // DAC channel1 DMA enable
    DAC_CR_EN2             *  1 |     // DAC channel2 enable
    DAC_CR_BOFF2        *  0 |     // DAC channel2 output buffer disable
    DAC_CR_TEN2           *  0 |     // DAC channel2 Trigger enable
    DAC_CR_TSEL2_0      *  7 |     // DAC channel2 Trigger selection: Software
    DAC_CR_WAVE2_0    *  0 |     // DAC channel2 noise/triangle wave generation enable
    DAC_CR_MAMP2_0     *  0 |     // DAC channel2 Mask/Amplitude selector
    DAC_CR_DMAEN2      *  0;     // DAC channel2 DMA enable
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Aug 16 2014, 12:49
Сообщение #35


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Поддержу в этом споре Антоху.
Есть системный подход и есть всё остальное...
Повторное использование кода - это благо и на этом в основном и зиждиться программирование.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th July 2025 - 05:06
Рейтинг@Mail.ru


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