LINUX.ORG.RU
ФорумTalks

Начать изучение микроконтроллеров

 клуб радиолюбителей,


2

1

Временами начинает появляться желание поковырять что-нибудь относящееся к самодельным девайсам и микроконтроллерам. Поэтому хотелось бы узнать что да как в этой сфере.

Итак, что интересует:

Процессор ARM с платой для него (боюсь, что собрать с нуля всё окружение не осилю). Процессор лучше помощнее, а вот плату поминималистичнее (засчёт этого и цена, думаю, упадёт) - то есть никаких встроенных акселерометров и микрофонов, а зато побольше всяких интерфейсов (I2C, UART и т. д.), а также USB для подключения к компьютеру. Важна лёгкость прошивки. Слышал, что есть модели, которые могут представляться USB-флешкой и запись прошивки осуществляется простым копированием файла.

А потом для всего этого хозяйства докупать компоненты. Не обязательно всё сразу, но лучше перечислю то, что теоретически может захотеться опробовать: камера, акселерометр, гироскоп, gsm-модуль, gps-модуль, просто радио-связь (в нелицинзируемом диапазоне), контроллер электродвигателя... что там ещё бывает?

Да, система должна быть независима от компьютера (он используется только для перепрошивки и разработки).

Не обещаю, что прямо завтра пойду покупать детали, но хочу подготовиться в плане информации.

★★★★★
Ответ на: комментарий от vostrik

а чо бы нет - первые 1/0 на пины подавать одинаково просто и там и там, а дальше углубление в концепты все равно разными путями - зато после плисыны любой контроллер с ассемблером кажется как ява после с++ с ручным управлением памятью, ну и сама ниша не такая попсовая

bender ★★★★★
()
Ответ на: комментарий от bender

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

KivApple ★★★★★
() автор топика
Ответ на: комментарий от Artificial_Thought

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

KivApple ★★★★★
() автор топика

Если ардуино для тебя не достаточно илитарно, то бери что-нибудь на STM32. Для поддержания чувства илитарности на хабре есть соответствующий агитпроп. Все нужные интерфейсы присутствуют. На моделях по старше есть даже USB-хост.

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

Если очень хочецо использовать ардуиновские шилды, то имеет смысл посмотреть, например, на это или что-нибудь подобное. Производитель декларирует совместимость с ардуино на уровне разъемов. Однако, весь низкоуровневый еб по портированию библиотек работы с этими шилдами, как я понимаю, всё равно на тебе.

Burbaka ★★
()

Процессор ARM с платой для...

мигания светодиодами :))

Made_in_China ★★
()
Ответ на: комментарий от KivApple

это да, но с учетом того, что для этого можно использовать язык Verilog, который _визуально_ чем-то даже напоминает синтаксис Си и оперируешь в основном на уровне абстракций булевой алгебры, эта штука оказывается на деле не такой страшной, как может показаться изначально - как минимум осилить азы под силу даже «программисту», который закон Ома вспоминает смутно из школьной физики, а с паяльником вообще никак не дружит (говорю за себя)

bender ★★★★★
()
Ответ на: комментарий от bender

Я правильно понимаю, что я сначала пишу как бы интерпретатор своей системы команд (или чужой) на Verilog, а потом уже в этой системе команд пишу полноценные программы?

KivApple ★★★★★
() автор топика
Ответ на: комментарий от Burbaka

Только с этими платами проблема в том, что всякие статейки пишут в основном для F серии. У меян тут STM32L-DISCOVERY пол года уже валяется, на экранчик циферки повыводил а дальше как-то самостоятельно постигать стало лень.

Artificial_Thought ★★★★
()
Ответ на: комментарий от KivApple

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

Вот например самая простая «программа»:

module basic_boolean(input a, input b,
    output not_a, output not_b, output a_and_b,
    output a_or_b, output a_nand_b
    );

assign not_a = ~a; // NOT
assign not_b = ~b; // NOT
assign a_and_b = a & b; // AND
assign a_or_b = a | b; // OR
assign a_nand_b = ~(a & b); // NAND

endmodule

