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

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> IAR меня игнорирует . :(, Причем , молча.... собака!
dimka76
сообщение Sep 18 2009, 10:48
Сообщение #46


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Макросы вещь небезопасная с точки зрения контроля типов, как минимум.
В С++ введены шаблоны.
Почему же никто про них не вспомнил ?


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 18 2009, 10:49
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Dog Pawlowa @ Sep 18 2009, 12:39) *
Справедливости ради ... механизм макросов позволяет назвать сразу группу бит и применить одну команду.

Возможно, что какие-то позволяют, какие-то не позволяют.... Для этого, вместо абсолютно самодостаточного однострочного выражения предлагаете вычитывать макрос on() и думать о последствиях его применения?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 18 2009, 11:26
Сообщение #48


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

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



Цитата(dimka76 @ Sep 18 2009, 16:48) *
В С++ введены шаблоны.
Почему же никто про них не вспомнил ?


Вообще-то, вспомнили smile.gif

Цитата(zltigo @ Sep 18 2009, 16:22) *
smile.gif сказал, АНТОХА и в очередной раз написал on() smile.gif

Дык, потому что zltigo написал:
Цитата(zltigo @ Sep 18 2009, 15:15) *
SPI? Их есть у нас. Вот, например:
Куда прикажете вставлять макрос для махания shipselect?

Вот я и вставилsmile.gif
Цитата(zltigo @ Sep 18 2009, 16:22) *
Нет, за рабочий код в том числе работающий с железом так, как нужно железу а не мерещится специалистам по макросам описывающим ножку.

Что рабочий - верю. Но ужасный...
Цитата
Выше просто абсолютно нерабочая отсебятина из которой выброшен почти смысл, зато, например, простые вещи типа
Код
   IO0SET = (P0B_MASK_CSEL|S0SSEL_SOFT|P0B_MX_AC); // Disable SHDSL

заменены на три
Код
  off(P0B_MASK_CSEL);
     off(S0SSEL_SOFT);
     off(P0B_MX_AC);

И в чём же её нерабочесть? Конкретно пожалуйста. За исключением P0B_MASK - я не догадался, что это два бита. Замените
off(P0B_MASK_CSEL);
на
off(M1_CSEL);
off(M0_CSEL);
. Что там ещё нерабочее?
Цитата
И после этого "Вам что, платят по количеству строчек кода, как индусам?" sad.gif . Глупо.

Ну тут просто надо было показать концепцию. В реальной системе, если это критично, я, конечно взвожу и чищу биты одновременно.
Цитата
О том, что даже эти три строчки совсем другая диаграмма и другие времена помолчим, и тот-же P0B_MASK это совсем не бит.. Но объяснять это счастливому обладателю "отвертки" желающему неприменно запихнуть ее куда попало видимо, пока? невозможно sad.gif . Может со временем и сами переболеете, как переболел этим я.

Я ими не болеюsmile.gif Я их примененяю по месту. Уже лет десять как. Не думаете же вы, что я всё пишу на on() и off()? smile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 18 2009, 11:37
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(zltigo @ Sep 18 2009, 13:49) *
Возможно, что какие-то позволяют, какие-то не позволяют.... Для этого, вместо абсолютно самодостаточного однострочного выражения предлагаете вычитывать макрос on() и думать о последствиях его применения?

Ну, над тремя-четырьмя битами в одной строчке все равно думать надо. А группу бит можно назвать по человечески один раз и больше не думать.
Я не то, что предлагаю... рассматриваю реально существующие альтернативы.

О последствиях применения макросов уже поздно думать, мой "структурированный" проект на днях ушел заказчику, сегодня досылал файлы с подобными определениями. Иначе пришлось бы отдельные документы вместо такого исходного кода:
Код
//          number                   name          name2       condition          
SENSOR( CanEmpty           ,    "Can empty"         , "AC,A2" , GetAdc(CanAdc) > se.CanEmptyLevel               )
SENSOR( NivBelowEmpty    ,    "Niv below empty" , "AC,A3" , GetAdc(NivEmptyAdc)>se.NiveauLevel              )
SENSOR( LowPower            ,    "Low power    "     , "DC,A6" , GetAdc(PowerAdc)  <  se.LowPowerLevel          )


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 18 2009, 12:11
Сообщение #50


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Dog Pawlowa @ Sep 18 2009, 13:37) *
Ну, над тремя-четырьмя битами в одной строчке все равно думать надо. А группу бит можно назвать по человечески один раз и больше не думать.

Так у меня в той строчке есть и группа бит, и обозвана прилично, только что это меняет?
Код
.....

Слишком много букофф - для создания видимости простоты понимания заказчиком, который хочет иметь иллюзии того, что способен сколь-нибудь серьезно разобраться или просто иметь кучу документов по причине того, что "так принято" - вариант совершенно изумительный (ну разве только буквы почему-то не русские smile.gif ). Но для работы sad.gif.
Лично я предпочитаю даже в таких случаях писать пояснительные записки - заодно и для себя польза - пишется и немного подчищается. В противном проект стремиться к горе хлама, хоть и "самодокументированной".
Цитата(AHTOXA @ Sep 18 2009, 13:26) *
И в чём же её нерабочесть? Конкретно пожалуйста. За исключением P0B_MASK - я не догадался, что это два бита.

