Комментарии 84
Я-то учился работать с МК в начале 2000-ых, но то было в рамках высшего образования и у меня свободного выбора не было — моим первым МК стал Motorola 68HC11 =)
Наверное потому, что на тот момент у пика был полностью переведённый на русский даташит и вообще с документацией получше немного было.
А сейчас у них гуглы, яндексы, всякие форумы и т.д. и все равно сложности какие-то возникают. Эхххх, молодеж :-)
Как насчет дизассемблировать прогу архитектуры MCS48 — 2к содержимое 537РФ2 ручкой в тетрадке в 1988 году? — потому, что других примеров, чтоб учиться — нет. Ну разве, что было немножко в «микропроцессорных средствах и системах». А за ними между прочим надо в центральную районную библиотеку переться на метро и двух троллейбусах — потому что в местной они не предусмотрены. С тетрадкой… Бо ксерокс туда не завезли… а сканер — вообще никто не знал что так можно…
Классно вам, у вас метро было… :-)
Да, тогда не было сканера-ксерокса в библиотеках, но фотоаппарат никто не запрещал с собой приносить. Если выбрать солнечный день и место у окна, чтобы не вызывать ругань библиотекаря работающей вспышкой — вполне себе приемлемо получалось. Переходные кольца и т.п.
Но в 1988 году в дефолт-сити уже вовсю функционировал Митинский радиорынок,Даже Тушинский не функционировал!
а митино вообще было «3 дома» и пустырь вокруг с проектом застройки. Жизнь была у магазина пионер.
А разве МПСС — не журнал?
Мое дилетантское мнение: маломощным контроллерам нужен ассемблер. При этом для них есть кучи библиотек, к которым постепенно добавятся самодельные, которые ускоряют написание программ. Ассемблер и прост, и сложен одновременно, разбираться с ним в домашних условиях вместо купить для разовой поделки контроллер на доллар-два дороже и порядково производительнее, для которого можно набросать что-то на высокоуровневом языке, не каждый станет. Но как хобби, как мне кажется, ассемблер прекрасен.
Мы под xmega даже C++11 применяем, в доступном объёме оф коз.
Ну а для всяких мелких контроллеров с 256 байт флеша вариантов и нет. Но это уже совсем своя особая область разработки.
Они дороже (из-за низкого спроса) и больше потребляют (из-за старого техпроцесса).
На тот год в тренде как раз были восьмибитки. Армы слишком сложны были для сборки в домашних условиях и вообще там много чего надо было знать. Тогда даже кортексов вроде бы не было. Кругом арм7тдми царил.
А как по мне так начинать лучше всего вообще с ат89с51. Периферии только порты да уарт. Заблудиться негде, ресурсов мизер и быстро учишься их экономить и писать эффективный и ловкий код. Натыкать в кубе монстр прошивку то может и проще, да только понимания не прибавит ни на грамм. Как была магией так и останется.
работать на частотах до 400МГц
У вас устаревшая информация: i.MX-RT1170 — 1 GHz Cortex M7+ 400 MHz Cortex M4
Ну что PIC — это якобы RISC, прожужжано конечно во всех даташитах. Но на самом деле какой же это риск, если он может сложить регистр с памятью и положить результат в память же?
На самом деле его команды, в т.ч. 12-14 битная их ширина очень похожи на команды каких-нибудь ранних ЭВМ, типа PDP-8 или ей подобных. И это ни разу не RISC.
Конечно если понимать RISC не буквально (типа, мало команд, в PDP-8 8 команд всего!), а как то, что все команды простые.
Туда же и MSP430, который махровейший CISC с командами от 1 до 3 слов, может прибавить 1 командой память к памяти, как и PDP-11, глядя на который он и делался.
Тут надо заметить, что не во всех МК это возможно. То есть, подключить внешнюю RAM можно, а вот включить её в общее адресное пространство возможно далеко не во всех МК, тем более запустить программный код, находящийся во внешней памяти.
Не по МК, но рядом полезно будет почитать Харис и Харис, название уже не помню.
Digital Design and Computer Architecture by David Money Harris and Sarah L Harris
Цифровая схемотехника и архитектура компьютера
http://easyelectronics.ru/files/Book/digital-design-and-computer-architecture-russian-translation.pdf
Но, книга помогла в 3 моих затыках:
1. Оказывается в шараге где я учился все зависло в году 85, и для помигать светодиодиком не нужен 8080 с россыпью чипов.
2. Програмировать надо не 16х кодах не понятно где, а вполне себе в современных IDE.
3. Программатор собирается на одной микросхеме стандартной логики.
Самое интересное, что хоть в книге все примеры были на asm/c мне почемуто сначала зашел asm что здорово помогло в потом в понимании кода, даже на совсем других архитектурах.
По PIC16 есть и некоторая учебная методичка F2P (Forth to PIC compiler) Г.Р.Алпатов Применение PIC-контроллеров. (Южный Федеральный университет)
P.S. Здесь немного больше по Форт и PIC
Pic Forth
PIC Projects
FlashForth
…
А так, да Форт (Forth) есть в разных вариантах на любой контроллер.
Поддерживаю полностью. Только лучше начать с ассемблера простого 8-битника типа AVR, например. ARM для старта сложнее будет. Научитесь писать на ассемблере, освоить более высокоуровневые языки (как
С, например) уже будет не проблема. А потом уже можно и другие архитектуры осваивать.
Никакой мороки со средой/программаторами/драйверами, сразу мощный двухядерный МК на 240 МГц с вайфаем, блютусом и мегатоннами примеров и готового кода плюс возможность для новичка сразу получить какой-то полезный готовый результат.
Как бонус: отладочные платы стоят дешево.
В восьмибитное погружаться смысла нет никакого вообще.
В будущем, с переходом на батарейное питание можно перейти на stm32l или msp430. Все остальное вымерло либо очень узкоспециализированное.
с процессорами у которых в слип ток потребления меньше чем саморазряд этой батарейки.
И никаких 32х биток в них не будет никогда (как и кода не на ассемблере).
Пишу на С, потихоньку перехожу на С++.
В стопе все МК любой архитектуры примерно потребляют одинаково на обновление памяти и работу таймеров. Какая разница на чем написан код, если ядро вообще выключено по питанию?
STM32 в low-power run примерно в два раза энергоэффективнее STM8, при этом потенциально быстрее.
Из всех выделяется только msp430 с FRAM, там можно сэкономить последние 2-3 мкА, но так же можно любой другой МК просто полностью отключать, сохраняясь во флеш.
К тому же ваш STM32 10 лет не существует — а 8-ми биткам с наноамперным потреблением 20 лет (т.е. все уже было когда никаких вас не было — все задачи решены!)
Покажите страницу из даташита или название МК, который при исполнении кода потребляет наноамперы?
Покажите страницу из даташита или название МК, который при исполнении кода потребляет наноамперы?
Я просто убеждался, что вы лукавите.
Да. В теории вы думаете что такое возможно, но реального опыта у вас нет.
Вы утверждаете что восьмибитные контроллеры потребляют меньше, чем 32-битные, из-за чего новички будут мучаться с восьмибитным мусором и тратить свое время зря. Причем вы еще никак не может доказать то что говорите, теоретизируя, отправляя в гугл и несуществующие даташиты.
На конец 2019 STM32L0 потребляют меньше всего, они доступнее и дешевле всего остального и имеют нормальную периферию.
1) да любой 8-ми битный CPU by design жрет меньше 32х битного — ибо содержит меньше транзисторов и требует меньше энергии на их переключение в процессе выполнения кода.
1a) Так же любой код на ассемблере, жрет меньше по тем же самым причинам: не имеет «лишнего» исполняющегося мусора — лишних переключений состояний.
1б) Ровно по этим же причинам в бекграунде идентичные ноутбуки работают дольше от батареи, если их ОС выполняет меньше мусорных инструкций и если в ней запущено меньше мусорного софта.
Все это надо учитывать, когда нужна энергоэффективная система. Новичкам не надо — но вот если специалист этого не знает, это какой то так себе специалист.
2) Оригинальная микропроцессорная архитектура разработанная самим производителем с учетом требования рынка (microchip), всегда имеет качество лучше, чем дженерик архитектура на ip модулях купленных как правило хрен знает у кого и насыпанные в кристалл по быстрому (ST). Дичайшие баги с АЦП в ST-шных поделках тому пример… А уж конфликты модулей друг с другом по ногам вообще смех — думать было некогда, надо было за кем то гнаться (за кем?)… Так что в вашем случае — это именно ST мусор. И этот мусор: сюрприз — стоит как мусор! кто бы мог подумать… А не как настоящие ARM процессоры которые например делает та же фуджитсу, и у которых степень доводки тех же самых по сути IP модулей — вообще космос по сравнению с глюкавыми ST. И это не ST-шный индустриальный only шлак — а чипы в автомотив-милитри-спейс грейд. Цена у них тоже конечно выше на порядок. Ибо так и должно быть! При том, что еще ST умеет секретить баги, пока эти баги до тех пор ну просто уже из горла не лезут у каждого 2-го разработчика…
3) особенно весело в контексте новичка например обсуждать минимальное число деталей, необходимых для запуска этих ваших 32-хбиток… когда те же PIC12-16 могут работать имея только батарейку подключенную к чипу 2-мя проводами — И ВСЕ! Можно по обсуждать корпуса, ведь те кто учатся еще не уверенно паяльник держит. Этот ваш STM32L0 — В ДИПЕ ГДЕ!? нету конечно… вы сразу паять в TSSOP20 будете учиться? ну ну — я бы посмотрел на этот цирк…
Так вот новичку лучше начинать работать с тем, что проще надежнее и предсказуемее, с меньшим числом деталей и в понятном корпусе с большим шагом и на что даташит на русском — а не этим вашим «а зато оно дешево». Чтоб не ходить по чужим граблям когда своих будет поле не пройденное.
1) да любой 8-ми битный CPU by design жрет меньше 32х битного — ибо содержит меньше транзисторов и требует меньше энергии на их переключение в процессе выполнения кода.
1a) Так же любой код на ассемблере, жрет меньше по тем же самым причинам: не имеет «лишнего» исполняющегося мусора — лишних переключений состояний.
Я слышу что вы не программист, поэтому у вас нет понимания того, что чем быстрее работает ядро, тем меньше по времени оно работает. Современное ядро -> меньше техпроцесс -> меньше потребление на ватт -> меньше общее потребление.
Про ассемблер даже комментировать не буду. Пока вы будете писать код на ассемблере для выравнивания износа на FLASH, я уже дойду до выпуска многотысячной партии устройств и поеду в отпуск отдыхать на берегу моря.
Одна только реализация HashMap на ассемблере займет не один месяц и потребует идеальных академических знаний, с которыми человек в гугле будет зарабатывать пол миллиона долларов в год, а не программировать восьмибитные контроллеры.
2) Оригинальная микропроцессорная архитектура разработанная самим производителем с учетом требования рынка (microchip), всегда имеет качество лучше, чем дженерик архитектура на ip модулях купленных как правило хрен знает у кого и насыпанные в кристалл по быстрому (ST).
Такая прекрасная, что программировать под нее придется не в нормальном VisualGDB, а в мусорной IDE из 90х, где ни гит не поддерживается, ни инструментов рефакторинга нет.
Дичайшие баги с АЦП в ST-шных поделках тому пример… А уж конфликты модулей друг с другом по ногам вообще смех — думать было некогда, надо было за кем то гнаться (за кем?)
Вау, и в МК бывают баги. А я-то думал, что мир идеален
3) особенно весело в контексте новичка например обсуждать минимальное число деталей, необходимых для запуска этих ваших 32-хбиток… когда те же PIC12-16 могут работать имея только батарейку подключенную к чипу 2-мя проводами — И ВСЕ! Можно по обсуждать корпуса, ведь те кто учатся еще не уверенно паяльник держит. Этот ваш STM32L0 — В ДИПЕ ГДЕ!? нету конечно… вы сразу паять в TSSOP20 будете учиться? ну ну — я бы посмотрел на этот цирк…
Снова вы не в теме.