инпуты a и b можешь назначить на входы (кнопочки/рычажки/датчики), остальные аутпуты - на выходы (лампочки или ножки драйвера моторчика). на ардуине аналогичный функционал думаю будет выглядеть примерно также, с усложнением задач конечно попрут уже разные нюансы (особенно с добавлением клоков).

Основная разница еще в том, что на верилоге ты схему «описываешь» (т.е. все эти инструкции присвоения на самом деле будут «выполняться» одновременно и «мгновенно» - в данном случае последовательность не важна), а на Си+контроллер они будут выполняться последовательно по тактам контроллера.

bender ★★★★★
()

возьми что-нибудь из AVR для начала

Harald ★★★★★
()
Ответ на: комментарий от bender

ну Вакуленко я не стал упоминать потому, что на него туча ссылок у Панчула )

Satan_Klaus ★★
()
Ответ на: комментарий от Artificial_Thought

Присмотрел вчера STM32F4DISCOVERY. Как я понимаю тут проблем со статьями не будет. Или у неё есть какие-то минусы?

KivApple ★★★★★
() автор топика
Ответ на: комментарий от Artificial_Thought

Но где его лучше купить?

Желательно подешевле и от Российского интернет-магазина (чтобы оно быстрее пришло и не было проблем с таможней).

KivApple ★★★★★
() автор топика
Ответ на: комментарий от Artificial_Thought

Если оценивать по «статейкам» и прочим хаутушечкам, то аруина — однозначный лидер. У нее самый низкий порог вхождения, куча готовых компонентов и большое сообщество. Я все же для начала взял бы ардуину.

Burbaka ★★
()
Ответ на: комментарий от mopsene

Тех кто советует новичкам ардуино я бы расстреливал на месте.
По теме, если до этого ничего не щупал - начинай с avr. Самый первый проект для Ъ - сборка усб программатора USBASP и прошивка его через LPT. Могу дать схематику своего универсального программатора/отладочной платы, а если мск - то помогу прошить первый экземпляр оного. (жаббер в профиле)
Инструменарий - очень рекомендую начинать с Makefile + gcc + любимый текстовой редактор.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от AiFiLTr0

STM32 я бы пока не особенно рекомендовал щупать, если опыта мало, хотя бы полгодика с AVR поработать.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от KivApple

L - контроллер с ультранизким потреблением. Сразу на плате сегментный лсд экран, емкостная тач-панель и схема для измерения потребления тока. Нет отдельного кварца для тактирования. 2 светодиода, 1 юзер кнопка и сброс. F4 - самый быстрый проц из линейки, позиционируется как DSP. Есть high-speed usb. На плате стоит акселерометр, аудио-цап и микрофон. 4 светодиода, 1 юзер кнопка и сброс. VL - самый ширпотреб, ничего из периферии нет. 2 светодиода, 1 юзер кнопка и сброс.

Лично ковырял L и F4, весьма годные штуки.

CFA
()
Ответ на: комментарий от CFA

И да, с программированием все просто - программатор встроен в плату, работает через usb.

CFA
()

А как насчёт STM32? Бери дискавери: недорого, но всё есть для новичка.

CYB3R ★★★★★
()
Ответ на: комментарий от AiFiLTr0

Тех кто советует новичкам ардуино я бы расстреливал на месте.
По теме, если до этого ничего не щупал - начинай с avr.

+ 0xFF

fenris ★★★★★
()
Ответ на: комментарий от Harald

Будут проблемы. Особенно если мк от 3.3 вольт питается, а LPT небуферизованный.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от AiFiLTr0

Самый первый проект для Ъ - сборка усб программатора USBASP и прошивка его через LPT.

Где Ъ-новичёк сейчас найдёт Ъ-LPT?

Могу дать схематику своего универсального программатора/отладочной платы

Зачем? В 8-битовом секторе «Ардуино» уже захватил мир, ибо:
программатор - не нужен,
паяльник - не нужен,
«мозг» - почти не нужен,
осталось допилить DuinOS и все остальные оси станут не нужны...

Тех кто советует новичкам ардуино я бы расстреливал на месте.

«Одинъ въ полѣ не воинъ.» 116 фирм закидают тебя шапками 288 шилдами :)

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

