WinAvr в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: WinAvr в вопросах и ответах

Сообщение BerZerK-ku »

:))) как можно было проверить хотя бы два варианта без отсебятины, если для проверки все равно приходилось комментировать разные строки? Причем я выкладывая проект, явно просил проверить функции последовательно.
Не поверите, но программа действительно стала работать по другому. Сравните листинг. Мну писал функцию, а вы превратили ее в макрос.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

BerZerK-ku писал(а):Не поверите, но программа действительно стала работать по другому. Сравните листинг. Мну писал функцию, а вы превратили ее в макрос.

что я сделал - я знаю, однако, функцию в макрос я не переделывал :) вы сами видели по исходнику, что именно я сделал. зачем - надо объяснять?

а если ваша программа стала работать по-другому, то это проблема вашего кода :) хотя фактически она по-прежнему НЕ ДЕЛАЕТ НИЧЕГО. если честно - я удивлен, что оптимизатор вообще не выкидывает все полностью, как он это делал в самых первых примерах, где функция main вообще состояла из единственного rjmp сам на себя.
битва с дураками проиграна, победители торжествуют. слава победителям!
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

BerZerK-ku писал(а)::))) как можно было проверить хотя бы два варианта без отсебятины, если для проверки все равно приходилось комментировать разные строки?
открою страшную тайну, как это можно сделать: по листингу :))) при этом даже комментировать строки не надо, просто сравнить объем каждой функции - для ВАШЕГО примера этот метод весьма подходит.
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: WinAvr в вопросах и ответах

Сообщение BerZerK-ku »

:facepalm: что за бред? т.е. получается откомпилировали программу посмотрели размер, отписались на форуме. При этом сравнили листинг кода, увидели разницу и умолчали об этом? Или вы продолжаете утверждать что в моем примере разницы в функциях нет? А-а-а, понял, вы наверное просто подсказали ответ на вопрос, но это никак не соотноситься с действительностью?

Т.е. вы полагаете, что static функция единожды вызываемая в программе чем то отличается от макроса? Хотя тут может я и ошибся, т.к. не проверял что будет с кодом в winavr.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

BerZerK-ku писал(а)::facepalm: что за бред? т.е. получается откомпилировали программу посмотрели размер, отписались на форуме. При этом сравнили листинг кода, увидели разницу и умолчали об этом? Или вы продолжаете утверждать что в моем примере разницы в функциях нет? А-а-а, понял, вы наверное просто подсказали ответ на вопрос, но это никак не соотноситься с действительностью?

Т.е. вы полагаете, что static функция единожды вызываемая в программе чем то отличается от макроса? Хотя тут может я и ошибся, т.к. не проверял что будет с кодом в winavr.
ваши сообщения становятся похожими на бред, я перестал их понимать.

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

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

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

все неудобные для вас случаи вы игнорируете молчанием.

макрос - это элемент программы на Си, котрый обрабатывается препроцессором, т.е. "автоматическим редактором текста программы", а не компилятором. если вы не знали этого - запишите. поэтому то, что я сделал ни при каких условиях нельзя назвать переделкой функции в макрос.

кстати, если вы не знали, то я напомню еще одну разницу между макросами и функциями, пусть даже и статическими: макрос порождает вставку собственного тела в код всякий раз при его использовании в тексте программы, в то время как использовать явный вызов static-функции или применить инлайнинг вместо этого - решает компилятор сам на этапе оптимизации кода. даже inline-функции отличаются от макросов - инлайнить или нет функцию все равно вправе решать компилятор! чтобы полностью стереть разницу между макросами и функциями надо предпринимать особые меры.

делая функцию static я заранее знал реакцию КОМПИЛЯТОРА на это, и расчитывал на этот результат. где сказано, что единожды вызываемая в единственном модуле функция не имеет права быть static? я что-то нарушил, использовал какой-то хак или баг компилятора? нет, я действовал в рамках допустимого. чем же вы недовольны? тем что реальность не такова, как вы мечтаете? увы...
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: WinAvr в вопросах и ответах

Сообщение BerZerK-ku »

