Страница 5 из 5

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Чт ноя 30, 2017 14:59:35
ARV
Zat писал(а):Мне не нужно бегать по хедерам и искать эту константу.
как бы для некоторых констант есть особое место - глобальное... для всего проекта сразу. Например, для F_CPU, DEBUG и т.п. и помещать их в заголовки не совсем логично.
mazda писал(а):принято или не принято, когда то было не принято ездить на авто, это было плохим тоном. Если нет технических ошибок и всё работает на современном ПО то какая разница что где принято
ну да, запятыми пользоваться тоже - зачем? условности какие-то - понятно же, что написано, да?

всякие дураки книжки пишут про структурирование кода, беспокоятся об изоляции модулей... в С++ и C# namespace какие-то добавили специально... MISRA какая-то придумана идиотами... а оказывается, вам и так хорошо...

ну, я рад за вас, что еще сказать.

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Чт ноя 30, 2017 15:07:28
Zat
[uquote="ARV",url="/forum/viewtopic.php?p=3246852#p3246852"]как бы для некоторых констант есть особое место - глобальное... для всего проекта сразу. Например, для F_CPU, DEBUG и т.п. и помещать их в заголовки не совсем логично.[/uquote]
Если нужны глобальные константы, то создайте const.h, определите там все что глобальное
и в нужном месте просто делайте #include "const.h". Но будет все логичнее, в одном месте, и глобально.
Куда уж проще.

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Чт ноя 30, 2017 15:13:27
mazda
видимо ARV и Ярославом это один и тот же человек который заходит под разными никами что бы потролиться

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Чт ноя 30, 2017 15:22:15
Ярослав555
[uquote="Zat",url="/forum/viewtopic.php?p=3246864#p3246864"][uquote="ARV",url="/forum/viewtopic.php?p=3246852#p3246852"]как бы для некоторых констант есть особое место - глобальное... для всего проекта сразу. Например, для F_CPU, DEBUG и т.п. и помещать их в заголовки не совсем логично.[/uquote]
Если нужны глобальные константы, то создайте const.h, определите там все что глобальное
и в нужном месте просто делайте #include "const.h". Но будет все логичнее, в одном месте, и глобально.
Куда уж проще.[/uquote]
если глобальная константа определена в свойствах проекта, а не в тексте, то ее видно без инклюда. Иногда так проще и правильнее.

Добавлено after 1 minute 10 seconds:
[uquote="mazda",url="/forum/viewtopic.php?p=3246877#p3246877"]видимо ARV и Ярославом это один и тот же человек который заходит под разными никами что бы потролиться[/uquote]
Видимо. И мировой заговор против вас. Удачи с вашей паранойей :)))

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Чт ноя 30, 2017 15:25:17
mazda
[uquote="Ярослав555",url="/forum/viewtopic.php?p=3246884#p3246884"]глобальная константа определена в свойствах проекта[/uquote]

