LINUX.ORG.RU

Хочу в linux программировать микроконтроллеры

 


1

3

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

Так вот, буквально сегодня я все-таки нашел магазин, в котором можно найти необходимые детали для сборки практически любой схемы и возникло желание собрать свою первую рабочую плату с каким-то функционалом. И для того, чтобы правильно спрашивать у поисковиков, мне нужно хотя бы знать порядок действий. Например:
даташит на МК, распайка, включение в LPT, assembler, avrdude, тесты

Хочу сделать следующее: ЖК дисплей от siemensA70(даташит есть), показывающий четыре зоны огорода и четыре датчика присутствия, замыкающие контакты МК, которые показывают на дисплее алерт по зонам...
Как вообще начинать это все дело?

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

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

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

Читайте http://easyelectronics.ru
Там все подробно разжевано.
Если хотите кратко, то порядок такой:
1. Собираем маленькую отладочную плату на микроконтроллере с минимальной периферией (UART, кнопки, светодиоды, разъемы портов и программирования).
2. Ладим самый доступный программатор (serial, lpt, usb) или покупаем.
3. Собираем на компе ПО: кросскомпелятор (avr-gcc) + прошивальщик (avrdude например)
4. Пишем простейшее мигание светодиодом на С (нахер ассемблер!!!), компеляем, прошиваем и заставляем мигать. Параллельно избавляемся от программных и аппаратных косяков.

Как только это получилось, можешь считать себя «крутым эмбедером».
Дальше просто увеличиваешь кол-во строк в проге и количество периферии на МК.
Ну и время от времени, параллельно с ростом прошивки, используешь более жирный МК.

yax123 ★★★★★
()

мультивибратор в ждущем режиме на магнетроне тоже разумеешь?

или блокинг-генератор на фастотроне с размытым концом импульса, на клистроне?

шутка навеяная тобою же )))

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

1. Собираем маленькую отладочную плату на микроконтроллере с минимальной периферией (UART, кнопки, светодиоды, разъемы портов и программирования).
2. Ладим самый доступный программатор (serial, lpt, usb) или покупаем.
3. Собираем на компе ПО: кросскомпелятор (avr-gcc) + прошивальщик (avrdude например)
4. Пишем простейшее мигание светодиодом на С (нахер ассемблер!!!), компеляем, прошиваем и заставляем мигать. Параллельно избавляемся от программных и аппаратных косяков.

0. Покупаем arduino.

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

Так на готовеньком ничего нового и не узнаешь

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

Ну когда я говорил «иных», я имел в виду подобные по сложности :)

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

Шутку понял, смешно.

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

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

Ардуино — просто готовая и заведомо рабочая отладочная плата за относительно небольшие (среди готовых заведомо рабочих отладочных плат) деньги. Для готового устройства никто не мешает сделать плату самому.

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

Лорчую. Для единичной поделки ардуино самое оно.

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

Ардуино — просто готовая и заведомо рабочая отладочная плата за относительно небольшие (среди готовых заведомо рабочих отладочных плат) деньги.

Почти готов с вами согласиться. Но боюсь скатимся от задач ТС в методологическую плоскость обучения. ТС, как мне кажется, хочет не только что-то делать, но и понять «как» это делается на МК. А ардуино как раз это самое «как» тщательно скрывает, воспитывая совершенно другие рефлексы.
А потом ТС захочет нюхнуть stm, msp430, PIC. И чем ему в этом случае поможет ардуино?

yax123 ★★★★★
()

Рекомендую книжку А. В.Белов «Самоучитель разработчика устройств на микроконтроллерах AVR»
Для программирования использую avr-gcc (C) и tavrasm (ассемблер), прошиваю через avrdude и программатор USBAsp.
Как среду разработки использую vim - примитивно, Makefile и хоткеи. В галлерее постил скрин недавно по этой теме.

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

Даже я лучше бы не смог сказать что мне нужно. Спасибо!

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

