Assembler или С?

Тема в разделе "Микроконтроллеры AVR", создана пользователем iBoy, 18 окт 2016.

  1. iBoy

    iBoy Гик

    Здравствуйте! Помогите, пожалуйста, определиться с языком программирования контроллеров.
    Я участвую в конкурсе (мне 15), и, посмотрев на работы прошлых лет, определил, что как правило проходят те работы по робототехнике, которые сделаны на микроконтроллерах. У меня уже есть проект, сделанный на Ардуино. Это приставка на тренажёр, соединяющая тренировку с компьютерной игрой. То есть, например, вы крутите педали тренажера и от этого двигается вперёд ваш игровой персонаж(Ардуино имитирует клавиатуру). Также там реализована система выравнивания пульса, которая заключается в том, что чем вы прикладывайте больше усилий на тренировке, тем персонаж двигается быстрее. Это реализуется с помощью датчика пульса. Система, считывающая вращение педали, основана на датчиках холла. Также там есть интерфейс, где предлагают выбрать уровень сложности тренировки. На изучение языка и реализацию проекта на микроконтроллере есть примерно месяц. Какой язык выбрать: Ассемблер или С и почему?
     
    Последнее редактирование: 18 окт 2016
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    за месяц Assembler ты не освоишь, это довольно сложный в понимании язык.
     
    Airbus нравится это.
  3. iBoy

    iBoy Гик

    Спасибо большое! А можно вопрос: а С можно успеть освоить? И если бы не было привязки к срокам(например, если проект перенести на следующий год), то что было бы лучше?
     
  4. rkit

    rkit Гуру

    На си решать задачи чуть быстрее. Ассемблер дает больше контроля над тем, что происходит, чем позволяет выжать из контроллера все до последней капли.
    Как первый язык бы посоветовал си, но если собираешься заниматься этим супер-серьезно, то надо знать оба.
     
    Airbus нравится это.
  5. Faberge

    Faberge Administrator Администратор

    А что, Ардуино не микроконтроллер? Если вы делали проект на Ардуино, то базовое понимание С-языка программирования у вас уже есть.
     
  6. Onkel

    Onkel Гуру

    есть замечательная книжка "программирование микроконтроллеров атмега на ассемблере" Ревич, очень хорошо написана, асм можну уже с первого - второго часа изучения вкуривать.
    В реальной жизни я писал код (фрагмент) на асме три раза за лет 10- это когда мне нужны были быстрые фрагменты для обработки dmx, color kinetics и NRZ800 протоколов. Вся программа написана на С, а на асме только функция работы с этими протоколами.
     
    Airbus нравится это.
  7. Airbus

    Airbus Радиохулиган Модератор

    Я с неё и начинал.Сначала Асм потом Си а потом Wiring.На Асме проще и быстрее писать мигалки пищалки включалки и прочую логику особенно под маленькие тини. На Си уже вещи посерьёзнее АЦП/ЦАП LCD показометры итд под Меги. Ну а на Wiring это если лень на си :)
    А всё равно как не крути Асм придётся изучить всё равно без регистров никак. А там более понятно и логично.Тем более Асм и Си для AVR похожи чем то. Зная один не трудно освоить и второй а что за чем ИМХО это без разницы. Это не Асм для PIC-вот уж где засада!
     
  8. ANV

    ANV Гуру

    Если времени месяц, то однозначно Си. Потому что жизнь слишком коротка, чтобы писать на ассемблере.

    Можно ли в 15 лет писать на ассемблере? Да, можно. Я в 15 под Z80 вполне себе и писал и чужое дизассемблировал.

    Есть ли смысл сейчас программировать на ассемблере? Пожалуй только две причины: более глубокое понимание железа и оптимизация кода по скорости или объему (в одном случае из сотни, в остальных компилятор сам неплохо все сделает)
     
  9. Airbus

    Airbus Радиохулиган Модератор

    Эт точно!А ещё есть Барсик...И Паскаль...И ведь кто то пишет...
     
  10. Onkel

    Onkel Гуру

    У меня за десять лет активного творчества с области мк было три случая, когда пришлось писать функцию (не всю программу, а только функцию) на асме. Три на стописят, или в среднем один на писят.
     
  11. AlexU

    AlexU Гуру

    А есть ещё язык Ада (язык РАЯ вряд-ли подойдёт;)).
    Вот тут баловались: Микроконтролёры AVR и язык Ада.
    На западе в аэрокосмической области Ада чуть ли не основной язык программирования.
     
  12. ANV

    ANV Гуру

    В NASA об этом почему-то забыли и код для марсохода написали на Си
     
  13. ostrov

    ostrov Гуру

    Еще есть язык Форт, ну или был. В начале 90х пробовал на нем писать программы для крона РК86, но что то так и не проникся. Вот там действительно все с ног на голову.
     
  14. Airbus

    Airbus Радиохулиган Модератор

    :D Адский язык!
    Был Фортран в середине 80х. Нас будущих Пилотов ГА им истязали. Препод был какой то чумовой разговаривал с нами на непонятном языке из 100 человек его понимал только один. Потом пошёл барсик-там вроде попроще стало и то никто не вкурил. Да и не надо было этого-компьютеры ДВК были только в училище и то нас к ним не подпускали чтоб не сломали. Ну а потом 90-е Ms-dos Радио-86РК Синклеры всякие. А на микроконтроллеры я подсел в 2007. Сначала просто тупо шил готовые потом захотелось сделать что то своё. ассемблер под PIC я так и не освоил а АВРовский без проблем. Ну а потом Си. Да и плюс Си-кросплатформенность при желании код можно с минимальными переделками использовать на PIC или ARM.Кстати вчерась посмотрел на Барсика тож интересный язык и под Ардуино можно писать.
     
  15. ostrov

    ostrov Гуру

    Не Фортран, а Форт. Совершенно разные языки.
     
  16. Airbus

    Airbus Радиохулиган Модератор

    А ну да про такой и не слышал даже....
     
  17. ostrov

    ostrov Гуру

    Барсик для AVR интересный, спасибо за ссылку. Но в последнее время все больше убеждаюсь, что хорош тот язык, под который больше готовых библиотек на разные устройства. Далеко не всегда можно легко и быстро подключить разные датчики, дисплеи и прочие радиомодули. Вот сейчас активно осваиваю stm32, под ардуино IDE неплохая насадка есть, но маловато устройств можно просто так взять и прицепить. Даже те, которые заявлены не все компилируются. Потому переход на stm заметно замедляется. А подрыгать ножками без проблем хоть на чем. )
     
  18. ИгорьК

    ИгорьК Гуру

    ИМХО, только mbed позволяет ардуинить на STM32. Ясный пень, что это не все платформы подряд, но соотношение времени/затрат таки неплохое.
    Учить ассембелер, регистры... Круто, конечно. Но появляется какая-нибудь ESP-8288 и все заново?
     
    ostrov нравится это.
  19. ostrov

    ostrov Гуру

    Верно. Поначалу вникать интересно и очень полезно, но потом уже хочется наконец заняться проектом, а не битами и байтами. Все процессоры не изучить, а тем более все инструменты, и даже не попробовать, жизнь, к сожалению, коротка.
     
    ИгорьК нравится это.
  20. Unixon

    Unixon Оракул Модератор

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