Pull to refresh

Comments 128

Сказать америку вы не открыли. Такое практиковалось и уже довольно таки давно
Пример
У меня зато грабли прикольные. Впрочем, спасибо за намек на ATmega 8. Они стоят как ATTiny 85, но при этом возможностей побольше.
Возможностей у ATTiny85 как бы не побольше. Например встроенный ОУ.
Ну, тут еще вопрос, что из этих возможностей беспроблемно используемо через Arduino.
Я имел в виду тупо количество входов-выходов общего назначения.
А, ну тут да. И памяти в меге поболе.
Да, ATTiny почему-то считают дешёвой версией, хотя в большей степени это — специализированная версия AVR'ок, которая может лучше подходить под конкретную задачу.
Вам бы лучше на STM-ки перейти. Там возможностей в разы больше
Думал над этим. Но пока не придумал для себя задачи, где оно бы пригодилось.
Если стоит вопрос именно «придумать» задачу, предлагаю графику. У Andy Brown есть неплохие наработки в этом направлении. Хоть Ардуино и тянут графику (вплоть до 640х360 на базе экранов от SE Vivaz) вполне прилично, особенно благодаря его наработкам по части ПО, STM все равно выглядит предпочтительней.

andybrown.me.uk/wk/
Например FFT-преобразования для тех случаев когда обычного контроллера маловато а DSP применять слишком жирно. Но в STM-ках тоже свои подводные камни есть, и менять мозги надо чтобы эффективно под них программировать. Например, напроч отучиться от ногодрыга — с таким подходом шустрая STM-ка будет работать не быстрее чем обычный контроллер ибо операция управления внешними выводами довольно затратная по времени. Там нужно по максимуму задействовать периферию, а это сродни решению сложной математической задачи или составлению сложного SQL-запроса к базе данных где участвует с десяток таблиц. Не очень многообещающая перспективка для начинающего.
Хочу задать вопрос про STM. Я их всегда вижу уже в готовом виде на платах. Это макетные платы? Я имею ввиду могу я к примеру как с AVR купить просто микроконтроллер и всё остальное сам навешать или получается столько всего, что легче уже с готовой работать?
Ардуино тоже на платах продают, но ничто не мешает отдельно МК, в т.ч. с заливкой взять, что (отчасти, как подход) и обсуждалось в статье. С STM абсолютно та же ситуация на рынке.
Да, только у них есть одна проблема — шаг выводов слишком мелкий, для домашнего изготовления уже напряг. И там целый ад с разводкой цепей питания.
Кстати, совсем не все так страшно.
По одному smd керамическому конденсатору с каждого края микроконтроллера между VCC и GND по appnotes.
LDO на 3.3v для питания цифровой части. Ну и если используется АЦП, то отдельное питание желательно для аналоговой части. Да и корпуса с 64 выводами и меньше не имеют вход для reference напряжения, к сожалению

Ну и добавлю: они шикарно разводятся, если нацелиться на заводскую двухстороннюю плату. Это по крайней мере не дорого, только долго ждать.
К этому добавлению также стоит добавить возможность в некотором смысле произвольного (но ограниченного) назначения пинов для периферии — то есть SPI, USART, I2C можно врулить не туда, куда пожелали создатели чипа, на туда, куда удобнее развести дорожки.

Руководство, страница 122
На STM32 при тактирования от внутреннего RC генератора и соответствующей настройки PLL, нужно минимум внешней обвязки. Правда с USB без внешнего кварца вы не поработаете…
По поводу пайки, можно легко паять термофеном или нагревая печатную плату с другой стороны чип выравнивается за счет сил поверхностного натяжения припоя
STM хороши и по потолку, и по выхлопу с бакса ценника, но там уже уровень повыше. Об этом тоже забывать не стоит. Да, дешево и эффективно, особенно в руках знающего человека, но не всем оно надо. И уж это не минимализм ни разу.
Вот здесь видео как программят ATTiny.
www.instructables.com/id/Simple-Basement-Security-System/
Скотт Рулит ) как по своему понятному инглишу так и по содержанию.

