Доброго времени суток.
Хочу узнать у знающих людей, а не через гугл....
Почему используют язык программирования C для микроконтроллеров???
Можно ли использовать Assembler для программирования : avr, arm, Pic и ещё esp32???
И чем отличается программирования на этих языках???? ( помимо того что assembler тяжёлый для освоения из-за команд )
Скажу сразу.
Я новичок в этой сфере и хочу разобраться с этим делом.
Если есть блоги/уроки/книги по всей этой тематике. Пожалуйста поделитесь, спасибо ????
Другие языки программирования и технологии
Assembler или C для микроконтроллеров?
"Можно ли использовать Assembler для программирования : avr, arm, Pic и ещё esp32???"
Можно, если хочется заняться мазохизмом.
----
"И чем отличается программирования на этих языках???? ( помимо того что assembler тяжёлый для освоения из-за команд )"
Кроме того, что ассемблер тяжелый, он еще и специфичный для каждого микроконтроллера. Программа на Си намного нагляднее, легко читается, намного легче переносится на другой микроконтроллер. Теоретически, код написанный на ассемблере, может быть быстрее и меньше по размеру, чем написанный на Си, но это надо быть очень крутым спецом, очень глубоко вникнувшим в потроха данного микроконтроллера, чтобы перещеголять результат компиляции Сишного кода.
Но тем не менее и для написания кода на Си, тоже надо изучать внутренности микроконтроллера, так как и при написании на Си, всё равно приходится писать в каком регистре какой бит когда и как надо выставить. Просто на Си обычно это более понятно.
Можно, если хочется заняться мазохизмом.
----
"И чем отличается программирования на этих языках???? ( помимо того что assembler тяжёлый для освоения из-за команд )"
Кроме того, что ассемблер тяжелый, он еще и специфичный для каждого микроконтроллера. Программа на Си намного нагляднее, легко читается, намного легче переносится на другой микроконтроллер. Теоретически, код написанный на ассемблере, может быть быстрее и меньше по размеру, чем написанный на Си, но это надо быть очень крутым спецом, очень глубоко вникнувшим в потроха данного микроконтроллера, чтобы перещеголять результат компиляции Сишного кода.
Но тем не менее и для написания кода на Си, тоже надо изучать внутренности микроконтроллера, так как и при написании на Си, всё равно приходится писать в каком регистре какой бит когда и как надо выставить. Просто на Си обычно это более понятно.
Используют вообще C/C++. STL, Boost и тем более Qt там не будет, но все синтаксические плюшки C++ вплоть до C++17 и ООП - вполне доступны.
C/C++ подходит для AVR (нагляднейший пример - Arduino), ARM (STM32 еще навороченнее, чем Arduino, и намного), ESP32. Про PIC только не знаю, но и зачем они нужны непонятно.
Насчет оптимизации - она не только от языка зависит. Можно на C/C++ записать бит в порт с помощью ардуиновой функции digitalWrite() и это будет удобно, но не очень быстро. В тех случаях, когда надо быстрее (передача данных, а не вкл\выкл светодиод и т. п.), вместо этого напрямую выставляют бит в порту. Но язык в обоих случаях - C/C++. Ассемблерные вставки нужны крайне редко, целиком на нем никто не пишет.
А более полноценные одноплатные компьютеры (начиная от Raspberry PI и заканчивая самодельным вариантом из связки потрохов смартфона с дополнительной "тонкой" платой на МК) поддерживают C++ в полном объеме, и даже поддерживают более высокоуровневые языки - C#, Python, Java, JavaScript.
Если делаешь не какой-нибудь фонарь, который включается ночью и гаснет утром, а что-то сложное, например станок с ЧПУ, или дрон, то лучше сразу взять такую платформу.
Разобраться во всем этом не сложно. Проще всего начать с Arduino. К тому же она и по деньгам стоит рублей 300, если сначала ограничиться минимумом - платой и кабелем. А что ты сделаешь на этой Arduino, зависит от тебя. Можно фигней страдать как школьники, а можно и на Arduino сделать что-то стоящее и вполне заводского уровня. И куда дальше пойдешь, тоже зависит только от тебя. Кто-то поиграется и забросит, а кто-то начав с Arduino потом вообще свою архитектуру компьютеров создаст, и армию роботов впридачу.
C/C++ подходит для AVR (нагляднейший пример - Arduino), ARM (STM32 еще навороченнее, чем Arduino, и намного), ESP32. Про PIC только не знаю, но и зачем они нужны непонятно.
Насчет оптимизации - она не только от языка зависит. Можно на C/C++ записать бит в порт с помощью ардуиновой функции digitalWrite() и это будет удобно, но не очень быстро. В тех случаях, когда надо быстрее (передача данных, а не вкл\выкл светодиод и т. п.), вместо этого напрямую выставляют бит в порту. Но язык в обоих случаях - C/C++. Ассемблерные вставки нужны крайне редко, целиком на нем никто не пишет.
А более полноценные одноплатные компьютеры (начиная от Raspberry PI и заканчивая самодельным вариантом из связки потрохов смартфона с дополнительной "тонкой" платой на МК) поддерживают C++ в полном объеме, и даже поддерживают более высокоуровневые языки - C#, Python, Java, JavaScript.
Если делаешь не какой-нибудь фонарь, который включается ночью и гаснет утром, а что-то сложное, например станок с ЧПУ, или дрон, то лучше сразу взять такую платформу.
Разобраться во всем этом не сложно. Проще всего начать с Arduino. К тому же она и по деньгам стоит рублей 300, если сначала ограничиться минимумом - платой и кабелем. А что ты сделаешь на этой Arduino, зависит от тебя. Можно фигней страдать как школьники, а можно и на Arduino сделать что-то стоящее и вполне заводского уровня. И куда дальше пойдешь, тоже зависит только от тебя. Кто-то поиграется и забросит, а кто-то начав с Arduino потом вообще свою архитектуру компьютеров создаст, и армию роботов впридачу.
Си обьектно ориентированный, срр
Асемблер требует больше времени на разработку, ООП не поддерживается
Асемблер требует больше времени на разработку, ООП не поддерживается
Попробуй на ассемблере микроконтроллера деление (даже не с плавающей запятой) выполнить.
Сразу все вопросы отпадут. =)
Сразу все вопросы отпадут. =)
Микроконтроллеры разные бывают. В каких нить станках, где задачи крайне тревиальны используют ассемблер, просто потому что быстрее проще (есть ячейка памяти нужно отсюда перенести туда и будет то), где же нужна инженерия, архитектура, и сложные схемы вычисления используют С, разные задачи у этих языков. Проще говоря сложная задача С, простая ассемблер.
Да тут это каждые три дня пишут.
Почему используют язык программирования C для микроконтроллеров???
Быстро написать код. Попробуй написать программу для открытия текстового файла и сканирования файла и найти вхождение и записать эту строку в этот файл. И транслируй этот код в ассемблер и у тебя х*й 2 дня не встанет если ты очень хочешь изучить ассемблер. Ну код будет разный но таких переходов между функциями будут не меньше если будет проект по типу opencv на ардуинке.
Можно ли использовать Assembler для программирования : avr, arm, Pic и ещё esp32???
Можно если ты понимаешь что такое язык програмирования.
И чем отличается программирования на этих языках????
Ассемблер не сколько тяжёлый как писать огромный проекты на нём невозможно. Вот та программа наверху на C где-то 20 строк я конечно эту программу найти не могу, но нашёл похожую она ровно 20 строк на C, а на ассемблере 115.
Другое отличие непортируемость.
Книги почитай Википедия линукса торвальдс а там написано что он вдохновившись книгой танненбаума про операционную систему и тд.
Читай танненбаум про архитектуру и операционную систему. И всякое такое.
Почему используют язык программирования C для микроконтроллеров???
Быстро написать код. Попробуй написать программу для открытия текстового файла и сканирования файла и найти вхождение и записать эту строку в этот файл. И транслируй этот код в ассемблер и у тебя х*й 2 дня не встанет если ты очень хочешь изучить ассемблер. Ну код будет разный но таких переходов между функциями будут не меньше если будет проект по типу opencv на ардуинке.
Можно ли использовать Assembler для программирования : avr, arm, Pic и ещё esp32???
Можно если ты понимаешь что такое язык програмирования.
И чем отличается программирования на этих языках????
Ассемблер не сколько тяжёлый как писать огромный проекты на нём невозможно. Вот та программа наверху на C где-то 20 строк я конечно эту программу найти не могу, но нашёл похожую она ровно 20 строк на C, а на ассемблере 115.
Другое отличие непортируемость.
Книги почитай Википедия линукса торвальдс а там написано что он вдохновившись книгой танненбаума про операционную систему и тд.
Читай танненбаум про архитектуру и операционную систему. И всякое такое.
Похожие вопросы
- какой язык легче выучить.C++ или Assembler? какой язык легче выучить.C++ или Assembler?
- Программирование микроконтроллеров на языке ASSEMBLER
- Я знаю HTML а дальше что мне можно C или Pascal или C++,Assembler (JavaScript не предлагать он мне не нужен)заранее спс!
- Что лучше для новичка, что бы написать программу? 1.Visual Basic 2.Delphi 3.C++ 4.Assembler
- что посоветуйте C++ или assembler ?
- Assembler помогите создать файлы *.obj *.exe
- Подскажите, правильно ли? assembler
- Assembler. HEEEEEEEEEEEEELP! дан одномерный массив найти количество и сумму нечетных элементов assembler
- Скажите мне истинные программисты, стоит ли изучать Assembler, если ты знаешь другие ЯП?
- Как написать программу для assembler (ассемблер)?
Но считать ООП-языками все языки, которые содержат переменные нельзя, так можно сказать, что почти все языки программирования - ООП языки