:dont_know: я тоже уже вас не понимаю.
Вот факты , какими их вижу я: выложил готовый пример, который надо было откомпилировать 3 раза, по разу для каждой из функций. Вы что-то проделали и написали что размер прошивки не отличается и составляет 166 байт, как и у предыдущего товарища. И мой пример БРЕД, миф развеян. Потом выложил свои результаты я. А теперь оказывается что вы откомпилировали один раз , сравнили функции по листингу программы и выдали результат: отличий нет.

К сожалению реальность такова, что глобальная и локальная функции это не одно и тоже. С тем же успехом можно было применить спецификатор inline, о котором вы упомянули. Вроде бы с виду все осталось то же, а суть то разная.
Последний раз редактировалось BerZerK-ku Пт дек 30, 2011 11:07:39, всего редактировалось 1 раз.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

BerZerK-ku писал(а)::dont_know: я тоже уже вас не понимаю.
Вот факты , какими их вижу я: выложил готовый пример, который надо было откомпилировать 3 раза, по разу для каждой из функций. Вы что-то проделали и написали что размер прошивки не отличается и составляет 166 байт, как и у предыдущего товарища. И мой пример БРЕД, миф развеян. Потом выложил свои результаты я. А теперь оказывается что вы откомпилировали один раз , сравнили функции по листингу программы и выдали результат: отличий нет.
да, тяжело с вами... придется разжевать.

1. вы дали так называемый код и долго водили муму, не предоставляя никаких результатов его компиляции.
2. я не вытерпел, взял ваш код, тупо (чтобы не дай бог не исказить ваши идеи) вставил его в редактор студии и нажал Build - результат был неутешительным.
3. я подправил минимально ваш код и снова его откомпилировал - никаких мер по оптимизации и т.п. я не делал - вы же не писали про это ничего? что было в студии по умолчанию - то и оставил. результат был предсказуем (одинаковые размеры кода и отсутствие в main чего-то реального) - я их продемонстрировал. я знал, какой будет результат при данном методе эксперимента, и на него рассчитывал. если вы бы так же знали, что будет в этом случае - вы бы уточнили условия эксперимента, не так ли? ведь ЗНАЮЩИЕ люди так по ступают? вы промолчали, дав тем самым мне право на свободные эксперименты. моя цель была подтвердить, что РЕЗУЛЬТАТ ЗАВИСИТ ОТ УСЛОВИЙ - я это и подтвердил. без обмана.
4. затем люди стали делать иначе - и нашли разницу.
5. я так же провел более чистый опыт (о котором вы вспомнили слишком поздно), получил УДОВЛЕТВОРЯЮЩИЙ ВАС результат - и тут же с ним согласился: моему-то исходному посылу он не противоречил! :)
6. но пойдя на глупый принцип, я тут же нашел способ ПО ВАШИМ ПРАВИЛАМ опровергнуть вашу же теорию - и снова привел пример, как этого можно добиться. тем самым снова подтвердив СВОЮ точку зрения: результат неоднозначен, что я и пытаюсь до вас донести с первого поста по теме структур.
7. наконец, по поводу листинга. для ВАШЕГО примера не играет никакой разницы ОБЩИЙ размер кода, а играет только размер самой функции обработки данных. если функция получается меньше - меньше будет и общий код (во всяком случае так МОЖНО ПРЕДПОЛОЖИТЬ). и покуда мы не активируем оптимизацию - так оно и есть. и для себя самого я использовал анализ листинга, чтобы понять, что к чему и в каком месте у вас есть слабое звено :) и я легко нашел ряд слабых звеньев ВАШЕГО ПРИМЕРА, которыми и воспользовался. но на форуме я приводил именно результаты, выдаваемые самим компилятором, а не свои "локальные" расчеты и домыслы.

теперь история понятно изложена? вы видите в ней что-то неправильное? уверяю вас: если вы и дальше будете продолжать настаивать, что одно только применение структур и использование для доступа к ним указателей ВСЕГДА ДАЕТ ЭКОНОМИЮ РАЗМЕРА КОДА - я найду и другие способы доказать, что НЕ ВСЕГДА. их есть у меня :)

