BCluster писал(а):aam, вы в курсе как работают static-переменные внутри функций?
Ну они типа такие же как и глобальные (там же размещаются, также инициализируются нулем по умолчанию) с той разницей, что видны только внутри функции. Так?
А еще щас припоминаю, говорили вроде они немного код раздувают по сравнению с глобальными? Хотя может путаю чего...
Но вообще, из 32 ног проца юзать 10 - это как?) Мне кажется, что жирно.
aam писал(а):Но вообще, из 32 ног проца юзать 10 - это как?) Мне кажется, что жирно.
Ничего страшного в этом не вижу.
Даже допустим, вы всеми оптимизициями и костылями добились что оно влезло в МК. А потом что? Какое-то мелкое изменение и все, уже 100% не влезете. Поэтому рекомендуется оставлять запас по ресурсам ок. 30% в лучшем случае.
Нет какого-то самого_лучшего_метода. Все определяется опытом и чувством меры.
Нужна глобальная переменная? Чувствуете, что без нее будет запутанно / слишком неэффективно? Введите ее.
Хотите завести глобальную переменную, но чувствуете, что логичнее будет завернуть ее в метод? Сделайте переменную локальной, а доступ к ней через метод.
Очень хочется / нужно ООП? Пишите классы.
Нужна ассемблерная вставка? Сделайте ее.
Реальный код это всегда баланс между человекочитаемостью, скоростью выполнения и размером.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Избегать глобальных переменных - это общая рекомендация. Микроконтроллеры - немного другой случай, и эту рекомендацию не стоит воспринимать как непреложное правило. Если получается без глобальных переменных - хорошо, если же без них сильно разрастается код и не хватает flash для кучи мелких функций set/get - можно и глобальную переменную завести.
Вопрос вообще начинался с того, как глобальные #define определять. Я уже выше писал - их передать можно препроцессору в командной строке, это, например, характерно для F_CPU (-DF_CPU). Ну или в "свойствах проекта" или как там это называется в разных IDE.
ploop писал(а):Возьмите тини85. 8 ног, а начинка как у меги.
Хотел взять Тини84. Но у них цена как у Мега32 И есть не в любом магазине. Вопрос - нфига? Меня это удивило, и решил посмотреть цену у производителя. Но так и не нашел.
ATmega8A в TQFP-32 я купил по 40 руб./шт в розницу. Пока не включал, но на вид настоящиие. Да и в ленте упакованы. ATTINY2313A-SU там же стоит 30 руб., 4313 - по 56 руб, т. е. дороже Меги8. А вот ATtiny84-20SSU начинается от 116 руб! Вопрос - это потому что их никто не привык брать или это по жизни так? Если по жизни так, то нахрена они вообще нужны?
Кстати, ATtiny85-20SU дороже меги8 - 54 руб. Но она и по ногам не совсем проходит.
aam, не переживайте так по поводу неиспользованных ног. В конце концов, в любом реальном применении часть возможностей МК останется незадействованной (и часть ног в том числе) - это плата за универсальность/унифицированность самих МК.
Виртуозное впихивание прошивки/функционала в кристалл по большей части полезно для саморазвития. В реальных применениях, как уже сказали, полезно оставлять хотя бы 30% на будущее.
Например, неиспользуемые ноги я, если позволяет место на плате, развожу на разъем. Вдруг пригодится? Ну а свободная память точно пригодится при доводке функционала.
Так что везде имеет место компромисс. На одном полюсе располагаются такие виртуозы, как Linus Akesson, на другом - дилетанты с Ардуино, на третьем - ревнители стандартов, инкапсуляции и прочих умных слов. Реальное решение всегда лежит где-то между этими полюсами. Тяготение к конкретному методу определяется задачей.
Собственно, искусство инженера и состоит в том, чтобы сделать правильный выбор среди инструментов, методов и решений.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
YS писал(а):не переживайте так по поводу неиспользованных ног
Да я и не переживаю. Я просто вникаю как надо и как не надо А целей несколько - и саморазвитие и реальное изделие. Не вижу смысла развиваться на чем-то абстрактном, поэтому всегда если дома что-то паяю, то делаю только полезные для дома девайсы и никогда не понимаю мазохистов, паяющих Спектрумы на современной базе. Ну а в конечном итоге получается хорошее повышение квалификации и применение полученных знаний уже на работе, что прямо отражается на ЗП))
Почему спросил про ноги - просто подсознательно было сомнение, что так правильно. В итоге пока остановился на Меге8, а тини84 хоть и валяется где-то, но если потом статью писать - народ в Хацапетовке не поймет
Ардуино не признаю впринципе и считаю, что это занятие для программистов-теоретиков, но никак не для инженера-электронщика. Ну по крайней мере в тех задачах, которые решал и решаю.
Эх, когда-то я был молодой и горячий, признавал только ассемблер и AVR... С тех пор прошло много времени.
Теперь пришел, во-первых, здоровый пофигизм (заказчик хочет на Arduino? Мне не жалко...), а, во-вторых, понимание, что в мире нет единственно правильного пути.
Касаемо Arduino - человеку, всерьез увлекающемуся электроникой с прицелом на профессонализм там и правда делать нечего. Ну, разве только продавать свои решения на сложившемся рынке.
Ардуино как идеология это кормушка для производителей - лояльная аудитория покупателей, которая никуда не убежит, потому что нормально разрабатывать свои устройства не умеет и при культивируемом там подходе никогда не научится, а будет вечно покупать то, что предлагают, по заявленной цене.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
aam писал(а):Но либо я чего-то не понял, либо кодить не умею, но простейшая девайсина с пультом от телека и БЕЗ знаковых/сегментных индикаторов у меня в Тиню2313 не лезет.
Навреное и первое и второе ..... потому как должно было легко влезть.....
Библиотеки какие нибудь сторонние используете?
aam писал(а):И вот если в пределах одного файла, скажем, основной программы, как без глобальных переменных я обойдусь? Ведь разные функции используют общие для всей программы переменные. Т. е. все равно от глобальных переменных никуда не деться.
Естественно...
В той программе которую я привел в пример выше, в главном файле были 4 глобальные переменные. (НО они напрямую использовались только функциями главного файла, и не в коем случае не упоминались в других модулях, которые по сути не должны ничего знать о том что происходит вне пространства самого модуля.....)
aam писал(а):Хотел взять Тини84. Но у них цена как у Мега32 И есть не в любом магазине. Вопрос - нфига?
Воооо.... прозрел наконец...
aam писал(а):никогда не понимаю мазохистов, паяющих Спектрумы на современной базе.
Вообще то это тоже для повышения квалификации.....
Вот например такой случай
Библиотеки сам писал, причем "по всем правилам", т. е. контроль всех длительностей импульсов от пульта, ошибок и т. п., возможность обработки длительного удержания и отпускания кнопки. Пульт RC-5. Вес библиотеки - около 455 байт получился. Еще библиотека, которая пикает пикалкой с генератором (грубо говоря на ногу 0/1 выдает). 130 байт вышло. Может выдавать 1 писк или несколько с заданой длительностью и паузой. Ну и полезная часть - обработчики кнопок и т. п.
shads писал(а):Вообще то это тоже для повышения квалификации.....
Вот например такой случай
Это понятно, квалификация несомненно повысится, но мне как-то не греет душу паять чего-то "в ящик", когда полно пожеланий с практически полезной тематикой. Так что на спектрум я бы никогда в жизни не стал время убивать - все равно что в "стрелялки" рубаться по нескольку часов. Тем более что времени нет совсем - вот эту девайсину год уже мучаю, хотя там делать нечего.
YS писал(а): скажу честно, я тоже не совсем понимаю людей со спектрумами.
Для того что бы понять надо было в свое время иметь Спектрум . Или собрать его самому .
А aam скажу, перед тем как срать на других , оглядись вокруг - многие считают DIY фанатов так же не от мира сего.
Кто то так же и тебе может заявить - зачем делать DIY фентифлюшки , если их в большинстве своем проще купить?
К тому же хобби не всегда и рационально и материально окупаемо , кроме бабла еще и душа есть !
Для того что бы понять надо было в свое время иметь Спектрум .
Я догадываюсь. Просто в "то время" (восьмидесятые) меня еще на свете не было, потому иметь Спектрум я никак не мог. Так что и ностальгии по нему у меня нету. Но, в общем, это интересный исторический комп.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
dosikus писал(а):Кто то так же и тебе может заявить - зачем делать DIY фентифлюшки , если их в большинстве своем проще купить?
Цена/качество?
Можно купить за 200 рэ китайский RGB-контроллер с пультом, но буду иметь лишь то, что накодили китайцы, да еще 100-герцовое мерцание от ШИМа.
А сам я сделаю себе то что захочу, да еще с возможностью перепрошить/добавить при желании. И мерцания не будет совсем, т. к. запитаю ленту постоянным током. Ну и надежность? Ведь делаю "по ракетным технологиям"
Так что цена деталей та же (я считал), но плюсы очевидны. Да и полученные знания нигде не купишь. А это самое главное. Конечно паять что-то одно - не интересно. Так, раньше я пробовал паять обычный обратноход, но теперь они меня уже абсолютно не втыкают, а вот более сложный регулируемый и мощный БП паять интересно.
Также и с процами - когда-то вставляло от часов...
YS писал(а):Просто в "то время" (восьмидесятые) меня еще на свете не было, потому иметь Спектрум я никак не мог
Время не помеха. Мой первый комп появился у меня в 98м, и это был спектрум
В 2002м я устроился на работу, и с первых двух зарплат купил себе настоящий PC. От разрыва шаблона (да-да, я их "взрослых" только издалека видел) от такой вычислительной дури завязал с электроникой на несколько лет, вдарившись в программирование
aam писал(а):Так что цена деталей та же (я считал), но плюсы очевидны. Да и полученные знания нигде не купишь. А это самое главное.
И удовольствие.
Но одно помнить надо: покупная вещь всегда дешевле, чем самодельная, с теми же характеристиками.