Плата с STM32L071KBU6. Подключена «только батарейка двумя проводками» и светодиод. Как раз для тестов потребления)))
Новички сегодня ничего не паяют сами. Зачем, если алика можно за 300 рублей заказать готовую отладочную плату.
И вы все еще не показали тот крутой МК двадцатилетней давности, у которого при работе ядра «наноамперное потребление». Мы все еще ждем.
Даже ваш любимый PIC16F15356 (самый современный) даст 1 микроампер на 32768 на 1.8 вольтах. Найти эту инфу у меня заняло 5 минут. Доказать свои слова вам лень, зато писать простыни гнева — нет.
И это не говоря, что вы сами свой главный аргумент
Есть например устройства 10 лет работающие на одной литиевой таблетке батарейке.
с процессорами у которых в слип ток потребления меньше чем саморазряд этой батарейки.
И никаких 32х биток в них не будет никогда (как и кода не на ассемблере).
в своем следующем сообщении дискредитировали:
В стопе одинаково
Предлагаю закончить, я уже все понял, ничего нового, кроме ностальгии по давно ушедшим годам вы мне не принесете этим диалогом.
Я слышу что вы не программист, поэтому у вас нет понимания того, что чем быстрее работает ядро, тем меньше по времени оно работает
А давно надо быть программистом, чтоб понимать что ничего не делать энергоэффективнее нежли бежать марафон? (учитывая что бег этот — по кругу).
Одна только реализация HashMap на ассемблере займет не один месяц и потребует идеальных академических знаний, с которыми человек в гугле будет зарабатывать пол миллиона долларов в год, а не программировать восьмибитные контроллеры.
Есть код экономящий 5$ в партии 10млн штук — КИХ фильтр. ассемблер. Люди что это сделали никогда не пойдут в гугл — им банально гугл не интересен.
(смешно но работает на ваших любимых ST).
Снова вы не в теме.
Это для новичка? А школьник спаяет? QFN для школьников? а откуда он плату возьмет? утюгом сделает? двухстороннюю? и у вас 9 деталей на плате кроме процессора, хотя вам сказали что можно — НОЛЬ.
Основная проблема этого вашего 32-битостроения тупо отсуствие реальных решаемых исключительно на нем задач! Когда придумали процессоры, придумали компиляторы, гиты и налабалии говнокода — а уровень задач как был «гирляндой» так и остался… А где не гирлянда — почему то гораздо проще промPC воткнуть с примитивным интерфейсом на линуксе чем изобретать кастомный говнокод на 32битках… (32 бита давно придумали — он x86 называется ;)
1a) Практика показывает, что большую часть времени выполняется небольшой процент кода. Это означает, что если для энергоэффективности недостаточно выбора контроллера с подходящим техпроцессом — нужно оптимизировать эту самую небольшую часть кода. Часто можно подобрать конструкцию на С, с которой компилятор сгенерирует эффективный код, но если этого недостаточно — можно использовать ассемблерные вставки и отдельные функции. Но писать на ассемблере всю программу — это как правило означает, что её функционал будет максимально урезан, потому что на всякие там выравнивания износа флэша банально не хватило времени. А если использовать что-то вроде ATtiny — на такие вещи ещё и просто не хватит ресурсов контроллера.
2) Модуль EEPROM для XmegaA3 разрабатывался не в Atmel? Или почему он нормально работает только в sleep-режиме?
3) STM32F070 может работать от батарейки без дополнительных деталей. Другим STM32 нужно лишь несколько конденсаторов по питанию.
И да, про Arduino тогда никто понятия не имел.
В 2009ом никто не имел понятия? Как это? Заказал diecimila в Линуксцентре ещё в 2008ом как раз чтобы попробовать программирование МК.
Создатель сайта написал ещё и учебник по программированию
видимо склоняемый на мелкочипе корабельникофф
Освоить МК реально даже самому и с нуля
я бы советовал начинающим вот такую плату

