Перейти к содержанию

Дайте советы новичку по программированию МК


Рекомендуемые сообщения

Здравствуйте, только начал свой путь в программировании микроконтроллеров. Прошу советов в целом и ответов на вопросы в частности(они ниже).

1) Какие книги читать? По порядку от начального уровня и далее. Я сейчас читаю книгу Белова А. В. "Микроконтроллеры AVR. От азов программирования до создания практических устройств".

2) Какие программы использовать? В целом, не знаю какие вообще нужны программы для этого дела. Я сижу на Lunux, но могу и с вириальной машины запускать.

2.1) Можно ли для написания программы использовать C++? я немного знаю C, но сильно хуже чем C++. 

3) Можно ли обойтись без покупки реальных схем и инструментов? Хотя бы по первой. Понятно дело, что если развиваться в этом направлении, то без этого не обойтись. Но есть ли такая программа в которой можно собрать схему, в ней в микроконтроллер загрузить программу и посмотреть как она работает?

Ссылка на комментарий
Поделиться на другие сайты

1) книги, такие комплексные, обычно задают и среду в которой надо работать и аппаратную платформу. Причем обычно там даже есть инструкции как чего делать чтобы создать проект, откомпилировать и провести отладку. А потом в последующих главах рассказывается как этим всем воспользоваться.
А лучше всего подсматривать открытые реальные коды других людей, учится на реальных примерах.
В идеале, чтобы научиться, нужно только желание и даташит на контроллер, наличие опытного наставника просто ускоряет этот процесс в 10 раз.

2.1) Можно. Ардуино. Но смысл? Вы научиться хочете или что-то делать? Научится - надо начинать с асембера, потом С а С++ чистый оставь профессионалам. Дело в том что он разработан чтобы быстро делать программы, за счет повышенного потребления ресурсов. Но если у вас хрошо проработан алгоритм, всё продумано то и на С можно неплохо писать, учитывая некоторые особенности. Почему с асемблера? А чтобы у вас потом небыло вопросов связанных с работой с памятью, не задавались вопросом а почему это операции с плавающей запятой отнимают так много времени и памяти во флеше и т.д. и т.п.

3) Как всегда - МОЖНО, но будет очень сложно. Проще во 100 раз обзавестись реальным железом, хотябы той же платкой ардуино нано, где по сути голый контроллер и на которой вы сможете попрактиковать и ассемблер и С, и С++ в виде ардуиновской среды. Ну и само собой безпаечную макетку, с проводками светодиодами, дисплеями и прочими штуками.

Кстати светодиоды - +50 к отладке, ЖК дисплей - +1000 к отладке.

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

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

16 часов назад, Cheshire Cat сказал:

 Прошу советов в целом и ответов на вопросы

Всецело поддерживаю Alexeyslav . Если сидите на Lunux то найдите компилятор для вашего микроконтроллера который может в нем работать и соответственно книгу которая его описывает. Достаточно часто с книгой бывают и диски с самой программой и примерами. Но самым главным и основным будет даташит . В нем подробно описана архитектура вашего микроконтроллера и что самое главное описаны все регистры и что в них нужно записывать чтобы управлять работой контроллера и писать программу. Писать естественно придется только на С. Так что придется его изучить суть глубже. Из симуляторов на памяти только Протеус. Но это еще тот монстр. Так что купить макетную плату панельку под микроконтроллер и простенький програматор будет лучшим вариантом. Как вариант купить программатор с функцией отладки. Ардуино вообще не рассматривается если действительно хотите изучить программирование микроконтроллеров

Изменено пользователем musa56
Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

2 часа назад, Alexeyslav сказал:

...Вы научиться хочете или что-то делать? Научится - надо начинать с асембера...

Полностью поддерживаю.

1 час назад, musa56 сказал:

...Писать естественно придется только на С... 

А вот тут, позвольте не согласиться. ПисАть программы (как и картины) можно только на Ассемблере (мазок за мазком, точка за точкой). На Си их конструируют (аналогия конструктора Лего), применяя готовые библиотеки (кубики) и переставляя их местами. Шедевров, в данном случае не получается... Так, некультяпистые монстры, но быстро.