но зачем? где тут смысл? что бы запутать компилятор или себя?

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Чт ноя 30, 2017 15:30:10
ARV
mazda писал(а):но зачем? где тут смысл?
а это зачем и где тут смысл?
mazda писал(а):всё работает на современном ПО то какая разница что где принято
вам ли смысл искать?

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Чт ноя 30, 2017 15:48:34
Ярослав555
[uquote="ARV",url="/forum/viewtopic.php?p=3246895#p3246895"]вам ли смысл искать?[/uquote]
:)))

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Чт ноя 30, 2017 15:48:50
Zat
[uquote="Ярослав555",url="/forum/viewtopic.php?p=3246884#p3246884"]если глобальная константа определена в свойствах проекта, а не в тексте, то ее видно без инклюда. Иногда так проще и правильнее.[/uquote]
Вот как раз это совсем ошибочно. Если нужно изменить размер стека, добавить какие-то библиотеки (прилинковать) или если частота
камня определяется в свойствах проекта, то возможно, тут и уместно так сделать. Но я раза 2 или 3 попадал на том, что
определив все константы (не более 1-2 шт) в проекте приходилось переносить в инклуды. Т.к. бывают случаи, при смене среды разработки
(я пишу в IAR, Keil и AVRStudio), проекты не подхватываются просто так. Нужно создать новый и добавить все файлы. Очень тяжко потом
вспоминать что же я там в свойствах проекта писал. Приходится потом отслеживать по ошибкам что глючит и прописывать опять в инклуды.
Вообщем, я два, три нет 4-й раз на грабли не хочу наступать. Все равно приду к тому же.

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Чт ноя 30, 2017 16:55:17
mazda
кажется они просто не хотят признавать свою вину

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Чт ноя 30, 2017 16:56:58
Ярослав555
[uquote="Zat",url="/forum/viewtopic.php?p=3246916#p3246916"]Т.к. бывают случаи, при смене среды разработки
(я пишу в IAR, Keil и AVRStudio), проекты не подхватываются просто так. Нужно создать новый и добавить все файлы. Очень тяжко потом
вспоминать что же я там в свойствах проекта писал. Приходится потом отслеживать по ошибкам что глючит и прописывать опять в инклуды.
Вообщем, я два, три нет 4-й раз на грабли не хочу наступать. Все равно приду к тому же.[/uquote] Я смотрю вы любите очевидные вещи писать. Ну я же написал - ИНОГДА. Иногда люди работают в одной среде, такое случается.

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Пн дек 18, 2017 23:24:49
mazda
среда не определяет способ работы а только усложняет его и делает немного удобней и всё остальное зависит от языка который может и не зависить

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Чт авг 18, 2022 18:25:44
Мокренькая кисонька
ARV, спасибо за науку! Плюсанул в карму.
Осталось разобраться насчет UL, понятно, что это unsigned long число, но как задавать его в студии?
В 4-ке это было в свойствах проекта, писалось обычным числом в герцах, например 9600000Hz.
В 7-ке (она же Микрочип Студио) чуть посложнее с этим, но результат не меняется, если писать F_CPU=9600000 или F_CPU=9600000UL.
Для начала хотелось бы понять, а какой длины это unsigned long число? Отталкиваться от каких систем? 32-х битных или 8-и битных?
Ну и второе, а надо ли оно, если среда и так все хорошо понимает?
Ну и третье, а что делать, если частота низкая, например 16кГц всего (да, такое иногда бывает)?
Все эти вопросы просто для того, чтобы делать правильно, на самом деле все корректно работает на любых частотах как без, так и L или UL.

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Чт авг 18, 2022 19:10:35
ARV
я могу ошибаться, потому как сколько бы я про Си ни узнавал, все равно оказывается, что в стандарте есть ещё нюансики, переворачивающие мои знания с ног на голову...

но по сути вопроса думаю так. само по себе чтсло-константа будет воспринято правильно, если будет само по себе - компилятор и с UL, и без поймет 9600000 так, как надо... но только до момента, когда это число попадет в выражение. результат 1+9600000 будет совсем не 9600001, как могло бы показаться... а вот 1+9600000UL даст правильный результат.

как-то так...

я могу вам дать пару советов, которые "настоящие программисты" сразу заплюют: всегда ставьте скобки в сложных выражениях, особенно в логических выражениях, на надеясь на память о приоритетах операций и всегда добавляйте UL к константам, если есть вероятность, что в выражении с их участием может получиться результат (даже промежуточный!) больше 65535. и будет вам счастье

Re: #define F_CPU _delay_us(); _delay_ms();

Добавлено: Чт авг 18, 2022 19:40:48
veso74
[uquote="Мокренькая кисонька",url="/forum/viewtopic.php?p=4274994#p4274994"]... Для начала хотелось бы понять, а какой длины это unsigned long число? Отталкиваться от каких систем? 32-х битных или 8-и битных? ...[/uquote]
Включите <stdint.h> и если удобно, используйте int8_t/uint8_t, int16_t/uint16_t, int32_t/uint32_t и т.н. - видно битность.