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

 
 
> Как лучше описать регистры, оставить как есть в uint32_t или в битовых полях
toweroff
сообщение Aug 8 2014, 21:43
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Доброго времени

Есть у меня некий хидер для LPC177x
Там описан volatile регистр, к примеру IOCON, потом регистр пина, к которым доступ примерно такой - LPC_IOCON->P0_0 = xxx;
Я тут устал считать биты, описал в виде полей типы вот так:
Код
typedef struct
{
    union
    {
        __IO uint32_t D_IOCON;
        struct
        {
            __IO uint32_t FUNC        : 3;
            __IO uint32_t MODE        : 2;
            __IO uint32_t HYS        : 1;
            __IO uint32_t INV        : 1;
                 uint32_t RESERVED0    : 2;
            __IO uint32_t SLEW        : 1;
            __IO uint32_t OD        : 1;
                 uint32_t RESERVED1    : 21;
        };
    };
} LPC_PIN_TypeD_TypeDef;


но, разумеется, из-за vilatile код генерится в два этапа:
Код
;;;75         LPC_IOCON->P2_24.FUNC = 0; // GPIO pin
00000c  4921              LDR      r1,|L1.148|
00000e  f8d12160          LDR      r2,[r1,#0x160]
000012  f0220207          BIC      r2,r2,#7
000016  f8c12160          STR      r2,[r1,#0x160]
;;;76         LPC_IOCON->P2_24.MODE = 2; // Pullup enabled
00001a  f8d12160          LDR      r2,[r1,#0x160]
00001e  f0220218          BIC      r2,r2,#0x18
000022  3210              ADDS     r2,r2,#0x10
000024  f8c12160          STR      r2,[r1,#0x160]


как можно заставить компилятор генерить код в один этап?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Aug 12 2014, 14:20
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(menzoda @ Aug 12 2014, 18:44) *
Вот это точно бестолковое занятие.

Это была гипербола, мне жаль, что вы не поняли.

Цитата(menzoda @ Aug 12 2014, 18:44) *
поэтому я делаю совсем просто: магическое число и комментарий о том, что там делается:

Вы тоже начинали с PIC-ов? sm.gif

AlexandrY, поздравляю, ваш тонкий троллинг уже даёт всходы.

Цитата(AlexandrY @ Aug 12 2014, 19:48) *
Наша память ассоциативна. В этом смысле она бездонна.

Эот вы ещё маловато программируете, всего 15 лет. Вот после 20 лет вы поймёте, что у нашей памяти есть дноsm.gif
Цитата(AlexandrY @ Aug 12 2014, 19:48) *
Лучше написать длинный коментарий но прямо радом с битом, чем обозвать бит мнемоникой у вместе с комментариями увести в хидер.

Я так и не услышал от вас аргументов, чем этот подход лучше. И не услышу, по всей видимости.
Свои аргументы, чем этот подход хуже, я уже привёл.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
menzoda
сообщение Aug 12 2014, 14:57
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 13-09-12
Пользователь №: 73 530



Цитата(AHTOXA @ Aug 12 2014, 18:20) *
Это была гипербола, мне жаль, что вы не поняли.

Там же я процитировал и предыдущую твою фразу (извини, не люблю ВЫкать в интернетах), которая была не гиперболой. Странно, что ты ее не заметил, или только сделал вид? Кроме того я высказался не только и не сколько про абсурдное "переписать весь мануал", которое и так всем понятно, сколько про "копипастим коммент из мануала".

Цитата(AHTOXA @ Aug 12 2014, 18:20) *
Вы тоже начинали с PIC-ов? sm.gif

Нет, с TMS32F28xx от Texas Instruments и LH75401 от тогда еще Phillips, если это имеет какое-то значение. С PIC приходится иметь дело всего в одном устройстве, и мне не особо нравятся эти моменты.

Сообщение отредактировал menzoda - Aug 12 2014, 15:01
Go to the top of the page
 
+Quote Post
Herz
сообщение Aug 12 2014, 20:20
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(menzoda @ Aug 12 2014, 17:57) *
(извини, не люблю ВЫкать в интернетах)

Я всё же попросил бы Вас об этом одолжении. Не все любят, когда им ТЫкают,особенно незнакомые люди, и интернеты - не исключение.
Go to the top of the page
 
+Quote Post
menzoda
сообщение Aug 14 2014, 07:19
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 13-09-12
Пользователь №: 73 530



Цитата
По вашему примеру кода я сразу понял, что случай клинический, поэтому не стал на ваш пост реагировать всерьёз. Вы уж извините.

Спасибо, доктор! Как же я раньше такой больной то ходил. Попытки принижения собеседника при отсутствии аргументов - это обязательный элемент твоей вашей стратегии спора? Это - риторический вопрос. Если уж притворяешся притворяетесь умным и вежливым человеком - так притворяйся притворяйтесь до конца.

Сообщение отредактировал menzoda - Aug 14 2014, 07:20
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- toweroff   Как лучше описать регистры   Aug 8 2014, 21:43
- - AHTOXA   1. Убрать volatile (__IO) из структуры, добавить в...   Aug 8 2014, 22:38
|- - toweroff   Цитата(AHTOXA @ Aug 9 2014, 02:38) 1. Убр...   Aug 9 2014, 09:53
|- - AHTOXA   Цитата(toweroff @ Aug 9 2014, 15:53) 1. Н...   Aug 9 2014, 18:21
- - ViKo   А чем хуже, например, такой способ инициализации? ...   Aug 9 2014, 09:59
|- - Сергей Борщ   Цитата(ViKo @ Aug 9 2014, 12:59) А чем ху...   Aug 10 2014, 15:07
|- - ViKo   Цитата(Сергей Борщ @ Aug 10 2014, 18:07) ...   Aug 10 2014, 15:20
|- - AlexandrY   Цитата(ViKo @ Aug 10 2014, 18:20) А я не ...   Aug 10 2014, 18:43
|- - AHTOXA   Цитата(AlexandrY @ Aug 11 2014, 00:43) Мо...   Aug 11 2014, 06:57
|- - ViKo   Цитата(AHTOXA @ Aug 11 2014, 09:57) Вариа...   Aug 11 2014, 07:22
||- - AHTOXA   Цитата(ViKo @ Aug 11 2014, 13:22) Зачем? ...   Aug 11 2014, 07:30
|- - AlexandrY   Цитата(AHTOXA @ Aug 11 2014, 09:57) А есл...   Aug 11 2014, 10:43
|- - AHTOXA   Цитата(AlexandrY @ Aug 11 2014, 16:43) В ...   Aug 11 2014, 11:59
|- - AlexandrY   Цитата(AHTOXA @ Aug 11 2014, 14:59) Вот п...   Aug 11 2014, 12:40
|- - AHTOXA   Цитата(AlexandrY @ Aug 11 2014, 18:40) Пр...   Aug 11 2014, 14:50
|- - AlexandrY   Цитата(AHTOXA @ Aug 11 2014, 17:50) Наско...   Aug 11 2014, 17:22
|- - AHTOXA   Цитата(AlexandrY @ Aug 11 2014, 23:22) Ма...   Aug 11 2014, 18:24
|- - AlexandrY   Цитата(AHTOXA @ Aug 11 2014, 21:24) В ваш...   Aug 11 2014, 19:03
|- - AHTOXA   Цитата(AlexandrY @ Aug 12 2014, 01:03) Да...   Aug 11 2014, 21:54
|- - menzoda   Цитата(AHTOXA @ Aug 12 2014, 01:54) Пишем...   Aug 12 2014, 12:44
|- - AlexandrY   Цитата(AHTOXA @ Aug 12 2014, 00:54) Во-пе...   Aug 12 2014, 13:48
- - toweroff   Спасибо всем С volatile действительно нужно быть ...   Aug 10 2014, 19:59
- - ViKo   Преимущество умножения в том, что для группы битов...   Aug 11 2014, 05:09
- - ViKo   У меня вообще нет сдвигов. Я пользуюсь битовыми ма...   Aug 11 2014, 07:49
- - ViKo   Для menzoda - мне ваш первый пример логичнее, поня...   Aug 12 2014, 13:24
|- - adnega   Цитата(menzoda @ Aug 14 2014, 11:19) Спас...   Aug 14 2014, 07:30
- - AHTOXA   Цитата(menzoda @ Aug 12 2014, 20:57) Там ...   Aug 12 2014, 20:57
- - ViKo   Я показал лучшее решение в сообщении #4, но ...   Aug 14 2014, 07:37
- - dxp   QUOTE (ViKo @ Aug 14 2014, 14:37) Я показ...   Aug 15 2014, 05:58
- - ViKo   Цитата(dxp @ Aug 15 2014, 08:58) Чем это ...   Aug 15 2014, 22:05
- - demiurg_spb   Поддержу в этом споре Антоху. Есть системный подхо...   Aug 16 2014, 12:49


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

 


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


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