Споры о подходах к программированию МК, ASM vs C, и не только |
Здравствуйте, гость ( Вход | Регистрация )
Споры о подходах к программированию МК, ASM vs C, и не только |
24.7.2010, 14:39
Сообщение
#1
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
По просьбам трудящихся отделил кусок от темы.
Обсуждение технических аспектов предлагаю продолжить здесь. С уважением, MrYuran Привет! ... А почему Вы вдруг за AVR взялись? Совершенно "левый" МК... Все, с чем приходилось сталкиваться из выполненного на нем, глючит не по детски. Давеча вот, чиллер (это такой кондиционер на 300 кВт) на куче мелких AVR сказал, что у него связь потеряна... И это он делает периодически... С момента его покупки родным предприятием. Ну, и трудности с доставанием тех же AVR... Лучше уж PIC24 или dsPIC33. По крайней мере там все проще и Вам привычней - тот же MPLAB, да и ассемблер поприличнее. Впрочем, воля Ваша... Что же касается существа дела, то совет про С, ПМСМ, верный. Другое дело - форма высказывания в виде наставлений от "старшего брата"... В догонку. Вот еще тема с электроникса. Кто что скажет? Сообщение отредактировал MrYuran - 29.7.2010, 10:41 |
|
|
24.7.2010, 15:15
Сообщение
#2
|
|
стажер Группа: Пользователи Сообщений: 871 Регистрация: 28.11.2009 Пользователь №: 36 |
Цитата А почему Вы вдруг за AVR взялись? Совершенно "левый" МК... Все, с чем приходилось сталкиваться из выполненного на нем, глючит не по детски. ..Так я бы и не брался.. Не нравятся они, и то, что успел узнать, не внушает.. ..Попросил заказчик один, старый знакомый и деньги хорошие платит.. Я ему раньше делал на PIC-ах, а кто-то ему насоветовал, что AVR дешевле и пинов (выходов) у них больше.. Отговорить не получилось. ..Думаю, ну, хрен с ним, заодно, свою базу знаний расширю.. |
|
|
24.7.2010, 15:29
Сообщение
#3
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
..Так я бы и не брался.. Не нравятся они, и то, что успел знать, не внушает.. Так, от то ж... ..Попросил заказчик один, старый знакомый и деньги хрошие платит.. Я ему раньше делал на PIC-ах, а кто-то ему насоветовал, что AVR дешевле и пинов (выходов) у них больше.. Отговорить не получилось. Думаю, ну, хрен с ним, заодно, свою базу знаний расширю.. Дык, предупредите товарища. А то попадет в беду с этим ATMEL-ом. Там трудности нешуточные с поставками. И цены уже не низкие. Вот, почитайте. А PIC24 - это сочетание систем команд PIC16, PIC18 с PDP11. Не Ассемблер, а песня. Ширина данных - 16 бит. Векторная система прерываний с приоритетами. И цена низкая. |
|
|
24.7.2010, 16:05
Сообщение
#4
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
Если бы не надо было сейчас в техсупермаркет за соковыжималкой, начал бы всякие деривативы 51 пиарить, их есть, которых подешевле пиков и AVR при сопоставимых возможностях.
|
|
|
24.7.2010, 16:28
Сообщение
#5
|
|
стажер Группа: Пользователи Сообщений: 871 Регистрация: 28.11.2009 Пользователь №: 36 |
Цитата Вот, почитайте. ..Так я видел.. Почему и написал, что бан на месяц.. А вы как это нашли, вы же не заблокированы.. ..Мне в PIC-ах симпатична логичность. Тридцать команд (примерно) - это как тридцать букв в алфавите. А когда букв 130.. ..и большая часть из них, собственно, одно и то же.. Хочется спросить авторов: ну, на хрена вот это.. ..Одна часть команд работает только с одними регистрами, другая - только с другими. Карту придется рисовать (что ли) на листе ватмана, где будет указана память и что с чем может работать.. |
|
|
24.7.2010, 17:27
Сообщение
#6
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Связь - это руки, а не МК. Хотя, если шнурок на прямую к МК подключен, то уже не руки, а голова, скорее. Что, у всех пользователей AVR? И во всех странах сразу? Чиллер - американский. Значит пользуется огромным спросом на оптовых продажах, и на розницу уже не хватает. Вы не внимательно прочли флуд по ссылке. Там речь шла как раз об оптовых закупках. Достать несколько штук - не вопрос. А вот количество, да по приемлемой цене... ..Мне в PIC-ах симпатична логичность. Тридцать команд (примерно) - это как тридцать букв в алфавите. А когда букв 130.. ..и большая часть из них, собственно, одно и то же.. Хочется спросить авторов: ну, на хрена вот это.. Вы не поверите, авторы AVR - это два студента из Скандинавии. А система команд типа LOAD - STORE мне не нравилась еще в I8080. По командам, AVR ближе всего к 51-м. Это развитие этой системы команд. ..Одна часть команд работает только с одними регистрами, другая - только с другими. Карту придется рисовать (что ли) на листе ватмана, где будет указана память и что с чем может работать.. А что Вы хотите от наспех сделанного курсового проекта? |
|
|
24.7.2010, 17:45
Сообщение
#7
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
В общем да, смотрите в корень - авр - народный проц, гораздо более удобный простой и понятный, на нем лабают чайники всех стран - новое поколение уже выросло и дало "плоды". А старое, которое было еще гораздо более профи, писало и выросло на пиках. Так что дело не МК vs МК, а в разработчик vs разработчик. Я и смотрю на мучения уважаемого Wise. Вроде бы не чайник. А кроме ругани в адрес AVR при вынужденном переходе, пока ничего от него не слышно. Я-то, к примеру, представляю себе, откуда растут ноги. При проектировании ядра кто-то зажал ширину адреса внешних устройств. Зачем их было вводить, как отдельную сущность, вообще непонятно. Если только не предположить, что студенты брали за основу MSC51 и динамическую память в качестве RAM. Как, собственно, там и было в самом начале. Вообще не читал. Подозреваю, дело в том, что про разный опт речь. А высокие цены, хотя бы на m128 уже года 2 минимум. Так что не удивляет. А зря - поучительного там достаточно много... Народ толпой переходит на ARM-ы. Наступивши на одни грабли все быстро ищут другие, с более увесистой рукояткой. |
|
|
24.7.2010, 19:38
Сообщение
#8
|
|
стажер Группа: Пользователи Сообщений: 871 Регистрация: 28.11.2009 Пользователь №: 36 |
..Пользователь один, в той теме про компаратор, сообщил мне, что на Си я буду думать про алгоритм, а в ассемблере – только про то, как правильно написать команды.
..Чушь полная.. Даже для AVR, думаю, что приноровлюсь, в итоге. А уж для PIC-ов.. Там, я давно не думаю о командах, это происходит автоматически, как при игре, например, в настольный теннис, рука сама поворачивает ракетку, чтобы правильно принять крутящийся в нескольких плоскостях шарик, а голова занята просчетом игры на несколько ходов вперед. ..Собственно, даже не делал библиотеку подпрограмм. У меня есть некоторая куча проектов, я знаю, примерно, где что лежит, и из таких готовых модулей компилирую новую программу. Присоединить пару файлов к проекту не проблема. ..Алгоритмы даже не главное. Большой круг и все мелкие подциклы, обычно, понятны сразу. Интересна оптимизация, то есть, так написать, чтобы выбросить/сократить строчку уже было нельзя. ..Поэтому, Си, как способ мышления, мне не интересен, в применении к программированию МК. С ним ли, без него, я размышляю о сути действий МК в смысле оптимального решения задачи. Но, ассемблер дает мне возможность сделать «конфетку», а что толку от Си – это набор шаблонов, которые не могу поменять и которые часто громоздки в конкретном случае. ..Однако, все поучают и поучают меня товарищи (о великой пользе Си), для которых алгоритм программы нарисовать на бумажке уже есть громадное достижение.. |
|
|
24.7.2010, 19:50
Сообщение
#9
|
|
Активный участник Группа: Пользователи Сообщений: 7045 Регистрация: 22.11.2009 Из: Уфа Пользователь №: 18 |
как- то в молодости мне пришлось написать программку для 580-го вообще без трансляторов/компиляторов. Т.е. мнемокод я вручную перекодировал в 16- ричный. Где- то к-байт в целом. Просто потому, что у нас такая система была на работе, без диска совсем. С перфолент все вводилось. Дешевле было вручную сделать. Ничего, как ни странно, не очень долго с отладекой трахался. Мой приятель так же написал монитор для маленького самодельного контроллера на том же 580-м с клавиатуркой и люминесцентным 7- сегментным дисплеем.
Так, может, в Латвии оно, развитие, как-то по-другому происходило? не, просто он упрямый |
|
|
24.7.2010, 19:56
Сообщение
#10
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
|
|
|
24.7.2010, 20:05
Сообщение
#11
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
..Пользователь один, в той теме про компаратор, сообщил мне, что на Си я буду думать про алгоритм, а в ассемблере – только про то, как правильно написать команды. Причина перехода на С не в этом. Сами понимаете, что выучить систему команд за месяц можно в совершенстве. Так, чтобы потом о ней не думать. По утверждению апологетов С, причин здесь несколько: 1. Меньшие временные затраты на само программирование. Сам сталкивался с этим, когда делал терморегулятор на PIC18 с плавающей арифметикой. 2. Переносимость основных алгоритмов между платформами. 3. Возможность работы с Вашей программой другому индивидууму с минимальными затратами. 4. Возможность работы над проектом в составе коллектива программистов. Лично для меня самый важный пункт - первый. Все остальное, ПМСМ, значения не имеет. |
|
|
24.7.2010, 20:17
Сообщение
#12
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
Да тут я был бы апологетом по всем пунктам, и ещё по нескольким.
Но, когда сверху спускают аж два МК на выбор... и тот, у которого вчетверо меньше памяти, на 5 центов дешевле, и архитектура с юности знакомая... в общем, ASM forever, дабы впихнуть невпихуемое. И, блин, получается же! Недавно делал обратный изврат - в контроллере о 64 К флэши занято аж полтора, причём писалось на Си и ни о каких оптимизациях не приходилось заикаться. Ну не нашлось ничего дешевле и меньше, да чтобы о двух уартах. В принципе, можно было на Tiny2313 сгородить (один из уартов симплексный - RS-485), но он в ту же цену, что та 64-килобайтная зверюга, а мороки больше. |
|
|
24.7.2010, 20:31
Сообщение
#13
|
|
стажер Группа: Пользователи Сообщений: 871 Регистрация: 28.11.2009 Пользователь №: 36 |
Цитата Причина перехода на С не в этом. ..По утверждению апологетов С, причин здесь несколько: ..Возможно. Я-то один работаю, с давних пор, ну и подход, наверное, специфичный. Поэтому, большинство перечисленных пунктов меня мало трогает. А "меньшие временные затраты" - это спорно. ..К тому же, вот, написали вы один раз эту арифметику - ну и все, в другой раз время на именно это будет стремиться к нулю.. |
|
|
24.7.2010, 20:48
Сообщение
#14
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
..Возможно. Я-то один работаю, с давних пор, ну и подход, наверное, специфичный. Поэтому, большинство перечисленных пунктов меня мало трогают. А "меньшие временные затраты" - это спорно. ..К тому же, вот, написали вы один раз эту арифметику - ну и все, в другой раз время на именно это будет стремиться к нулю.. Вот тут, Вы, пожалуй, правы. Когда один, тогда все прелести С нивелируются, кроме пункта 1. Недавний пример - управлялка для многофазной дуговой установки. В центре PIC24FJ128GA108. Функции: 1. Опрос порядка 100 входов. 2. Индикация состояния каждой из ячеек - авария, перегрев, неполадки с питанием, все это с помигушками. 3. Трехсимвольный семисегментный индикатор. 4. ЧМИ в виде кнопок + и -. 5. Индикация общего состояния девайса, коротыш, готовность и прочее. 6. Система управления током нагрузки. 7. Управление вспомогательными девайсами. 8. Связь с внешним миром - MODBUS/ASCII. Время исполнения -3 полурабочих дня, где-то около 12 часов. Вместе с отладкой связи с внешним компьютером. Все на С и C++, включая отладочний софт для ПК в виде простейшей программулины на C++Builder-е. Так вот, к своему стыду признаюсь, что из-за спешки на ассемблере изобразил только конфигурирование внешних выводов. Хотя, у PIC24 ассемблер гораздо приятнее, чем у PIC18, скажем. |
|
|
24.7.2010, 22:11
Сообщение
#15
|
|
посіпака Хунти Группа: Мод Сообщений: 20016 Регистрация: 21.11.2009 Из: Vinnitsa Пользователь №: 11 |
Уяссе. Сколько ж вы зарабатываете за месяц ? Нечто о пяти зеленых нулях ? Так, наверное же, указано реально затраченное время... Помнится, году так в 2006 дописывал один эфирный протокольчик. Затратил где-то 16 часов на протяжении 2 месяцев. В порядке хобби. Тут вот даже три ноля ненаших нечасто получаются. "А жить-то надо, надо жить красиво..." - помните? |
|
|
24.7.2010, 22:23
Сообщение
#16
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Уяссе. Сколько ж вы зарабатываете за месяц ? Нечто о пяти зеленых нулях ? Вы слишком хорошего мнения обо мне. А домашние заготовки, о которых здесь уже говорилось? Все по отдельности уже было ранее, правда, на 18-х PIC-ах. Просто собрал все в кучу на несколько иной платформе. С С-ями этот процесс значительно ускоряется. А про 5 зеленых нулей... Хотелось бы, но кто их даст? Тут хотя бы четыре наших нуля. А первая значащая цифра от трех до пяти... А вообще - оплата труда в нашей профессии - отдельная тема для разговора. Предлагаю открыть и поговорить на нее. |
|
|
Гость_MrYuran_* |
25.7.2010, 18:07
Сообщение
#17
|
Гости |
Интересна оптимизация, то есть, так написать, чтобы выбросить/сократить строчку уже было нельзя. А смысл? Главное - не в алгоритмах или командах. Главное - чтобы полученный исходник не был привязян к железу. Если бы и был - то по минимуму и в строго оговоренных местах. Например, в файлах типа hardware.h, lo_level.h или hal.h Я уже не позволяю себе в тексте такие вольности, как P1OUT |= 0x40; или даже LIGHTS_PORT |= HEATER_LIGHT_PIN; а пишу так: SetLight(HEATER_LIGHT,LIGHT_ON); Теперь мне без разницы (в основном приложении), как называются регистры, каким уровнем включается светодиод (высоким или низким) - это всё описано один раз в специально отведённом месте. Возможно, моё мнение сформировано под влиянием специфики - крупносерийный выпуск разных изделий на сходной программно - аппаратной платформе А уйти-то, я, конечно, уйду, из такой странной игры.. А игра порстая- ЖЫЗНЬ Есть правила, гласные и негласные, есть те, кто при исполнении, есть понятие целесообразности... Форум - это просто некая проекция общества, со всеми вытекающими |
|
|
Гость_MrYuran_* |
25.7.2010, 18:43
Сообщение
#18
|
Гости |
..Поэтому, когда схема построена так, что ни один элемент отбросить нельзя, когда из литературного текста или текста программы, не выбросить строчку, я вижу в этом гармонию и красоту.. ..Какой в этом смысл - ответить затрудняюсь. Когда начальник в очередной раз подходит ко мне и интересуется, как дела (в смысле, когда ж, наконец, будет готово), а я в ответ говорю, что старая программа вызывает во мне когнитивный диссонанс, и я решил переписать её заново, вместо того чтобы поправить десяток строчек, он смотрит на меня как-то странно... Что он при этом думает, даже не представляю. |
|
|
25.7.2010, 18:59
Сообщение
#19
|
|
стажер Группа: Пользователи Сообщений: 871 Регистрация: 28.11.2009 Пользователь №: 36 |
Цитата Когда начальник в очередной раз подходит ко мне ..Возможно, мне повезло больше, у меня начальников нет. Есть только обязательства. Поэтому, позволяю себе роскошь, делать свою работу хорошо, так, как понимаю это "хорошо". ..Такой вариант, кстати, когда-то выбрал сам.. |
|
|
25.7.2010, 19:02
Сообщение
#20
|
|
сундук Группа: Пользователи Сообщений: 4043 Регистрация: 21.11.2009 Из: Ростов-на Дону Пользователь №: 15 |
Когда начальник в очередной раз подходит ко мне и интересуется, как дела (в смысле, когда ж, наконец, будет готово), а я в ответ говорю, что старая программа вызывает во мне когнитивный диссонанс, и я решил переписать её заново, вместо того чтобы поправить десяток строчек, он смотрит на меня как-то странно... Что он при этом думает, даже не представляю. Здесь, ПМСМ, мы и наблюдаем два подхода к программированию. 1. Подход ООП, которого условно придерживается MrYuran. 2. Системный подход, апологетом которого является Wise. Суть ООП в двух словах можно охарактеризовать как максимальное абстрагирование от "железа" и максимальное использование наработанной ранее "нетленки". Суть системного подхода - бритва Оккама, т. е. максимальная лаконичность полученного результата. В первом случае человек первым делом "вьет " себе привычное "гнездо", где ему тепло и хорошо. Делается это по-разному. С помощью привлечения сторонних программных продуктов, ОС, к примеру. Или технологии ООП, или того и другого вместе. Т.е. человек строит систему под себя. "Железо" в этом случае является маленькой несущественной ее частью. Второй подход - несколько иной. Существующие аппаратные средства и программная модель ядра вместе с системой прерываний воспринимаются как готовая система. В этом случае к ней добавлять ничего не надо. Все уже есть и так. Если господам будет угодно, то можно поговорить о преимуществах и недостатков обоих методов. Но только сделать это надо не здесь, а в разделе про программирование. Если на то будет разрешение, могу открыть соответствующую тему. |
|
|
Текстовая версия | Сейчас: 29.3.2024, 13:28 |