По мне может и выглядит платка с ATTiny красивее чем нагромождение Duino(пусть минипро) и самопальных шилдов. Но точно дешевле не получится. Последний раз брал Mini Pro за $2,20. И там к слову RAM не какие-то жалкие 512 байт. А целых 2KB!!! ;)))
Все же, зависит от примитивности задачи. Тут вот еще оказывается, что атмега 8 тоже стоит порядка 1$, а там килобайт оперативки, 8 Кб флеша и много ножек.
А для меня критично что из тинек уарт есть только в богоугодной 2313.
Ну опять-таки вопрос задачи. 2313 на ебее находится за $1.6 с фришипом.
С другой стороны, если закупаться на таобао, мини про можно найти за $1.7-$1.8, фридуино уно я за $2.75-$3 находил. но там добавится местная пересылка и процент посредника кроме пересылки к себе, т.е. выгодно если брать много у одного продавца.
Я говорил про DIP корпус. В сопах можно найти дешевле, а уж если брать 5-10, то тем более можно подумать о тао, т.к. в этом корпусе я за 4 юаня штука что ли находил…
Да я сначала написал, а потом подумал. Да, в дипе вкусные цены при более ощутимом количестве, типа как в следующем моем ответе.
Не забываем что 2313 не имеет АЦП… А то потом куча поисковых запросов вижу на свой сайт что-то типа «настройка АЦП attiny2313»…
2313 устарела настолько, что ей место в палеонтологическом музее.
Помню времена, когда AVR называли «PIC-контроллеры системы AVR». Думаю скоро появятся «Как Ардуино, но stm32».
Да, причем есть нечто нано-образное за 4$. Закажу поиграться, вдруг понравится.
Обалдеть. Они даже IDE клонировали.
И библиотеки, вроде, портируются. Wire и LiquidCrystal, во всяком случае, есть готово-портированные. Надо пощупать.
В простых проектах совместимо. bootloader отличный! легко адаптировал его к своему проекту пару лет назад
и еще есть netduino, там на (micro)dotnet и visual studio
и еще есть конкурнетская mbed от NXP там вообще онлайновая IDE
На любой вкус и цвет, правда цены в.ру кусаются
Ну, 60$ за нетдуину — это ценник вообще с другой планеты. Для моргания светодиодами больно жирно.
Абсолютно с вами согласен, но находятся люди готовые отдать по 50 баксов за arduino, возможностей у которой порядком меньше.
Да, есть такое явление. Но это как раз люди «с улицы», есть у меня такое подозрение. Первый раз простительно.
Правильно, потому что PIC = Peripheral Interface Controller, а у Microchip (даже по самому названию фирмы понятно) — туго с фантазией, поэтому они серию микросхем так обозвали — Peripheral Interface Controller 16F82, например, и так далее

Так что всякий чип AVR является Peripheral Interface Controller в первоначальном смысле этого акронима.
Уже и x86 ардуино есть… только дорогая платка и несколько бестолковая в первой версии.
То есть вы просто прикрутили Arduino IDE к голому микроконтроллеру. А зачем? Прелесть Ардуино ведь только и состоит в удобстве его хардвара.
Для меня прелесть Arduino в быстром старте — до идиотизма простая IDE и библиотеки для всяких дисплеев-датчиков-энкодеров. Железо мне не особо нравится, я предпочитаю макетную плату и паяльник.
На самом деле, на простых задачах — ШИМ, АЦП, какая-то несложная внешняя периферия по SPI или I2C — порожек между Arduino IDE и просто C в gcc-avr очень небольшой, а руки переход на голый gcc-avr развязывает сильно.
> руки переход на голый gcc-avr развязывает сильно.

А что там такого можно найти?
Использование любых AVR, в первую очередь, без плясок «как же к этому ардуиновский IDE прикрутить». Хочу — ATtiny 25, хочу — ATMega32U4.

Ну и большая скорость, меньше занимаемой памяти, больше свободы в оперировании периферией.
> больше свободы в оперировании периферией.

