Проблема с примитивной функцией

Комментарии - не выход. Мало того что лишние телодвижения, так и при изменении исходного кода, приходится не забывать, изменять и их. А это уже причина побочек.) Другое дело, когда код не нуждается в комментариях. Ты комментируешь только блоки.

1 лайк

Дай угадаю. «Ни за что Вы меня не заставите извиняться»? ))

2 лайка

Или что-то не особо понятное на момент написания кода. Это правильный подход (по моему скромному мнению). Комментировать всё подряд - это утопия какая-то. Которая разработчика тянет на дно ))

Да, или особенно закрученные моменты.)

1 лайк

да хоть словами Мишина, одно понятно, не хочешь, ибо понимаешь чем чревато.

2 лайка

А Вы чё, правда не знаете как узнать чему равна какая-нибудь константа, определённая хрен знает где, без

?

Ни в жисть не поверю!

Ну, мужики вы тут развели!

И чего языки протирать? Есть же

Так что, вопрос давно закрыт, ещё дидами! :slight_smile:

2 лайка

Оооо. Как Вы только такое древнее находите )))) Помню помню…

Классическое и бессмертное :slight_smile:

1 лайк

да нет, репликой на это скажу, видел как настоящий программист по телефону написал драйвер 10 гигабитной сетевой карты )))
Так что и среди молодых бывают настоящие программисты

RE
Джим исправил систему
по телефону, заставляя пользователя набирать на передней панели
ЭВМ команды обращения к диску, исправлять системные таблицы в
шестнадцатиричной системе и считывать ему по телефону содержи-
мое регистров.

видимо Джим, работал или проходил практику в одном из Черкесских ООО по ремонту компьютеров и периферийного компьютерного оборудования.

:slight_smile:

3 лайка

И единственный решил задачу про бочку, над которой лучшие умы Кавказа бились с 1860 года.

1 лайк

Причём - это он размер глаза показывает.

1 лайк

Не Петрович!
Это в ЭРА внешне всё выглядит так:

а по сути всё вот так:

Не мне вам говорить, вы же их проверяли )))

там “заслуг” не перечислить, начнешь вспоминать, забанят чего доброго)

1 лайк

Провидец, как в воду глядел!)))

видите “синего человечка”, бегите, а то он будет искать, куда вам вставить "свой белый ‘хвост’ ".

не знаю, как?

Так как раз с этим никто и не спорит.
Проблема в том, что (как я уже писал) 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… тоже следовало как-то обозвать?