|
|
  |
IAR меня игнорирует . :(, Причем , молча.... собака! |
|
|
|
Sep 18 2009, 11:26
|

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

|
Цитата(dimka76 @ Sep 18 2009, 16:48)  В С++ введены шаблоны. Почему же никто про них не вспомнил ? Вообще-то, вспомнили Цитата(zltigo @ Sep 18 2009, 16:22)   сказал, АНТОХА и в очередной раз написал on()  Дык, потому что zltigo написал: Цитата(zltigo @ Sep 18 2009, 15:15)  SPI? Их есть у нас. Вот, например: Куда прикажете вставлять макрос для махания shipselect? Вот я и вставил Цитата(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); . Что там ещё нерабочее? Цитата И после этого "Вам что, платят по количеству строчек кода, как индусам?"  . Глупо. Ну тут просто надо было показать концепцию. В реальной системе, если это критично, я, конечно взвожу и чищу биты одновременно. Цитата О том, что даже эти три строчки совсем другая диаграмма и другие времена помолчим, и тот-же P0B_MASK это совсем не бит.. Но объяснять это счастливому обладателю "отвертки" желающему неприменно запихнуть ее куда попало видимо, пока? невозможно  . Может со временем и сами переболеете, как переболел этим я. Я ими не болею  Я их примененяю по месту. Уже лет десять как. Не думаете же вы, что я всё пишу на on() и off()?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 18 2009, 11:37
|
Гуру
     
Группа: Свой
Сообщений: 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 )
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Sep 18 2009, 12:11
|

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

|
Цитата(Dog Pawlowa @ Sep 18 2009, 13:37)  Ну, над тремя-четырьмя битами в одной строчке все равно думать надо. А группу бит можно назвать по человечески один раз и больше не думать. Так у меня в той строчке есть и группа бит, и обозвана прилично, только что это меняет? Код ..... Слишком много букофф - для создания видимости простоты понимания заказчиком, который хочет иметь иллюзии того, что способен сколь-нибудь серьезно разобраться или просто иметь кучу документов по причине того, что "так принято" - вариант совершенно изумительный (ну разве только буквы почему-то не русские  ). Но для работы  . Лично я предпочитаю даже в таких случаях писать пояснительные записки - заодно и для себя польза - пишется и немного подчищается. В противном проект стремиться к горе хлама, хоть и "самодокументированной". Цитата(AHTOXA @ Sep 18 2009, 13:26)  И в чём же её нерабочесть? Конкретно пожалуйста. За исключением P0B_MASK - я не догадался, что это два бита. Совсем другой алгоритм. Всякие махания пинами должны быть разные для разных транзакций по SPI, таймаут хитрее, процедура проверки готовности сложнее, лишние чтения SPDR (и уж тем более анализ ненужно считанного) не нужны, причем чтения должны быть ПОСЛЕ определенных ногомаханий а не просто быть, где попало. Для Вас по барабану время исполнения. Вы написали ПОЛНУЮ ЕРУНДУ не соответствующую исходному алгоритму (да от такой не потому, что я его сдуру написал, а по той причине, что на встречной стороне AVR с софтовым, блин, SPI от стороннего производителя ) и если действительно этого не видите и "Уже лет десять как", то дела плохи  . Я думал студент какой
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 18 2009, 16:24
|

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

|
Цитата(zltigo @ Sep 18 2009, 18:11)  Совсем другой алгоритм. Всякие махания пинами должны быть разные для разных транзакций по SPI, Ну есть немножко. В вашем коде сам чёрт ногу сломит, вот и проглядел, что там ещё байт адреса ножкой выбирается и результат в первый раз не считывается  Остальное мелочи, работать будет. Ещё раз повторюсь - я лишь иллюстрировал концепцию. Цитата Я думал студент какой  Ой да ладно. Если судить по юношескому максимализму и желанию доказывать, что его мнение единственно верное, то студент из нас двоих - однозначно не я.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 19 2009, 08:35
|

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

|
Цитата(MrYuran @ Sep 18 2009, 11:54)  Для наглядности, я тоже так всегда делаю. "Это короче, чем я могу написать, а компилятор должен понимать умолчания" (с) Б.Страуструп. Цитата(zltigo @ Sep 18 2009, 14:27)  Банальная наглядность - уточнение с долей привычки. Абсолютно безобидная привычка. Обидного в такой привычки и правда нет. А когда заводите просто глобальные/статические переменные: int a; int b; int main() { ... return 0; } тоже инициализируете: int a = 0; int b = 0; ? Или нет?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Sep 19 2009, 08:56
|

Гуру
     
Группа: Свой
Сообщений: 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)  (с) Б.Страуструп. Не знаю, как там исходники Страуструпа  а мои исходники не только компиляторы, но и люди читают  P.S. А в чем проблема-то?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|