а что оно стандартно не даст?
(пожав плечами) Что угодно, чего не предусмотрел автор конкретной библиотеки.
Там библиотеки — такой же код? Копипастишь и правишь чего тебе не хватает, не?
Нет, такой же код там только в высокоуровневых библиотеках. Всё базовое моментально опускается до обычной для микроконтроллеров работы с регистрами, битовыми масками, вот этим вот всем.
Идиотизм — это действительно подходящий эпитет для данной «IDE»
Особенно когда вместо успешной компиляции в отладочное окно вываливается тонна мусора, который абсолютно никак не парсится. И все ради того, чтобы наглухо закопать под волшебными обертками вполне очевидные вещи — нехитрый набор макросов и запуск avr-g++
Читал. Но мне кажется, что если уж использовать Arduino IDE, то 1 килобайт — это жесть.
Смотря какая стоит задача. Я 100 строк кода забивал в ATtiny13.
Да и учиться экономить всякими способами нужно с самого начала, а то потом будет срыв стека где-то и всё, думай сутками где что не так.
Не может быть за 1$ так как нужна рассыпуха. А главное — для старта ISP и USB-Serial потому 1$ никак…
Думаю, придираетесь. ISP да, нужен. Ну, он и вообще в хозяйстве пригодится, и стоит копейки. USB-Serial не знаю, зачем вы тут упомянули. Рассыпуха — возможно, но зависит от конкретной задачи.
> Не может быть за 1$ так как нужна рассыпуха.

Ну, скажем, для первого проекта — поморгать светодиодом — не нужна. А для чего-нибудь серьёзного она нужна в обоих случаях.

> А главное — для старта ISP и USB-Serial потому 1$ никак…

Я стартовал припаяв к LPT разъёму 5 проводков, поэтому кроме attiny действительно ничего покупать не понадобилось.
Не будем обсуждать стоимость PCI-E LPT-контроллера. :) Действительно, тут от многих факторов и подхода зависит.
Интересно, но купить сложнее, чем валяющиеся на каждом углу AVRки.
Скажите, а ее в какие времена начали выпускать? С виду как будто в «советское» производство, пайки сильно большие)
Откройте ссылочку и посмотрите. Это старая добрая свобода для самопальщиков без заказа плат и не всем доступных SMD номиналов так по 20 на устройство (и гадай потом, куда остатки в лентах девать). Если не нравится пайка — дело ваше. Лут и навес никто не отменял. Кому-то шашечки, кому-то ехать. Те, кому ехать, уже выкладывали тут обзор кодграббера, сделанного в корпусе пульта ДУ на макетке с ЖК-экраном, многие (включая меня) были приятно удивлены. Слабо повторить?
Китайский ISP, по сути, оно и есть, только на меге 8. Ну, плюс кабель и в корпусе.
Кто нибудь может дать ссылки на адекватное, нормальное описание фьюзов и работы с ними?
Сходу: easyelectronics.ru/avr-uchebnyj-kurs-konfiguraciya-fuse-bit.html

Там в общем ничего сложного нет.

Из простого софта для заливки прошивки и конфигурации фьюзов — например, avr8-burn-o-mat.aaabbb.de/avr8_burn_o_mat_avrdude_gui_en.html, я им пользуюсь периодически.
Ой, сколько уже статей в интернете на тему программированию attiny в Arduino…
Может для начального изучения и пойдет, но у attiny такая простая периферия, что там легко на чистом си писать…
Вчера получил несколько штук китайских USBISP V3.02 (это которые новые, без перемычек и без стабилизатора 3,3V).
Определяются как HID устройства. попытка перешить в USBASP не увенчалась успехом — программатор рапорует о том, что не может прошить устройство, IMHO скорее всего залочены какие-то fuse. До этого без проблем перешивал приличное количество USBISP 2.0, 3.0 и 3.01. Быстрое гугление на эту тему обнадеживающих результатов не дало. Есть смысл попробовать прошить fuse указанные в статье?
Программатор должен быть в состоянии хотя бы определить тип контроллера.
Он это делает? Вы используете отдельный внутрисхемный программатор?
Да, конечно, отельный внутрисхемный USB 2 ISP от Prottoss. Прошивал им «китайцев» десятками, а тут засада вышла…
Если программатор читает сигнатуру контроллера, значит можно все фьюзы сбросить (возможно с уничтожением родной прошивки). Если не читает, остается только один способ — внешний параллельный программатор типа такого
Понял, спасибо за наводку. Однако там чип настолько мал, что сам процесс возни с его пайкой наверное дороже выйдет.
А какой там контроллер? Для восьминогих AVR HV-программатор будет попроще, плюс, можно поискать более удобные точки на плате для подпайки.
Засада может быть в том что для контроллера существуют смертельные комбинации фузов, установив которые он может оказаться невидимым для программатора.
Для AVR таких комбинаций нет — контроллер всегда можно восстановить HV-программатором.
Вы размер чипа на V3 плате видели? Можно аппаратно, даже программатор у меня есть, но возня не стоит свеч.
У меня даже не знаю что больше — печаль-обида от купленного китайского г-на, которое может есть маленький шанс превратить в нужную вещь или желание максимально донести до интересующихся, что V 3.02 поделку покупать категорически не нужно.
у 8-ногих нет режима параллельного программирования.
И все же есть такая комбинация когда даже высоковольтный не поможет — когда вывод сброса сконфигурирован как программный вывод и время задержки старта равно нулю. Даже если вход в режим программирования и был бы возможен во время работы программы то программа первым делом прижимает вывод сброса к земле и адьёс амиго.
У восьминогих есть возможность работы с HV программатором. Даташит на Tiny85, страница 155.