но мне хотелось бы все-таки другого: ответа на все мои вопросы, их было немного, но конкретных...
Последний раз редактировалось Мастер Ломастер Пт дек 30, 2011 11:11:18, всего редактировалось 1 раз.
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: WinAvr в вопросах и ответах

Сообщение BerZerK-ku »

:shock: будьте добры, процитируйте мои слова , в которых я упомянул "всегда". А я то все это время думал, что пытаюсь сказать что при правильном использовании структур они дают выигрыш по сравнению с кучкой переменных.

Чей-то я вас не пойму. Вы три раза компилировали проект, надеясь что при этом изменится код? хотя как утверждаете прекрасно знаете что лишние функции останутся на месте? Вот это уже реально БРЕД.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

BerZerK-ku писал(а)::shock: будьте добры, процитируйте мои слова , в которых я упомянул "всегда". А я то все это время думал, что пытаюсь сказать что при правильном использовании структур они дают выигрыш по сравнению с кучкой переменных.
я цитировал на прошлой странице
Мастер Ломастер писал(а):
BerZerK-ku писал(а):
Мастер Ломастер писал(а):структуры не экономят абсолютно ни одного байта - это лишь способ УПОРЯДОЧИВАНИЯ ПЕРЕМЕННЫХ
Память данных нет, а вот сэкономить память программ поможет.

я говорил о памяти данных, и тут вы со мной согласились, тут же добавив УТВЕРЖДЕНИЕ ОБ ЭКОНОМИИ ПАМЯТИ ПРОГРАММ.

в ваших словах нет слов "мне кажется", "может быть", "в определенных условиях" и т.п. слов и фраз, которыми в русском языке принято подчеркивать ограниченность условий применения высказываемого. поэтому ХОТЕТЬ СКАЗАТЬ и СКАЗАТЬ - сильно разные вещи. вам, раз уж вы программист как бы, должно быть известна разница между четким и нечетким определением :)
битва с дураками проиграна, победители торжествуют. слава победителям!
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

BerZerK-ku писал(а):Чей-то я вас не пойму
видимо, не дано... :)))
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: WinAvr в вопросах и ответах

Сообщение BerZerK-ku »

"может помочь" == "всегда помогут" ? Если бы все кто мог бы мне помочь, помогали, я бы забот в жизни не знал :)))
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

BerZerK-ku писал(а):"может помочь" == "всегда помогут" ? Если бы все кто мог мне помочь, помогали, я бы забот в жизни не знал :)))
да у вас с логикой беда...

ваше высказывание: структура сэкономить память программ поможет.
аналогичное высказывание: вася мне поможет сэкономить бабки.

что означает второе высказывание? вроде как я уверен, что вася мне поможет сэкономить. только вася об этом не в курсе - но я об этом УМОЛЧАЛ. и если вы мне под это обещание даете кредит - это мне на руку. а вам - нет. но фактически я ввел вас в заблуждение НЕПОЛНЫМ ВЫСКАЗЫВАНИЕМ. правильное высказывание в этом случае: "я надеюсь, вася мне поможет сэкономить". или "если я попрошу как следует, вася мне поможет" или можно еще кучу вариантов придумать, которые не дадут вам ошибиться ОДНОЗНАЧНО, ибо будут ПОЛНЫМИ.

согласны или и тут будете спорить доусёру?
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: WinAvr в вопросах и ответах

Сообщение BerZerK-ku »

:))) ну что же продолжим спор на отвлеченные темы.
"вася мне поможет сэкономить бабки"
Если скажу это я , а я с Васей дружу, то он поможет.
А вот если вы с Васей не дружите, то вам он вряд ли поможет. Или даже так: если с Васей не дружить, то он вам точно не поможет.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

вот тут тот редкий случай, когда вы ОДНОЗНАЧНО не попали пальцем в небо :)