и уроки к ней, есть на асме и си.
Тогда с чего лучше начинать новичку и почему?
Думаю, что новичку в качестве хобби начать лучше с Ардуино. Плюсы: порог вхождения довольно невысок, т.е. готовые наборы, платы и компоненты стоят относительно недорого, среда разработки схематики и среда программирования бесплатные, большое сообщество, большое количество учебных материалов и примеров в инете
Считаю, что ассемблер весьма неплох для понимания того что же там внутри происходит. Залезть в МК руками, покопаться в регистрах, посмотреть на результат. И несложная 8-битка для этого весьма подходит.
К тому же, многие любтели могут вполне комфортно себя ощущать в этих самых 8 битах, без надобности в STM32 и подобных.
Уж извините, но кг/ам.
Очень зря не разобрался в ассемблере. Без основ не приходит понимание большего.
Советовать кому-либо ардуину, имхо моветон. Это всё равно как проколов колесо на трассе вопить "Алиса, поменяй мне колесо!".
Чудеса существуют, но делать вам их придётся самим.
Кто бы что ни говорил, но изобретать велосипеды — это и есть работа эмбеддера.
Другое дело, что нет необходимости изобретать комплектующие. Но для этого нужно знать номенклатуру, т.е. основы.
Круг замкнулся.
ИМХО, это мои ощущения по сравнению с AVR на момент 2011 года.
Ну и до покупки железок или с целью быстро набросать прототип прошивки можно воспользоваться эмуляторами. Очень мощная, на мой взгляд, это — Proteus
без обид, но объективно — статья нынче не актуальна.
в каком нибудь 2012ом еще может быть и было бы полезно новичкам, но сейчас в интернетах тонна информации по этому поводу, как статей так и видео на ютубах с описанием всего, чего только можно
я и сам изучал мк в одиночку (без учителя / наставника). начал в 2014м, плотно занялся в 2016м, сейчас коммерческие проекты разрабатывают и вполне успешно, так что по опыту говорю — инфы доступной вагон, порог входа ниже плинтуса. нужно только желание
Как я научился работать с микроконтроллерами — опыт новичка