Так что решать автору. От себя могу порекомендовать (для широкораспространенных AVR) VMLAB 3.15. И компилятор, и симулятор в одном флаконе. 

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

20 минут назад, Геннадий сказал:

 применяя готовые библиотеки (кубики) и переставляя их местами. Шедевров, в данном случае не получается...

Это вы о чем? "С" обычный язык програмирования и к микроконтролерам никакого отношения не имеющий.  Соответственно никаких "кубиков" в нем нет. Програмирование микроконтролеров в первую очередь заключается в записи  в регистры и чтении из них управляющих слов по определенному алгоритму . И к стати совершенно неважно как вы это делаете на асемблере или на "С". Асемблер низкоуровневый язык  более привязаный к железу но из за этого програмировать на нем сложнее. "С" универсальный язык и  код асемблера получается после обработки компилятором. Естественно из за того что Язык "С" не привязан к железу то код получается не совсем оптимальным. Но писать на "С" удобнее. К стати не обязательно и на "С". Есть компиляторы и для других языков

Ссылка на комментарий
Поделиться на другие сайты

8 минут назад, musa56 сказал:

Програмирование микроконтролеров в первую очередь заключается в записи  в регистры и чтении из них управляющих слов по определенному алгоритму .

В общем случае СОВСЕМ НЕ ТАК. Собственно, записи в регистры заканчиваются написанием драйверов. Основная часть кода ни в какие управляющие регистры ничего не пишет.

Изменено пользователем my504

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

19 часов назад, Cheshire Cat сказал:

Прошу советов

Советы давать - не мешки ворочать.  Держите еще один.:)

Порекомендовать можно книжку А.Белова "Самоучитель разработчика устройств на микроконтроллерах AVR", лучше в бумажном варианте. Там есть все, что нужно для начала. Начинайте  последовательно делать примеры, они все дублированы: ассемблер и Си. Все разжевано: и команды и детали алгоритмов, и построено от простого к сложному.  Использовать можно бесплатную AVR Studio , необязательно  даже последних версий. Как симулятор вполне пойдет и Proteus. По этим программам информации море. На примерах из книжки постепенно придет понимание, что вам нужно дальше. 

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, my504 сказал:

Собственно, записи в регистры заканчиваются написанием драйверов.

Ну да чтобы поморгать светодиодиком мне нужно написать драйвер. Ну и зачем. Не проще загрузить в таймер значение и по окончании счета вывести в порт.

Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, musa56 сказал:

чтобы поморгать светодиодиком

Моргание светодиодиком к программированию МК имеет такое же отношение, какое имеет пассажир автобуса к вождению болида формулы 1.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, musa56 сказал:

Соответственно никаких "кубиков" в нем нет.

Одна конструкция FOR уже чего стоит, или даже элементарный IF, CASE... это ещё те кубики...
Но вообще С не люблю за то что один лишний символ может изменить смысл написанного кардинально, и оно ещё и скомпилируется.

17 минут назад, musa56 сказал:

Собственно, записи в регистры заканчиваются написанием драйверов.

Вообще это называется HAL. И написание аткой прослойки для контроллера позволяет даже делать портабельный код на ассемблере, просто для разных контроллеров подключается свой HAL, написанный заранее. Но это всё нудно и неинтересно, поэтому люди берут С-шку, плюются но едят кактус потому что для С сообщество уже написало HAL чуть ли не под каждый контроллер.

25 минут назад, musa56 сказал:

Ну да чтобы поморгать светодиодиком мне нужно написать драйвер.

На младших AVR этот драйвер вырождается в одну конструкцию SBI/CBI иногда чуть сложнее, а вот для STM32 приходится писать драйвер - там и инициализация сложная, и сам процесс установки ножки порта может растянутся на 3-4 инструкции, одним алиасом уже не обойтись.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

6 минут назад, Alexeyslav сказал:

Но вообще С не люблю за то что один лишний символ может изменить смысл написанного кардинально

Знаю Pascal/delphi, немного С++ (больше в среде builder), приходится на VB кое-что писать. AVR на асмике. Наверное в assemblere еще больше лишний или неверный символ посылает в хаос. 

21 час назад, Cheshire Cat сказал:

Какие книги читать?