А потом ТС захочет нюхнуть stm, msp430, PIC. И чем ему в этом случае поможет ардуино?

А нюхнуть лучше потом будет cortex-m3 какой-нибудь (те же stm32) или ещё чего-нибудь 32-битного, а не насиловать восьмибитные трупы.

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

хм, а с какого МК лучше начать жк прикручивать? У них же отличаются и выводы и количества памяти...

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

Смотрите в сторону а) Blackfin, б) Готовых библиотек.

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

Для ЖКД 2х8 достаточно 6-и ног, а память - зависит от задачи и на чем программировать будешь. Я выбрал ATtiny2313, но для C у него маловато памяти, на ассемблере можно еще что-нибудь наваять.
Я бы рекомендовал начать с какой-нибудь Atmega8 или Atmega16 - у них и периферии побольше и памяти и ног достаточно. Думаю для начала какой-нибудь ATMega88PA-PU будет самое то.

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

А нюхнуть лучше потом будет cortex-m3 какой-нибудь ...

Чувствую, корячится холивар. А насчет:

восьмибитные трупы

через чур категоричное мнение, которое бросает на вас тень.

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

через чур категоричное мнение, которое бросает на вас тень.

Достаточно просто посмотреть на цены одинаковых по характеристикам 32- и 8-битных чипов или на характеристики одинаковых по цене 32- и 8-битных чипов, чтобы приобрести такое же категоричное мнение. Те же stm32 банально дешевле и фичастее avr на единицу стоимости. Восьмибитные, скорее всего, нужны сейчас в основном лишь для всякого legacy.

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

не для сборок «на коленке»

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

И чем с ним работать под Linux?

Уж под arm компилятор в линуксе наверняка найдётся.

PolarFox ★★★★★
()

вообще, советую забить на avr. Не видел ни одного серьезного девайса, сделанного на их основе, в основном студенческие поделки. Уж лучше постараться разобраться в силабовских C8051*, оно полезнее будет в дальнейшем.

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

отлично, я уже составляю список необходимых покупок. Можно будет обратиться, если с USBasp не разберусь?
// Пока что непонятно назначение (прошил на ней МК, а как шить другие? А куда потом их пихать? :) - это мелочи, да и ридми пару строк всего вычитал...)

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

Сомневаюсь что в качестве испытательной платформы стоит использовать менее распространенные решения чем AVR. Да и задачи у меня скорее «студенческие», чем производственные, так что для дома пока только оно.

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

Всегда пожалуйста, да и, думаю, если в форум напишешь, обязательно кто-нибудь поможет.
МК на ней - это это USB интерфейс между компом и прошиваемым контроллером. Он остается в программаторе навечно. Перед тем, как начать работать, его нужно прошить с помощью другого программатора. Я шил этим. А потом прошиваемый контроллер подключается к программатору через разъем SPI.

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

ИМХО stm32 - не для сборок «на коленке». И чем с ним работать под Linux?

stm32 как раз поддерживается (можно найти и тулчейн и отладчик).
А вот для stm8 gcc еще не допилили, что весьма печально. Есть конечно бесплатные средства, но они только под венду.

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

Те же stm32 банально дешевле и фичастее avr на единицу стоимости.

В данном случае это всего лишь маркетинг stm и тупизна atmel.
Чем хорош atmel в сравнении с stm, например тем, что мы точно знаем сколько тактов выполняется каждая команда, соответственно можем точно контролировать временные характеристики сигналов на выходе (нужно это редко, но если уж нужно то фичастее и дешевле тут не спасет).
У stm с этим все намного хужее (одни и те же команды могут выполнятся разное количество тактов).
Так что каждой задаче свой подходящий инструмент.

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