действительно, если то, если сё... я об этих самых НИКОМУ НЕИЗВЕСТНЫХ ЕСЛИ и говорил: вы произнесли фразу, которую без дополнительных пояснений МОЖНО ВОСПРИНЯТЬ по-разному. в частности, как ОДНОЗНАЧНОЕ УТВЕРЖДЕНИЕ. и я это оспорил (однозначность) и упешно доказал ущербность этого. ЧТО ВЫ ИМЕЛИ ВВИДУ при этом - оставалось за кадром на протяжении чуть ли не пяти страниц сообщений.

допустим, я такой вот тупенький начинающий, прочел вашу фразу и наивно подумал: вот ща наделаю структур и получу лишних кучу байтов. мог я так подумать? вы хоть чем-то намекнули, что хотя бы иногда это может иметь обратный эффект? нет. больше того: почти всеми своими примерами я вам демонстрировал, какие результаты дает САМОСТОЯТЕЛЬНОЕ ДОМЫСЛИВАНИЕ неполных высказываний - вы только возмущались :)))

вы не умеете выражать свои мысли ОДНОЗНАЧНО? если вы программист, то очевидно, работаете с fuzzy-logic-программированием , не иначе :)))
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: WinAvr в вопросах и ответах

Сообщение BerZerK-ku »

:dont_know: это ваше личное мнение, на мой взгляд я выразился достаточно четко.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

BerZerK-ku писал(а)::dont_know: это ваше личное мнение

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

может, наконец, так же четко (хотя лучше четко в моем понимании) изложите, какие у вас претензии к моей функции долгих задержек? только, пожалуйста, без голословных предъяв "сами проверьте в симуляторе" и т.п. :)
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: WinAvr в вопросах и ответах

Сообщение BerZerK-ku »

:dont_know: функция выполнят свои функции, к самому коду претензий нет ( это та которая 18 часов)
Ладно, могу согласиться что вы дали только образец, дальше думай сам. Но опять же, вспомните свой же результат переделки этой функции в микросекундные задержки по аналогии (это второй приведенный вами пример)? Вы в предыдущем случае употребили "тупенький начинающий" который по своему мог воспринять мои слова. А ваша задержка в этом отношении далеко ушла? На мой взгляд она далеко позади.
Вместо того чтобы все-таки помочь человеку и выложить рабочий код, вы выложили результаты чего-то там и на этом успокоились.

Или вы все таки утверждаете что вот это

Код: Выделить всё

// функция, способная создать задержку от 1 до 65535 микросекунд
void mega_delay(uint16_t delay_in_microseconds){
   for(; delay_in_microseconds; delay_in_microseconds--)
      _delay_us(1);
}
работает как надо?
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

BerZerK-ku писал(а)::dont_know: функция выполнят свои функции, к самому коду претензий нет ( это та которая 18 часов)
Ладно, могу согласиться что вы дали только образец, дальше думай сам. Но опять же, вспомните свой же результат переделки этой функции в микросекундные задержки по аналогии (это второй приведенный вами пример)? Вы в предыдущем случае употребили "тупенький начинающий" который по своему мог воспринять мои слова. А ваша задержка в этом отношении далеко ушла?

и чем мой "второй" пример отличался от "первого"? какой результат там был - неудовлетворительный, что ли?!

что касается "думай сам" и "тупеньких" - то у меня есть принцип: делать за кого-то его работу только за деньги. а помогать бесплатно. поэтому я почти никогда не даю примеров, которые на 100% решают чью-либо проблему, но всегда даю (во всяком случае, стараюсь) исчерпывающую информацию для самостоятельного нахождения решения.
битва с дураками проиграна, победители торжествуют. слава победителям!
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: WinAvr в вопросах и ответах

Сообщение Мастер Ломастер »

BerZerK-ku писал(а):Или вы все таки утверждаете что вот это

Код: Выделить всё

// функция, способная создать задержку от 1 до 65535 микросекунд
void mega_delay(uint16_t delay_in_microseconds){
   for(; delay_in_microseconds; delay_in_microseconds--)
      _delay_us(1);
}
работает как надо?

с одной небольшой поправкой (на сообразительность) - утверждаю :))) и даже погрешности приводил ее работы - считаете, плохие результаты? ;)
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Re: WinAvr в вопросах и ответах

Сообщение BerZerK-ku »

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

Вернуться в «AVR»