Совсем другой алгоритм. Всякие махания пинами должны быть разные для разных транзакций по SPI, таймаут хитрее, процедура проверки готовности сложнее, лишние чтения SPDR (и уж тем более анализ ненужно считанного) не нужны, причем чтения должны быть ПОСЛЕ определенных ногомаханий а не просто быть, где попало. Для Вас по барабану время исполнения. Вы написали ПОЛНУЮ ЕРУНДУ не соответствующую исходному алгоритму (да от такой не потому, что я его сдуру написал, а по той причине, что на встречной стороне AVR с софтовым, блин, SPI от стороннего производителя ) и если действительно этого не видите и "Уже лет десять как", то дела плохи sad.gif. Я думал студент какой sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 18 2009, 12:16
Сообщение #51


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(zltigo @ Sep 18 2009, 15:11) *
В противном проект стремится к горе хлама

Да сам боюсь sad.gif Посмотрим ...


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 18 2009, 16:24
Сообщение #52


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

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



Цитата(zltigo @ Sep 18 2009, 18:11) *
Совсем другой алгоритм. Всякие махания пинами должны быть разные для разных транзакций по SPI,

Ну есть немножко. В вашем коде сам чёрт ногу сломит, вот и проглядел, что там ещё байт адреса ножкой выбирается и результат в первый раз не считываетсяsmile.gif
Остальное мелочи, работать будет. Ещё раз повторюсь - я лишь иллюстрировал концепцию.
Цитата
Я думал студент какой sad.gif

Ой да ладно. Если судить по юношескому максимализму и желанию доказывать, что его мнение единственно верное, то студент из нас двоих - однозначно не я.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
dxp
сообщение Sep 19 2009, 08:35
Сообщение #53


Adept
******

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



Цитата(MrYuran @ Sep 18 2009, 11:54) *
Для наглядности, я тоже так всегда делаю.

"Это короче, чем я могу написать, а компилятор должен понимать умолчания" (с) Б.Страуструп.

Цитата(zltigo @ Sep 18 2009, 14:27) *
Банальная наглядность - уточнение с долей привычки. Абсолютно безобидная привычка.

Обидного в такой привычки и правда нет. smile.gif

А когда заводите просто глобальные/статические переменные:

int a;
int b;

int main()
{
...
return 0;
}

тоже инициализируете:

int a = 0;
int b = 0;

?

Или нет?

smile.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 19 2009, 08:56
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(dxp @ Sep 19 2009, 10:35) *
Или нет?

Разумеется нет, ибо такую привычку совсем безобидной уже назвать не могу, ибо в общем случае не знаю, как компилятор будет их инициализировать. Может туповато будет инициализировать из ROM.
Хотя в отдельных случаях - бывает пишу инициализацию, например, тем-же самым нулевым enum - ну что-то типа комментария о начальном состоянии.
А с enum никаких побочных эффектов быть не может. И тут накладывается еще одна привычка - начинающиеся с нуля я стараюсь не использовать, там, где это возможно.
Да и если с '0', то часто пишу такие с 'дырками'. Тоже, считайте, привычка иногда помогающая быстрее в каом-нибудь дампе разобраться.
Код
    
typedef enum {
    S_MODE_LOGO = 0x00,
    S_MODE_MAIN,
    S_MODE_BOOK,
    S_MODE_LIST,
    S_MODE_DIAL,
    S_MODE_MENU,

    S_STATE_IDLE = 0x10,
    S_STATE_OFFHOOK,
    S_STATE_SPEAKER,

    S_SHOW_RINGING = 0x20,
    S_SHOW_NO_RINGING,

    S_RING_ENABLE = 0x50,
.......

И явный ноль при этом смотрится в одном стиле.
Посему мною уже на автомате пишутся enum начинающиеся с инициализации.
Цитата(dxp @ Sep 19 2009, 10:35) *
(с) Б.Страуструп.

Не знаю, как там исходники Страуструпа smile.gif smile.gif smile.gif а мои исходники не только компиляторы, но и люди читаютsmile.gif

P.S.
А в чем проблема-то?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dxp
сообщение Sep 19 2009, 12:35
Сообщение #55


Adept
******

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



Цитата(zltigo @ Sep 19 2009, 15:56) *
P.S.
А в чем проблема-то?

Да, нету проблемы. smile.gif Просто явно лишняя писанина, вот и поинтересовался, в чем может быть смысл. Оказалось, в личных эстетических предпочтениях. Вопросов больше не имею.

Цитата(zltigo @ Sep 19 2009, 15:56) *
Не знаю, как там исходники Страуструпа smile.gif smile.gif smile.gif а мои исходники не только компиляторы, но и люди читаютsmile.gif

P.S. Люди тоже должны знать правила языка и понимать умолчания. smile.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

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

 


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


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