Пока не забыл, грабли: плата USBasp взята отсюда, прямая ссылка на архив. В оригинальной схеме нет стабилитронов, так вот, они очень важны, и не для защиты, как пишет автор, а необходимы для работы на более или менее новых компьютерах (подозреваю, что, как минимум, на тех, что начали поддерживать USB 2.0). Причем необходимы маломощные стабилитроны (zener diode) первый раз впаял BZX85-C3V6 (1.3Ватт) - на настольном компе и ноуте программатор работал со сбоями, периодически «пропадал» надо было часто дергать USB разъем. Много гуглил, внятного ничего не находилось. Выкинул стабилитроны - программатор перестал вообще работать. Но, в то же самое время, всё прекрасно работало на древнем Compaq AP550 (что и привело к такому умозаключению). А когда впаял BZX83-C3V6(0.5Ватт) - заработал без нареканий везде.

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

Ты таки про восьмибитки или про армы?

поделия на cortex-m0 сейчас дешевле восьмибиток и выгоднее во всех отношениях. и команды там выполняются за предсказуемое количество тактов, потому как RISC. И созданы эти m0 как убийцы восьмибиток.

ТС, LPC11xx берите для начала. Но на самом деле попробуйте и сравните с avr сами, выбор станет очевиден. Новые платы на AVR делают сейчас в основном те, кто к этим avr привык и менять ничего не хочет. Дороги они. Сходи на какой-нибудь EBV-семинар или еще куда, где много всяких продавцов разной такой фигни рассказывают о продуктах - сформируешь свое собственное мнение. ARM ничем не сложнее чем AVR, даже во многом проще.

Эти самые m0 можно найти даже в DIP-корпусах и SOIC, что позволяет использовать обычные макетки для них, то есть преимуществ у AVR сейчас вообще никаких нет.

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

Мне тоже стало интересно про убийц восьмибиток в DIP и SOIC корпусах. Дай, пожалуйста, конкретные модели.

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

Пару моделей нашел, найти бы еще где их купить... farnell, TME, ELFA DISTRELEC - нету.

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

0. Покупаем arduino.

+1. Ни паяльник не нужен, ни с IDE разбираться.

Воткнул в USB, apt-get install arduino && arduino, загрузил пример, нажал «Upload» — готово, девайс уже работает :)



Такое бы добро, да лет 20 назад :D

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

В противном случае зачем себя ограничивать этим «самокатом»?

Так сперва в эти ограничения уткнуться нужно. Да и то, кончатся возможности Arduino — можно в том же формате заюзать Leaf Maple (Cortex M3). Кончится он — что-то на S3C2440 взять. И только когда уже и его не хватит (или ~$180 будет неподъёмной суммой) можно заняться и самостоятельным проектированием.

Зачем спешить-то? :)

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

вообще, советую забить на avr. Не видел ни одного серьезного девайса, сделанного на их основе

А что, человек должен начинать проектирование сразу с серьёзных девайсов? :)

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

Это как с openvpn - скачай, настрой запусти - и всё пучком, ты умеешь работать с openvpn, но о VPN как таковом не имеешь понятия. Как-то так..

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

к arduino не лежит интуиция...

У меня тоже почти год не лежала :D

KRoN73 ★★★★★
()

Советую EagleCAD.

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

Это как с openvpn - скачай, настрой запусти - и всё пучком, ты умеешь работать с openvpn, но о VPN как таковом не имеешь понятия. Как-то так..

Догда начинать вообще с К155ЛА3^W пардон, 7400 нужно :)

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

Ну, мне сложно судить. Я 155ЛА3 начинал мучить в аккурат 25 лет назад :) Раньше ассемблеров и программируемых калькуляторов. С другой стороны, бытует мнение, что без знания ассемблера и машинных кодов — никуда. Но сегодня 99% программистов об этом даже представления не имеют. Почему с железом должно быть иначе? :)

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

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

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

Пусть каждый выбирает сам :)

Ну, это само собой. Просто было высказано мнение по возможности выбора :)



И никто не мешает подцеплять 7400 к Arduino (прямо на макетной плате без пайки) и, с одной стороны, с простейшим уровнем играть, с другой — иметь для этого продвинутый сигнальный/управляющий инструмент :)

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

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

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

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

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