Комментарии - не выход. Мало того что лишние телодвижения, так и при изменении исходного кода, приходится не забывать, изменять и их. А это уже причина побочек.) Другое дело, когда код не нуждается в комментариях. Ты комментируешь только блоки.
Дай угадаю. «Ни за что Вы меня не заставите извиняться»? ))
Или что-то не особо понятное на момент написания кода. Это правильный подход (по моему скромному мнению). Комментировать всё подряд - это утопия какая-то. Которая разработчика тянет на дно ))
Да, или особенно закрученные моменты.)
да хоть словами Мишина, одно понятно, не хочешь, ибо понимаешь чем чревато.
А Вы чё, правда не знаете как узнать чему равна какая-нибудь константа, определённая хрен знает где, без
?
Ни в жисть не поверю!
Ну, мужики вы тут развели!
И чего языки протирать? Есть же
Так что, вопрос давно закрыт, ещё дидами! ![]()
Оооо. Как Вы только такое древнее находите )))) Помню помню…
Классическое и бессмертное ![]()
да нет, репликой на это скажу, видел как настоящий программист по телефону написал драйвер 10 гигабитной сетевой карты )))
Так что и среди молодых бывают настоящие программисты
RE
Джим исправил систему
по телефону, заставляя пользователя набирать на передней панели
ЭВМ команды обращения к диску, исправлять системные таблицы в
шестнадцатиричной системе и считывать ему по телефону содержи-
мое регистров.
видимо Джим, работал или проходил практику в одном из Черкесских ООО по ремонту компьютеров и периферийного компьютерного оборудования.
И единственный решил задачу про бочку, над которой лучшие умы Кавказа бились с 1860 года.
Причём - это он размер глаза показывает.
Не Петрович!
Это в ЭРА внешне всё выглядит так:
а по сути всё вот так:
Не мне вам говорить, вы же их проверяли )))
там “заслуг” не перечислить, начнешь вспоминать, забанят чего доброго)
Провидец, как в воду глядел!)))
видите “синего человечка”, бегите, а то он будет искать, куда вам вставить "свой белый ‘хвост’ ".
не знаю, как?
Как могут «запутывать» понятные именованные константы?
Так как раз с этим никто и не спорит.
Проблема в том, что (как я уже писал) TOIE1 - ни разу не понятная именованная константа.
Чтобы понять, что она означает, минимум, нужно суметь открыть дэйтишит в нужном месте. А коль скоро мы его там открыли, то дальше уже без разницы - число там или именованная константа, т.к. все и так на одной странице.
НО! все это - только с точки зрения “читателя”. А с точки зрения “писателя” все намного хуже - из-за того, что напрочь отсутствуют единые и понятные способы преобразования тех имен, которые приведены в дэйташите, в имена констант, описанных в заголовочных файлах.
Вывод: если “читателю” безразлично, а для “писателя” - сложности, так зачем оно такое нужно?
У меня лично никаких “проблем” нет с кодом и егоной отладкой
Собственно, проблема как таковая имеется только у автора 8-го поста, который не смог разобраться, что такое 0b00000100 применительно к регистру TIMSK0.
Больше ни у кого никаких проблем нет.
Но, в связи с тем, что у кого-то проблемы все-таки возникли, теперь уже у меня возник вопрос: а можно ли каким-то разумным способом подобных проблем избегать?
Пока что разумных предложений не озвучено, напротив, в ответах преобладают эмоции.
мне кажется сообщество быстрее найдет косяк и поправит в хедерах)
Вопрос не в этом.
Любому человеку, имеющему мало-мальский опыт, понятно, что прежде всего ошибки следует искать в собственном свеженаписанном коде, а не в коде, который уже давно и успешно использует масса людей.
Вопрос в том, как угадывать названия именованных констант, не прибегая к процедуре утомительного поиска по многочисленным заголовочным файлам?
Надо максимально абстрагироваться от железа, вынося во вне весь этот ввод/вывод, при возможности. Уже говорил. Тогда можешь писать и магическими числами, но использовать комментарии и условную компиляцию. В этом случае исходный текст становится и читаемым, и переносимым.
Ну то есть следующий код можно считать вполне кошерным?
#define LCD_WR 0x1000 // PB12
#define LCD_RS 0x0800 // PB11
#define LCD_CS 0x0002 // PB1
#define LCD_RESET 0x0001 // PB0
#define DATA_MASK 0x07f8 // PB3-PB10, данные передаются в разрядах: D0-PB3, D1-PB4, ... D7-PB10
#define CTRL_MASK_DEFAULT 0x1803 // все управляющие биты HIGH (WR | RS | CS | RESET)
#define CTRL_MASK_WR_RS_CS 0x0001 // маска для записи команд (RESET)
#define CTRL_MASK_WR_CS 0x0801 // маска для записи данных (RS | RESET)
#define AUDIO_INPUT PA0 // аналоговый вход
#define size 1024 // длина буфера оцифровки
...
void Lcd_Write_Com(unsigned char d) { // вывод команды: опустить CS, RS и WR, вывести байт, поднять WR
GPIOB_BASE->ODR = CTRL_MASK_WR_RS_CS | (d << 3);
GPIOB_BASE->BSRR = LCD_WR;
}
inline void Lcd_Write_Data(unsigned char d) { // вывод данных: опустить CS и WR, вывести байт, поднять WR
GPIOB_BASE->ODR = CTRL_MASK_WR_CS | (d << 3);
GPIOB_BASE->BSRR = LCD_WR;
}
...
Lcd_Write_Com(0x11);
delay(20);
Lcd_Write_Com(0xD0);
Lcd_Write_Data(0x07);
Lcd_Write_Data(0x42);
Lcd_Write_Data(0x18);
Или однократно используемые 0xD0, 0x07, 0x42… тоже следовало как-то обозвать?