Зачем? В десктоп секторе «Windows» уже захватил мир, ибо:
командная строка - не нужна,
прямые руки - не нужны,
«мозг» - почти не нужен,
осталось допилить Windows 8 и все остальные оси станут не нужны...
«Одинъ въ полѣ не воинъ.» овер9к фирм закидают тебя овер9к программами :)

Спасибо за вкусную копипасту.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от AiFiLTr0

Тех кто советует новичкам ардуино я бы расстреливал на месте.

А что с ней не так? у меня такая штука шьется из мпайда, но если очень хочется, то можно c kwrite+make без их гуя - ассемблер/с/с++ (с pic32-gcc); для особо требовательных - mplab (но это уже правда не ардуина). Чего там еще может быть не той системы?

bender ★★★★★
()
Ответ на: комментарий от AiFiLTr0

в резюме не запишешь

а если не резюме, а для дела - в каком месте начинается потолок и кривые абстракции?

bender ★★★★★
()
Ответ на: комментарий от AiFiLTr0

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

Но ардуина в целом сосёт, но не потому что ардуина, а потому что дорогой и унылый AVR.

PolarFox ★★★★★
()

Для начала освой ассемблер для своего ПК (ты ведь не с холодильника пишешь?). Эксперементируй в виртуалочке. 64 (да и 32) не нужно - главное понять.

vahtu
()
Ответ на: комментарий от PolarFox

Как тебе сказать. Я начинал с того, что купил десяток attiny, кварцев к ним. Потом, когда понял что это доставило, докупил оптом 50 штук. До сих пор больше половины поделок для дома делаю на 2313+vusb из старых запасов, больше покупать не хочу, но вот запасы уже вырабатываются. И запилить проект на 2313+vusb под ключ с клиентским софтом у меня занимает меньше 5 часов (включая схематику, разводку, травлю, пайку и кодинг). И как показывает практика, больше 90% ардуиновских проектов спокойно делаются на 2313.
У ардуины, как у среды есть, с моей точки зрения следующие недостатки:
* Никакая переносимость, даже между разными мк одной серии.
* Среда не поддерживает проекты размазанные на несколько файлов, а по удобству сливает даже vi из поставки бизибокса.
* Бардак в библиотеках.
* С++ для низкоуровневого совершенно не профпригоден. См. эпический пост Линуса про С++. Из практики могу сказать, что дебажить плюсовый код на голом железе, даже с jtag адаптером это то занятие, которого я бы избегал. Да и код плюсовый пухнет как на дрожжах, потому ардуйны все на 1280\2560х делаются. Офигеть как cost effective.
* Какие бы то ни были средства отладки. Вместе с предыдущим пунктом это конечно зашибись.
* Никакого контроля над флагами компиляции.
* Нет поддержки многопоточной сборки, что делается тупо make -j8. Особенно заметно в maple'овском варианте под stm32 да на нетбуках.
Что касается плат, то 99% шит-о-шилдов заменит одна макетка.

Но хрен бы с ним. Все вышеперечисленное, несмотря на свою кривость, у новичков вызывает зависимость, и перейти на что-то серьезное они в большинстве своем после ардуйны не могут и не хотят. Зато ЧСВ растет до небес.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от vahtu

А вот это гавно совет. х86 ассемблер может отвадить вообще желание что-нибудь изучать связанное с ассемблером. Если именно ассемблер хочется изучить, начинать надо с простого, какой-нибудь архитектуры типа CPU08, где два с половиной регистра.

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от AiFiLTr0

Я так и начинал :). Машину Поста писал. После него любой язык - так, ковыряние в песочнице (кроме лиспа, естественно).

vahtu
()
Ответ на: комментарий от vahtu

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

KivApple ★★★★★
() автор топика
Ответ на: комментарий от KivApple

qemu потерзай. ИМХО ртратить деньги на всякие ардуины излишне.

vahtu
()
Ответ на: комментарий от KivApple

Тогда тебе ардуйно противопоказано. Бери STM32, и вперед. Можешь ради прикола мою кухню для них попробовать: https://github.com/nekromant/antares (Ахтунг, вери вери альфа)

AiFiLTr0 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.