У самого Ревич "Практическое программирование микроконтроллеров ATMEL AVR на языке ассемблера". Книжка на вид солидная, пока не начинаешь писать код. Не рекомендую. Некоторую пользу конечно принесла, но ей одной ограничится невозможно. Понимаю что,  переписывать datasheet пустая трата времени но хотя бы основные нюансы можно было расписать.

22 часа назад, Cheshire Cat сказал:

Какие программы использовать? ...Я сижу на Lunux,

 Не совсем то но... РАБОТА С ПРОГРАММАТОРОМ ОТ PROTTOSS В LINUX Самому не пригодилось, есть и debian и XP на одной машине, но чаще использую XP - ленивый я.

2 часа назад, _abk_ сказал:

Как симулятор вполне пойдет и Proteus.

У меня лично неважно работает с контроллерами AVR (tiny13, tiny2313, mega8 пробовал)

Ссылка на комментарий
Поделиться на другие сайты

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

ВСЕ сказанное - это мизерная часть, ничтожно малая. Т.е. пренебрежимо малая. Программирвоание МК ничем не отличается от программирвоания для винды, линуха или написания скриптовых движков для сайтов.

Программирование - это умение решить любую задачу путем абстрагирования от реальности, но не теряя связи с нею. Вы думаете, знание теоремы Виета позволит вам написать программу, решающую квадратные уравнения? Ошибаетесь - первый же "неуч" сломает её, если вы отнесетесь к программированию, как к написанию формулы нахождения корней. Решить задачу - это не вычислить, точнее, не только вычислить и не просто вычислить.

Можно знать сотню языков программирования и быть полным нулем, как программист. А можно толком не знать ни одного и быть великим программистом.

Поэтому читать надо книги, которые учат мыслить аналитически, асбтрактно, логически. После того, как научился - надо научиться излагать мысли связно, кратко и недвусмысленно. А уж потом можно изучить  синтаксис любого языка и написать свои мысли на этом языке - получится программа. Работа с портами, битами и регистрами - это примерно как муки выбора размера ложечки для десерта, т.е. почти никак не влияющие на результат аспекты. Запомнить, какой ложкой есть мороженое, а какой суп по силам дебилу (и династия Габсбургов тому подтверждение). Но это не означает, что станете программистом (и династия Габсбургов тому подтверждение).

Лично мне больше всего помогли книги Гради Буча по объектному программированию, название, к сожалению, забыл. Там нет ни одной строчки на реальном языке программирования, но после её прочтение ощущаешь себя специалистом. Ну и логика - к сожалению, дисциплина полностью изгнанная из учебных планов большинства ВУЗов (технических, если не ошибаюсь, поголовно всех). Без логики в программирование соваться нечего. Математика - для любительства достаточно базового школьного курса, если лучше - то лучше. Но никак не хуже.

Такое вот моё мнение.

Изменено пользователем ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

7 часов назад, Alexeyslav сказал:

На младших AVR этот драйвер вырождается в одну конструкцию SBI/CBI иногда чуть сложнее

Это зависит от задачи и схемотехники. И дело не в шаблонах структур для простой инициализации регистров в STM. Драйверы создают общую диаграмму работы УСТРОЙСТВА (а не МК). и эта диаграмма может быть совершенно примитивной для АРМа и головоломно сложной для шестивыводного МК.

6 часов назад, Serb_ret сказал:

Наверное в assemblere еще больше лишний или неверный символ посылает в хаос.

Лишний символ на АСМе приводит к генерации ошибки и никуда никого не посылает. Речь шла о том, что ЛЮБОЙ слой абстракций способен как удачно зачистить цель для ее постижения, так и забить наглухо непроходимой стеной. В этом смысле АСМ более открыт, ибо все абстракции в нем мы создаем сами. В отличии от Си, где нужно порой бороться не только с логикой алгоритма, но и с логикой компилятора.

戦う前に相手のベルトの色に注目

Ссылка на комментарий
Поделиться на другие сайты

4 часа назад, my504 сказал:

 И дело не в шаблонах структур для простой инициализации регистров

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

Изменено пользователем musa56
Ссылка на комментарий
Поделиться на другие сайты

Программатор кстати AVRDUDE нативно линуксовый, в комплекте с железной реализацией USBASP.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...