По поводу описанной ситуации — нужно разбираться на эксперименте. Не зря вход в режим программирования достигается подачей 12 вольт на RESET и прочими плясками с пинами.
Сложно подать на вывод сброса 12В если он притянут на землю.
Полностью залочить контроллер можно, не помню только в каких errata было такое предупреждение и указана комбинация фузов.
Подача +12 на RESET — это четвертый шаг алгоритма. До этого еще выполняются манипуляции с питанием, тактовым входом и другими ножками. Нужно Errata искать.
Безпроблемное HV программирование подразумевает голый чип.
Это в офиц. документации от Atmel везде прописано.
У них есть высоковольтный последовательный режим программирования (HVSP).
Для HSVP можно использовать:
1) фирменный программатор (например avr dragon)
2) самоделки типа fuse-доктор (их полно всяких в сети)
3) простейшую схемку типа такой
sites.google.com/site/wayneholder/attiny-fuse-reset
Заметка к данной статье на русском we.easyelectronics.ru/digitdroid/attiny13a-s-zavoda---obychnyy-isp-vam-ne-pomozhet.html
Та да… думаю, что вписано туда изначально что-то не то…
Но если это сделали китайцы намеренно, то этим они роют ямку своим новым поделкам ибо народ их больше покупает для переделки в USBasp и для прошивки всяких фич, например I2C master, управление радио-модулями и т.д.

Сейчас вот попробовал ещё раз, тая-же ситуация. Пациент в режим программирования переведен, не впервой.

Лог попытки прошить
builder@citadel:~/usbasp# avrdude -P /dev/ttyACM0 -c avr910 -p m8 -U flash:w:usbasp_from-usbisp.hex -U lfuse:w:0x9f:m -U hfuse:w:0xc9:m

Found programmer: Id = «AVR ISP»; type = S
Software Version = U.2; Hardware Version = 0.2
Programmer supports buffered memory access with buffersize = 128 bytes.

Programmer supports the following devices:
Device code: 0x13 = AT90S1200
Device code: 0x20 = ATtiny84
Device code: 0x28 = AT90S4414
Device code: 0x30 = AT90S4433
Device code: 0x34 = AT90S2333
Device code: 0x38 = AT90S8515
Device code: 0x48 = (unknown)
Device code: 0x4c = AT90S2343
Device code: 0x51 = (unknown)
Device code: 0x55 = ATtiny12
Device code: 0x56 = ATtiny15
Device code: 0x68 = AT90S8535
Device code: 0x6c = AT90S4434
Device code: 0xffffff86 = (unknown)
Device code: 0xffffff87 = (unknown)
Device code: 0x3a = ATMEGA8515
Device code: 0x41 = ATMEGA103
Device code: 0x43 = ATMEGA128
Device code: 0x45 = ATMEGA64
Device code: 0x5e = ATtiny4313
Device code: 0x60 = ATMEGA161
Device code: 0x62 = (unknown)
Device code: 0x64 = ATMEGA163
Device code: 0x69 = ATMEGA8535
Device code: 0x72 = ATMEGA32
Device code: 0x74 = ATMEGA6450
Device code: 0x76 = ATMEGA8
Device code: 0x78 = ATMEGA169

avrdude: error: programmer did not respond to command: enter prog mode
Глупое предположение: не стоит попробовать со скоростью и тактированием поиграть (-b и -B)?
Пробовал, не помогло.
Если есть какие-то конкретные примеры, готов попробовать еще раз.
Не, конкретики нет. Я в этом предположении отталкивался только от того, что у меня ATtiny не шились с настройками по умолчанию, а с -B 5 и выше — легко.
У меня fuse указаны для ATtiny, не для программатора (мой на mega 8). Не могу вам дать какого-то внятного совета, ибо опыта пока мало.
Я могу сказать, что программирую свои ATTiny4x/5x через USBTiny ISP (стоимостью $5) просто из Arduino IDE без всяких граблей! Ставишь библиотеки для Arduino, выбираешь правильный контроллер из списка, и готово — при дефолтных fuse'ах.
Может быть, мне не повезло с программатором или партией контроллеров. Потому что вторые грабли, как я понял, мало распространены.
У меня ситуация обратная. Раньше сидел на ATmega8 и 48, покупал их много, все проекты были на них. Когда вышла в свет Arduino отнесся к ней скептически, не понимал почему столько шума вокруг этой отладочной платы. Время шло, проекты усложнялись, и в итоге стало мало флеш памяти. Принял решение пересаживаться на ATmega328, причем в составе Arduino Pro Mini за $2.5 и считаю это выгоднее! Большой спрос на Arduino сделал свое дело, за эти деньги получаю не только чип но и полно нужных деталей: кварцевый резонатор, стаб, гребенку контактов, кнопку и т.д. Все детали с Arduino идут в дело! На мой взгляд в составе Arduino выходит дешевле, чем покупать все по отдельности.
Эффект люто массового производства. Действительно, Pro Mini заметно дешевле используемой рассыпухи по розничным ценам.
> устанавливаю резистор в 10 КОм между плюсом питания и выводом RESET (т.к. сигнал сброса низкого уровня).
Это лишнее — в МК уже есть встроенный подтягивающий резистор на RESET.


Да, вы правы. Такую рекомендацию люди в интернетах откуда-то придумывают, а я в даташит заглянуть поленился.
Atmel очень любит городить в своих документах "истину где-то рядом". В одном документе понапишут одно (вы как раз показали картинку), что вроде как резистор есть. В другом документе нарисуют его уже снаружи контроллера и подпишут «рекомендуемая схема, внутренний резистор слабый и не гарантирует стабильность».
Это, собственно, из даташита. Т.е., алгоритм такой — делаем по одной доке, получаем косяк, гуглим его, находим другую доку, исправляем.
А как вам такое — противоречивые сведения на соседних страницах? На странице 27 написано, что АЦП в глубоком сне не тактируется, а на странице 28 — что он тактируется во всех режимах сна.
Такие вот они затейники, эти товарищи в Atmel.
Это совсем не лишнее — без резистора контроллер будет ловить помехи из окружающей среды и произвольно сваливаться в RESET.

The reset line has an internal pull-up resistor, but if the environment is noisy it can be insufficient and reset can therefore occur sporadically. Refer to datasheet for value of pull-up resistor on specific devices.

This pull-up resistor makes sure that reset does not go low unintended.
Линия RESET имеет встроенный подтягивающий резистор, но в зашумленной окружающей электромагнитной среде его может быть недостаточно. Сверяйтесь с даташитом для того, чтобы правильно выбрать номинал резистора.

Этот резистор позволяет гарантировать, что сброс не произойдет случайно.

Оригинальный документ, страница 4.
Я правильно понимаю, что помеха с перезагрузкой может произойти, например, в момент переключения выходов микроконтроллера, когда какое-то время начинает идти приличный ток и «земля» плывет?
Да, может. Тут ещё от грамотной разводки зависит. Но больше всего вероятность этого — если на плате есть мощные коммутирующие элементы + индуктивная нагрузка, например драйвер электродвигателя, реле, и т.д.
Часто при проектировании таких устройств даже внешний резистор не ставят, а тупо сажают RESET на VCC в финальном варианте, это исключит возможность внутрисхеммного программирования (контроллер впаивается уже прошитый), но повысит надёжность.
О. А можно же просто джампер поставить. Снял, запрограммировал, вернул на место. Хотя, если контроллер в колодке и вставляется запрограммированным, ISP можно вообще не разводить.
Ну, джампер опять же подразумевает, что устройство будет перешиваться/ремонтироваться.
Вспомнилось — мне однажды приходилось в одном проекте участвовать, там код в МК примитивный, да и устройство в принципе тоже, но работало в скважине. Плата целиком заливалась мягким герметиком, монтировалась в корпус, а потом эпоксидной смолой. То есть в принципе не ремонтопригодное и не разборное устройство, вот там такой подход применяли.

Потом ещё несколько раз видел в серийных изделиях, там тоже понятно — лишний резистор в партиях из десятков тысяч экземпляров нафиг не нужен, да и на цену влияет.
Да понятно. Я-то просто мыслю категориями штучного самопала, где нет смысла экономить на резисторе, а вот оставить возможность допиливания более чем полезно.
Джампер — это механический контакт, а механический контакт — проблемы с окислением, отвалом и прочими пакостями. Это если устройство эксплуатируется в ужасных климатических условиях, вроде улицы, подвала, чердака и подобного.
Ну, в таких условиях понятно, что надо запаивать и заливать, оставив наружу торчать один металлический разъем с накидной гайкой.
Статья с заголовком «Arduino за 1$» о том, что Arduino на самом деле и не нужна. Я во всём согласен с автором и поддерживаю использование «голых» микроконтроллеров, но сам заголовок вызвал смешанные эмоции. Похоже, что слово «Arduino» уже стало синонимом слова «микроконтроллер». И это меня огорчает.
Посыл статьи немного другой. Arduino — это комплексное явление, а не отдельная железяка. И если хочется использовать субъективно удобную (из-за простоты) IDE и имеющиеся community-наработки для решения простейших задач, как-раз таки не обязательно использовать избыточное и относительно дорогостоящее «родное» (или совместимое) железо.

Понятно, что следующий (логичный и практически неизбежный) шаг, до которого осталось чуть-чуть, это переход на «нормальный» C, но акцент, все же, не на этом.
Думаю, что после перехода на «нормальный» Cи Вы уже не будете считать IDE от Arduino удобной и простой. Да и библиотек под голый AVR точно так же полно.
Скажу по секрету, только тс-с-с. У меня Arduino прицеплено к Sublime, и код я пишу в нем :)
Да, это стоя и в гамаке. Но что-то пока никак не соберусь с духом.
Сколько синей изолентой аквариум к пылесосу не приматывай, моющим он не станет, факт!
Смотря каким образом его примотать…
У Atmel прекрасная IDE, зачем отказываться от Ардуино но оставлять от него IDE??!
Ещё сильно дешевле получится, не нужно будет изворачиваться с программатором через программатор.
Я кстати купил в Китае высоковольтный за 1500 р и очень им доволен, гораздо быстрее ISP-шки.
Мне нравится минимализм. Его в Arduino хватает.
Программатор через программатор — это только один раз. Поскольку ISP прислали не той породы.
Ну, 1500 — это тоже немало, китайский ISP почти на порядок дешевле.
Для сравнения у нас они от 14 тысяч.
Можно вообще бесплатно через LPT порт =)
О каком минимализме речь? Хоть Atmel Studio и сделана на базе MSVS, но никаких наворотов там нет. Зато прекрасный отладчик есть.
Заливать можно той же самой дудкой, если вы предпочитаете ISP.
Плюс ASM. Я предпочитаю его.
Ну, про халявные пять проводков писали уже, это ультрабомж-стайл :)
О минимализме, прежде всего, интерфейсном.
Отладчик — это, конечно, аргумент. Но, не все сразу.
О минимализме, прежде всего, интерфейсном.

Любимый редактор + компилятор + дудка.
Настраивается всё за пару минут.
Не спорю, я на днях это проделал.

Здравствуйте! Я новенький в МК. Хотел спросить можно ли с ATtiny85 вызывать Serial.write(), то есть общение с ПК, и какой протокол (может быть SPI) отвечает за это?!

Вот через SPI можно общаться, либо тупо через GPIO. Там нет UART.

Sign up to leave a comment.

Articles