ATtiny85: микроконтроллер, который дает много возможностей …

image Внимание! Данный урок опирается на информацию из предыдущего урока о программаторах. Обязательно изучите сначала его. В прошлом уроке я рассказывал о том, как загрузить прошивку в Ардуино, используя внешние устройства: USB-TTL преобразователь и ISP программатор. Как нетрудно догадаться, при помощи этих же инструментов можно загрузить прошивку и в голый чип, будь то ATmega328 или ATtiny85. МК серии ATtiny являются младшими братьями АТмег, у них меньше ног, меньше памяти, меньше интерфейсов и таймеров, но зато они дешевле и хорошо подходят для мелких проектов. Давайте сравним несколько популярных МК:

МК/spec ATmega328 ATtiny85 ATtiny13
Flash 32k 8k 1k
SRAM 2k 512b 64b
EEPROM 1k 512b 64b
Цифр. Ног 23 6 6
Аналог. Ног 8 4 4
Таймеры 3 2 1
SPI + +
UART +
I2C + +
Цена 95р 70р 20р

Примечание: большинство функций объединены на одних и тех же пинах. Как вы можете видеть, чем дешевле МК, тем меньше у него возможностей. Полное подробное сравнение можно глянуть здесь. Для подключения прошиваторов к голому чипу нам нужно будет изучить распиновку (pinout) на нужный микроконтроллер. Распиновки бывают цветные и красивые (часто с ошибками), а бывают более серьёзные и правильные. Лучше всего открыть даташит на нужный МК и на второй же странице найти 100% правильную распиновку. Например для ATmega328, ATtiny85 и ATtiny13:

image

      На данных “схемах” подписаны все функции пинов МК. Чтобы загрузить прошивку через USB-TTL, то есть при помощи “живущего в памяти” загрузчика (bootloader), МК должен иметь на борту аппаратный UART, то есть пины RX и TX. Если таких пинов нет – прошивку можно загрузить только через ISP программатор. Вы спросите, а как же Digispark? Там стоит МК ATtiny85, у которого нет UART, но прошивка загружается через USB! Верно, но там хитрые разработчики сделали не менее хитрый загрузчик, который имитирует USB, и прошивка на Digispark загружается при помощи специальной программы, которая запускается в фоне, когда вы нажимаете кнопку “Загрузить” в Arduino IDE. Резюмируя для общего случая:

  • Если в МК прошит загрузчик (bootloader) и на борту имеется аппаратный UART (пины RX TX), прошивку можно загрузить через USB-TTL “загружатор”, также через него можно заниматься отладкой кода при помощи Serial.
  • Если в МК нет пинов RX TX, значит прошивку можно загрузить только при помощи ISP программатора, да и о загрузчике в целом можно забыть, не нужен он. Отладкой всё ещё можно пользоваться, подключив USB-TTL и подняв на МК “программный” UART. Например в ядре для ATtiny85 (об этом ниже) уже идёт встроенный SoftwareSerial и можно им пользоваться.

Программатор, или Ардуину в качестве программатора, подключить очень просто. Смотрим распиновку и подключаем:

  • Шину ISP: пины MOSI, MISO и SCK. Они есть на всех МК
  • Сброс RST
  • Землю GND. Любую из имеющихся, они соединены внутри МК
  • Если МК не питается от своего источника, подключаем заодно VCC

Например ATmega328p подключаем к USB ASP (обсуждали в прошлом уроке) 6-пин вот так:   Примечание: да, другие компоненты не нужны. Новый (из магазина)  МК тактируется от внутреннего генератора на 8 МГц и может без проблем прошиваться прямо так как на схеме выше. Тиньки к тому же USB ASP подключаются так:   Для удобства я использую макетку-дигиспарк, на которой разведены пины как раз под ISP 6-пин хэдер: втыкается выпирающим “ключом” в сторону МК. В плате выведены 8 пинов, нам нужны верхние 6 (на фото видно не запаянные пины ниже штекера). Купить можно тут.   Также можно прошивать МК через Arduino (Arduino as ISP, обсуждали в прошлом уроке). Схема для ATtiny85:   Примечание: конденсатор нужен обязательно! Подключили. Что дальше? Дальше мы уже можем работать с фьюзами через программу avrdudeprog (обсуждали в прошлом уроке), выбрав в списке соответствующий программатор и в списке МК – соответствующий МК. Также через эту программу можно загрузить скомпилированный “бинарник” – файл прошивки. Но нас всё-таки интересует работа через Arduino IDE. Для того, чтобы работать с Attiny через Arduino IDE, нам нужно установить так называемое ядро, или как оно называется в самой IDE – плату. Для ATmega328 у нас уже есть стандартное ядро, например плата Arduino NANO. Но тут есть нюанс: внутренние настройки “платы” NANO рассчитаны на работу с загрузчиком (bootloader) и с внешним тактированием 16  Мгц, то есть лучше не рисковать и установить ядро, которое поддерживает работу без загрузчика и с возможностью выбора частоты, чтобы иметь полный контроль над платой. Могу посоветовать вот эти:

  • GyverCore – ядро для ATmega328, которое разработали мы с коллегой. Лёгкое и быстрое, возможность работы без загрузчика и широкий выбор вариантов тактирования. Ссылка для менеджера плат: https://alexgyver.github.io/package_GyverCore_index.json
  • MiniCore – ядро для поддержки и расширенной настройки МК ATmega328, ATmega168, ATmega88, ATmega48 и ATmega8. Ссылка для менеджера плат: https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json
  • ATTinyCore – ядро для поддержки и расширенной настройки МК ATtiny 441/841, 44/84, 45/85, 461/861, 48/88, 828, 1634, 87, 167. Ссылка для менеджера плат: http://drazzy.com/package_drazzy.com_index.json
  • MicroCore – ядро для поддержки и расширенной настройки МК ATtiny13, ATtiny13A и ATtiny13V. Ссылка для менеджера плат: https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
  • megaTinyCore – ядро для поддержки и расширенной настройки МК ATtiny 3217, 1617, 817, 417, 3216, 1616, 816, 416, 1614, 814, 414, 214, 412, 212, 1607, 807, 1606, 806, 406, 1604, 804, 404, 204, 402, 202. Новые модели шьются по UPDI, по этой теме читайте отличную статью на русском языке. Можно сделать программатор из обычной Ардуины – читай тут. Данное ядро можно установить через менеджер плат, ищите по названию Arduino megaAVR board package, никаких ссылок вставлять не нужно.
  • MightyCore – ядро для поддержки и расширенной настройки МК ATmega8535, ATmega16, ATmega32, ATmega164, ATmega324, ATmega644 и ATmega1284. Ссылка для менеджера плат: https://mcudude.github.io/MightyCore/package_MCUdude_MightyCore_index.json
  • MegaCore – ядро для поддержки и расширенной настройки МК ATmega64, ATmega128, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90CAN32, AT90CAN64 и AT90CAN128. Ссылка для менеджера плат: https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json

Как установить ядро: идём в Файл/Настройки и вставляем ссылку в окно дополнительных ссылок для менеджера плат   Далее идём в Инструменты/Плата/Менеджер плат… и находим нужное ядро. Устанавливаем   После этого в списке плат появится новое семейство плат/МК на выбор. Я буду работать с ATtiny85   Нас интересует меню Clock – тактирование. ATtiny85 интересна тем, что может тактироваться от внутреннего источника на 8 МГц, но также может его “умножить” на 2 и получится 16 МГц, этот вариант называется 16 MHz (PLL). Это очень круто, потому что голый чип будет работать с почти максимальной скоростью, что делает его ничуть не хуже той же Arduino Nano. Выбираем программатор из списка (я буду прошивать при помощи USB ASP). Однократно выполним Инструменты/Записать загрузчик, чтобы применить настройки тактирования:   Про остальные менюшки и варианты можно догадаться из их названия, или почтить подробное описание на GitHub по ссылкам выше. Итак, что же даёт нам ядро помимо выбора настроек МК? Можно программировать МК всё теми же командами, что и раньше! Мигать светодиодами через digitalWrite, измерять напряжение через analogRead и прочее прочее. Давайте напишем классический Blink:

void setup() {    pinMode(PB3, OUTPUT);  }    void loop() {    digitalWrite(PB3, HIGH);    delay(500);    digitalWrite(PB3, LOW);    delay(500);  }

PB3 – это номер пина, прямо как на распиновке. Всё! Осталось загрузить прошивку. Для этого нажимаем Скетч/Загрузить через программатор:   Я подключил светодиод через резистор на 220 Ом и он мигает два раза в секунду, всё как написано.   Что следует помнить при работе с тиньками: у них мало памяти, а все вот эти Ардуино-функции являются кошмаром индуса и занимают очень много места в памяти. Если тини85 ещё как-то переживёт такие издевательства и сможет уместить в себе вполне интересный проект из Ардуино-функций, то в тини13 уже сложно уместить что-то серьёзное. Напомню: всего 64 байта оперативной памяти и 1 кб флэша! Для перехода на 13-ые тиньки рекомендуется научиться работать с МК напрямую, при помощи даташита и регистров. Я думаю вы поняли, что в целом работа с голыми МК не особо то и отличается от работы с обычной платой Arduino, и теперь можно переходить к сложным самоделкам на базе своей платы, в центре которой будет стоять микроконтроллер. Давайте поделюсь парой советов по минимальной обвязке. Зачем делать проект на своей плате и голом микроконтроллере?

  • Конечно же размер, своя плата получится компактнее в большинстве случаев.
  • Энергопотребление. Ни для кого не секрет, что всякие удобные штуки на плате ардуино потребляют огромный по меркам энергосбережения ток, и для автономного устройства лучше взять голый камушек.
  • Работая с голым камнем мы можем выбрать микроконтроллер под свои задачи. Например для мелкого проекта необязательно брать 328 мегу, если с задачей справится аттини13, которая стоит 20 рублей.
  • Возможная экономия. Ардуино нано стоит условно 170 рублей без доставки. Голая 328 мега на том же алиэкспресс – 100 рублей. Если брать десяток. В дорогущем российском чип и дип – 190 рублей. То есть если очень приспичит – можно и тут купить без особых потерь, потому что оригинальная нано стоит 3 тысячи рублей в том же ЧИДе.
  • Удобство разводки платы. Микросхема в корпусе под поверхностный монтаж находится на одном слое и не мешает дорожкам на другом слое.
  • Удобство монтажа. Даже если делать свою плату прототип лутом, то припаять на неё чип в 100 раз удобнее и быстрее, чем сверлить три десятка отверстий под ардуину, а потом их запаивать.
  • Мелкосерийное производство готовых или почти готовых плат, для себя если нужно несколько или на продажу. На том же jlcpcb можно заказать изготовление плат с распайкой внимание smd компонентов. То есть ардуину вам никто не припаяет, а вот ту же 328 мегу припаяют за 100 рублей, тиньку 13ю – за 35 рублей, а чем больше партия – тем дешевле. К этому вопросу мы вернёмся ближе к концу этого урока.

Итак, я на личном опыте убедился, что МК способен работать вообще без какой-либо обвязки. Это был проект “Читалка файлов с SD карты” на базе ATmega328. Проект достаточно непростой: МК читал текстовые файлы с карты памяти microSD и выводил их на OLED дисплей. Никаких лишних компонентов на плате нет, МК тактируется от внутренних 8 МГц и всё работает отлично. Даже карта памяти подключена напрямую к МК =) Но в надёжных устройствах делать так не рекомендуется! Что следует помнить и делать по возможности:

  • Соединять все ноги VCC максимально толстыми дорожками между собой
  • Соединять все ноги GND максимально толстыми дорожками между собой (а ещё лучше делать заливку полигоном GND)
  • Поставить керамический конденсатор (~100 нФ) по питанию МК (между VCC и GND) максимально близко к пинам питания
  • Поставить электролит или тантал на 10-47 мкФ по питанию. Особенно если МК питается от одного источника с другими потребителями
  • Рекомендуется подтягивать пин RST к питанию (VCC) резистором на 10 кОм
    • Если нужна кнопка сброса (reset), цепляем её к RST и на GND
  • Если нужен внешний тактовый генератор – подключаем его между пинами XTAL1 и XTAL2 (см. распиновку своего МК), и оба пина подключаем к GND через керамические конденсаторы на 18-22 пФ (схема ниже)
    • Не забываем в настройках платы или напрямую во фьюзах поставить внешнее тактирование. ВНИМАНИЕ! Если фьюзы настроены на внешнее тактирование и внешний генератор не подключен к пинам – вы не сможете прошить МК даже при помощи ISP программатора!

Например как-то так, питание соединяем, плюс пара конденсаторов и подтяжка RST:   Схема подключения внешнего осциллятора (если нужен). Пины 9 и 10 тут соответственно XTAL1 и XTAL2   Я думаю теперь вы готовы к созданию проекта на своей плате! Напомню, что источник тактирования играет важную роль при загрузке прошивки. Микроконтроллер может быть настроен на тактирование от внутреннего генератора на 8 МГц, либо на тактирование от внешнего.

  • При работе от внутреннего генератора МК запускается и работает просто при подаче напряжения, готов прошиваться как через UART (при наличии загрузчика), так и через ISP.
  • При настройке на работу от внешнего генератора МК сможет работать и прошиваться только при подключении внешнего генератора. То есть если генератор физически не подключен к МК – его нельзя будет прошить даже через ISP.

Это же касается переноса микроконтроллера с платы Ардуино на свою плату: на Ардуино стоит кварц. Если на вашей плате есть кварц для МК – всё будет работать сразу. Если на вашей плате нет кварца – перепаянный с Ардуино МК не будет работать и прошиваться. Для переноса МК с платы Ардуино на свою плату (без кварца) нужно настроить МК на внутреннее тактирование, об этом мы говорили в прошлом уроке. Для этого нужно подключить к плате программатор (USB-ASP или Arduino as ASP) и прошить фьюзы

  • Вручную через Avrdudeprog, выставив нужное во встроенном калькуляторе фьюзов.
  • Вручную через Arduino IDE, сконфигурировав и выставив фьюз-байт вручную в boards.txt.
  • Автоматически через конфигурацию ядра. Для Arduino Nano это может быть GyverCore или miniCore, там в меню платы есть пункт Clock -> Internal 8 MHz. В Arduino IDE жмём “Записать загрузчик” и прошиваются новые фьюзы, после чего можно выпаивать МК и запускать/прошивать его уже без кварца.
  • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макро, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
  • Поддержать автора за работу над уроками
  • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту (alex@alexgyver.ru)

Плата Arduino Attiny85 из серия Attiny – младшей линейки микроконтроллеров Atmel, имеющая урезанные по сравнению с ATmega чипы.

Официальное семейство плат ардуино было очень расширено сторонними производителями и энтузиастами в программировании микроконтроллеров. Чтобы понять, почему это произошло, нужно разобраться в том, что такое Arduino.

Платформа представляет собой плату с микроконтроллером и необходимой обвязкой, но сама суть заключается в наборе библиотек и языка Wiring, который позволяет создавать скетчи в простом и понятном виде.

Характеристики ATtiny

В таблице мы приводим основные характеристики плат ATtiny:

ATtiny 44 ATtiny 84 ATtiny 45 ATtiny 85 Примечание
Макс. частота, МГц 8 8 8 8 От внутреннего генератора
RAM, байт 256 512 256 512
Flash, Кб 4 8 4 8
I/O выводов 11 11 5 5 RESET не считаем
Цена, $ 1.66 1.8 1.49 1.69 Розница DigiKey, просто для сравнения

Распиновка Arduino Attiny85

Распиновку arduino attiny85 можно увидеть ниже, нажмите для увеличения схемы:

Еще одна схема, которая вам может пригодиться:

Плата Digispark с Arduino Attiny85

Совместимые платы могут как превосходить по характеристикам и размерам стандартные ардуино, так и быть меньше их, как было сказано выше. Отличным примером такой платы будет Digispark.

Характеристики платы довольно скромные, она поставляется с микроконтроллером, подготовленным для работы, arduino attiny85 – он представлен в восьминогом корпусе SOIC или более крупных размеров – DIP8. Характеристики весьма непритязательные:

  • постоянной памяти – 8 Кб, для программного кода и 512 для исполняемого;
  • так как доступно всего 8 выводов (ножек), вычтем две плюс и минус питания – получится 6 цифровых пинов, из которых 4 – это ADC и 2 PWM (ШИМ);
  • доступно только аппаратное прерывание;
  • контроллер работает на частотах от 1 до 20 МГц;
  • в зависимости от конкретного чипа напряжения питания различны от 1.8 до 5.5 Вольт;
  • в режиме энергосбережения потребляет мизерный ток в 0.1 мкА, при самом низком напряжении питания в 1.8 Вольт.

У оригинального digispark интересная конструкция, для его прошивки не нужно использовать micro USB кабель или USB-UART. Плата разведена таким образом, что, просто вставив ее в USB порт вашего компьютера, вы получите возможность программировать микроконтроллер.

Плата не только маленькая, но и очень простая – её сборка не займет много времени, и совершенно не составит труда для начинающих. Как собрать клон digispark своими руками мы расскажем немного позже.

Что нужно знать дополнительно

Определение: скетч – это программа, которая зашивается в память ардуины.

Сам по себе язык wiring – это не язык программирования в привычном виде, это надстройка над языком C. Удобоваримость и простота кода достигнуты за счет написания множества библиотек для работы с периферией и задержками. Последние задаются в количестве миллисекунд или микросекунд – ранее это было не столь явно, а в ассемблере и вовсе приходилось считать количество тактов, за которые выполняется один машинный цикл микроконтроллера, а потом производить бесполезные вычисления для формирования простоя системы на заданное время.

Чтобы упростить этот процесс и был придуман простой для понимания язык и Arduino IDE – среда разработки. Однако многие любители не останавливаются на достигнутом и переходят на уровень языка C.

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

О возможностях среды разработки

Arduino IDE имеет встроенный набор плат и микроконтроллеров, с которыми можно работать; в её основе лежит классический программатор AVR, кстати, благодаря ему и можно обращаться к устройству командами на Си.

Однако не всегда удобно и рационально использовать предложенные микроконтроллеры. Согласитесь, что глупо брать плату с парой десятков выводов для работы с 1 датчиком и 1 исполнительным механизмом, в роли которого может быть:

  • сервопривод;
  • транзистор;
  • светодиод;
  • соленоид и т. д.

Поэтому сторонние разработчики создали целый ряд совместимых плат. Работать с ними можно через Arduino IDE, используя простые команды встроенного языка. Для этого были переписаны загрузчики и библиотеки команд.

Как сделать очень маленькую Ардуино своими руками?

Саму плату Arduino версии UNO, например, можно использовать, как универсальный программатор. Вы можете легко запрограммировать с помощью arduino attiny2313 и другие МК семейства AVR и МК иных производителей. Сама серия Attiny, как вы можете увидеть из названия, – младшая линейка микроконтроллеров Atmel, имеющая урезанные по сравнению с ATmega чипы.

Стоит отметить! Многие микроконтроллеры младшей, tiny, серии имеют аналогичную цоколевку, как, например, Tiny13/25/45/85 совместимы.

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

Arudino ISP – проект, который превратит вашу платформу в программатор. Для этого нужно в плату UNO загрузить скетч и использовать её для прошивки.

Сам термин ISP – расшифровывается, как «внутрисистемное программирование», то есть прошивка чипа уже в непосредственно собранной схеме – такая методика применяется не только в любительских конструкциях, но и для корректирования программного обеспечения готовых блоков промышленного производства и бытовой техники.

Прошивка, которая превратит вашу ардуину в ISP программатор, поставляется в наборе примеров Arduino IDE. Подключите вашу плату к компьютеру и выберите File-examples-Arduino ISP. После чего залейте скетч в Arduino.

На картинке указаны назначения пинов ардуино и их расположение на контроллерах в DIP корпусах, для прошивки соедините одноименные выводы на микроконтроллере и ардуине.

При желании можно повторить опыт предшественников и сделать такой шилд для UNO.

Вот печатная плата

Пояснения будут излишними – проявите фантазию и воплотите это на текстолите.

Чтобы прошить attiny с Arduino IDE нужно предварительно добавить библиотеки для их поддержки, в стандартном варианте поддерживаются только atmega. Добавляем в директорию «C:Users*имя пользователя*DocumentsArduino» папку hardware, в неё – папку tiny из архива, который можно найти здесь (ссылка на открытый ресурс https://code.google.com/archive/p/arduino-tiny/).

После этого в папке tiny находим файл Prospective Boards.txt и удаляем из его название первое слово «Prospective».

На картинке изображены настройки и список плат. Не забудьте выбрать программатор «Arduino ISP».

Программатор готов.

При прошивке attiny код будет легче, чем в UNO, некоторые функции урезаны, вам доступны:

  • pinMode()
  • digitalWrite()
  • digitalRead()
  • analogRead()
  • analogReference(INTERNAL) / (EXTERNAL)
  • shiftOut()
  • pulseIn()
  • analogWrite()
  • millis()
  • micros()
  • delay()
  • delayMicroseconds()

Что мы получаем?

Теперь вы получаете аналог digispark, но размеры его сократились до размеров одного чипа; припаивайте периферию, и ваше устройство готово! Вы можете сделать дешевую arduino attiny13 с объемом памяти в 1024 байта, для простейших мигалок и датчиков.

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

Эмулятор RFID

2020-08-25 в 10:09, , рубрики: ATtiny85, avr, diy или сделай сам, RFID, rfid-метки, Блог компании RUVDS.com, ненормальное программирование, программирование микроконтроллеров, схемотехника, хаки, эмулятор

Эмулятор карт EM Marine

Наверняка каждому из нас, кто хоть раз бывал в обычных офисах, было интересно, как же функционируют эти бесконтактные пропуска. В данной статье мы разберёмся с принципом работы бесконтактных карт и сделаем эмулятор буквально из трёх радиодеталей. Читать полностью »

Звезда-трансформер на ёлку

2019-12-12 в 23:31, , рубрики: 28BYJ-48, ATtiny85, diy или сделай сам, WS2812, гаджеты, звезда, Новый Год, Разработка под Arduino, шаговый двигатель

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

Используемые материалы:

  1. Оргстекло для торцевой подсветки
  2. Шаговый двигатель 28BYJ-48
  3. Драйвер на микросхеме ULN2003
  4. Микроконтроллер ATTINY85
  5. Светодиодная лента WS2812

Читать полностью »

Хакер впаял жучок в материнскую плату брандмауэра Cisco: он говорит, что это может повторить любой электронщик-любитель

2019-10-14 в 9:55, , рубрики: ATtiny85, diy или сделай сам, supermicro, закладка, имплант, информационная безопасность, Компьютерное железо, Производство и разработка электроники, Электроника для начинающих

Обратная сторона материнской платы брандмауэра Cisco ASA 5505 с пятимиллиметровой микросхемой Attiny85, которую установил аппаратный хакер Монта Элкинс, источник

tl;dr Исследователь показал, насколько легко и дёшево можно установить шпионскую микросхему в компьютерное оборудование, внедрившись в цепочку поставок. Если вкратце: посылка или контейнер с компьютерным оборудованием перехватывается, аккуратно вскрывается. На материнскую плату сервера (или в мобильный телефон, или в другое железо) впаивается запрограммированный чип — и посылка отправляется дальше адресату, как ни в чём не бывало. Теоретически, жертвой может стать любой покупатель товаров из интернет-магазина, если его посылка передаётся по открытым каналам, и любая компания, которая заказывает оборудование у стороннего поставщика, а не изготавливает его самостоятельно (то есть просто любая компания).

Ещё легче установить жучок на этапе производства. Читать полностью »

Генерация звука на микроконтроллерах AVR методом волновых таблиц с поддержкой полифонии

2019-09-04 в 7:01, , рубрики: arduino, ATMEGA328P, ATmega8, ATtiny45, ATtiny85, avr, C, MIDI, звук, звук и музыка, микроконтроллеры, микроконтроллеры avr, музыка, программирование микроконтроллеров, Синтезатор

Микроконтроллеры AVR довольно дешевы и широко распространены. Наверно, с них начинает почти любой embedded разработчик. А среди любителей правит балом Arduino, сердцем которого обычно является ATmega382p. Наверняка многие задумывались: как можно заставить их звучать?

Если посмотреть на существующие проекты, то они бывают нескольких типов:

  1. Генераторы квадратных импульсов. Генерация с помощью ШИМ или дергать пины в прерываниях. В любом случае, получается очень характерный пищащий звук.
  2. Использование внешнего оборудования типа MP3 декодера.
  3. Использование ШИМ для вывода 8 битного (иногда 16 битного) звука в формате PCM или ADPCM. Поскольку памяти в микроконтроллерах для этого явно не достаточно, то обычно используют SD карту.
  4. Использование ШИМ для генерации звука на основе волновых таблиц, подобных MIDI.

Последний тип для меня был особенно интересен, т.к. почти не требует дополнительного оборудования. Представляю сообществу свой вариант. Для начала небольшое демо:

Заинтересовавшихся прошу под кат. Читать полностью »

Программная реализация усилителя класса D

2019-06-10 в 3:59, , рубрики: ATtiny85, DIY, diy или сделай сам, звук, программирование микроконтроллеров, усилитель класса D

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

Программная реализация усилителя класса D позволяет менять его параметры (частоту ШИМ, скважность в режиме покоя) сменой прошивки.Читать полностью »

Последний фонарик устал или Спасет ли беларуса фликер (upd. спиннер ?)

2019-05-13 в 20:56, , рубрики: arduino, attiny 13, ATtiny85, beacon, Blinking LED, diy или сделай сам, Flashing Driver, flicker, LED Flasher, LilyPad, LilyTiny, LM3909, M34, pet led, pic10f, QX5252F, reflector, безопасность на дорогах, катафот, коэффициент силы света, КСС, Лайфхаки для гиков, маячки, микропризмы, Носимая электроника, повышенная видимость на дороге, световозвращатель, фликеры, Электроника для начинающих

Каждый свядомы (ну и другой тоже) белорус знает что такое фликер. Вне зависимости от социального положения, возраста, пола и т.д. Естественно, что даже в шутках неоднократно эту тему обыгрывали. Казалось бы, с таким подходом к делу, смертность на ночных дорогах в Беларуси должна была бы стремительно нестись к 0, а потом и вообще остаться только в воспоминаниях. Но жизнь рассудила иначе, все чаще в сводках о ДТП указывалось, что «сбитый пешеход был с фликерами». И дело здесь в том, что продающиеся в каждом ларьке световозвращающие элементы с aliexpress рассматриваются в основном не как элемент экипировки, способный спасти жизнь, а как защита от штрафа ГАИ. Т.е. «лишь бы висел». Не удивительно, что низкокачественные световозвращающие ленты достаточно быстро перестают световозвращать (а часто и сразу не блещут отличными показателями). Имея в наличии активных пешеходящих родителей в маленьком городке я периодически задумывался об их безопасности и пришел к выводу, что вместо того, чтобы зацикливаться на качестве световозвращающих элементов, нужно просто обеспечить мамку и папку активными долгоиграющими световыми маячками. Тема будет полезна не только ночным пешеходам/велосипедистам, но и владельцам домашних питомцев, склонных к ночному бродяжничеству (+ «причем тут вообще спиннер?»). Мои рассуждения на эту тему — смотреть под катом.

Читать полностью »

Две новых минималистических карманных игры

2019-03-15 в 20:57, , рубрики: ATtiny85, DIY, diy или сделай сам, esp8266, запоздалое пятничное, игровая консоль, карманная игра

Пик популярности Arduboy уже позади, но разработка гиками схожих по идеологии минималистических консолей продолжается. И вот перед вами — две новые конструкции авторов под никами Igor и davedarko, увидевшие свет совсем недавно.Читать полностью »

Ностальгия по Half Life — создаем приставку для радиостанции для получения голоса и звука окончания в стиле комбайнов

2019-03-11 в 20:34, , рубрики: atmel, attiny, ATtiny85, DIY, diy или сделай сам, half-life, old school, детство, игры, мечта, Разработка под Arduino, Электроника для начинающих

Когда-то давным-давно, когда деревья были большие, был такой шутер Half-Life, продолжение которого ждут до сих пор — это уже притча во языцах.

Спустя много времени я таки решился осуществить свою мечту. Читать полностью »

Ардуина и светодиод, или как прокачать детский конструктор

2019-01-05 в 15:46, , рубрики: arduino, ATtiny85, diy или сделай сам, Magformers, ws2811, WS2812, программирование микроконтроллеров, Электроника для начинающих

Мой сын крепко “подсел” на магнитный конструктор Magformers. Однажды просматривая серию Фиксиков где фигурировал такой же конструктор ребенок спросил: “Папа, а почему у фиксиков детальки светятся, а у нас нет?”.

Оказалось, что действительно существует набор “Magformers Neon LED Set”, где помимо обычных строительных блоков есть еще и элемент со светодиодом. Поскольку к этому времени у нас уже собрался целый ящик магнитиков всех возможных форм и размеров (как по мне, китайский магформерс ничуть не уступает оригиналу), покупать еще один набор только ради лампочки как-то не хотелось. Тем более, что этот набор стоил ощутимо дороже аналогичного без подсветки.

Прикинув, что компонентов там всего на пару баксов, бОльшая часть из которых у меня уже была, я решил собрать свою моргульку. Да еще и с эффектами, которых не было у оригинала.

Под катом Вы найдете вариант моргалки на ATTiny85 и светодиодной панели на светодиодах WS8212. Я расскажу о схемотехнике, как эту всю штуковину я запитывал от батареи, а также неочевидных проблем, которые я выгреб по пути. Я также в деталях расскажу о программной составляющей проекта. Читать полностью »

Это простой SD аудио плеер на одном микроконтроллере ATtiny25/45/85. У этих микроконтроллеров есть два быстрых ШИМ (fast PWM) выхода с несущей 250кГц. Источником аудио для этого плеера является SD карта памяти. SD карта памяти имеет шесть выводов. Два для питания и четыре интерфейсных. Восьми выводов микроконтроллера достаточно для подключения SD карты, динамиков и кнопки управления.

Железо. На фотографии показан самый маленький аудио плеер в мире (воспроизводит с MicroSD карты). Есть три схемы плеера с различными конфигурациями. Носителем записей, которые будут воспроизводиться, является MicroSD. Конечно можно использовать стандартную SD или MiniSD карту, если подключить их соблюдая распиновку. Динамики подключаются непосредственно к выводам ШИМ микроконтроллера. Не смотря на это выходной ток никогда не превысит максимально допустимые значения, при напряжении питания 3В. Плеер даёт звук достаточный для прослушивания музыки дома, в тихой обстановке. Если требуется подключить плеер к усилителю то необходимо предварительно отфильтровать высокочастотную составляющую с помощью фильтра НЧ. Непосредственное подключение выхода ШИМ на вход усилителя может повредить усилитель и динамики!

Схемы:

Mono

Stereo

Mono (Hi-Res)

Mono (OCL)

Софт. Карта памяти отформатирована под файловую систему FAT. В микроконтроллере заложена программа для работы с этой файловой системой. В качестве основы была использована библиотека Petit-FatFs которая является урезанной версией FatFs. Этот модуль был специально разработан для систем с малым количеством доступной RAM памяти. Это является очень важным параметром при использовании таких крошечных МК как ATtiny25/45/85.

Скачать исходный код на С и прошивки

Источник

63 6

Мне нужно скомпилировать проект C для Attiny85, но не знаю, какой компилятор использовать – по возможности, бесплатно. Is Atmel Studio – хороший выбор?

1 Решение 64

Я много гугл, и почти все пользователи компилируют свои коды с Atmel Studio, или они используют Attiny вместе с Arduino. Поэтому я считаю, что студия Atmel – лучший выбор. Он также включает gcc для компиляции c/c++

Atmel® Studio 6 включает компилятор GCC C и c++, ассемблер и симулятор, а также легко взаимодействует с внутрисистемными отладчиками и программистами, чтобы упростить разработку кода.

108

компилятор

Свободным и лучшим компилятором для AVR является AVR-GCC (в Windows это называется WinAVR).

Он поддерживает ATTiny85 (вот список поддерживаемых устройств).

Поэтому вам просто нужно передать этот параметр компилятору:

-mmcu=attiny85 

Вы можете посмотреть здесь пример Makefile.

Мигающее программное обеспечение

Чтобы загрузить прошивку на чип ATTiny85, вы можете использовать программу AVRDude. Это бесплатное и популярное приложение для мигания чипов AVR. См. Это пример использования.

IDE

Что касается IDE, их там много, но ИМХО два лучших варианта:

Vim: если вы предпочитаете консольные приложения. Особенно хорошо для Linux. Я бы рекомендовал использовать следующие плагины: cscope, CTags, OmniCompletion, NerdTree. Тем не менее, если вы еще не знаете vim, это займет много времени, чтобы изучить его и настроить его правильно (я лично использую vim). Eclipse: если вы предпочитаете приложения с графическим интерфейсом. Он очень гибкий, бесплатный, кросс-платформенный и чрезвычайно мощный. Очень легко настроить Eclipse для разработки AVR (использовать AVR-GCC и AVRDude). Для AVR есть плагин Eclipse. И вы также можете найти множество руководств в Интернете о том, как использовать Eclipse для разработки AVR.

Если вы новичок, я бы сказал – пойдите с Eclipse.

дебаггер

Для отладчика я бы рекомендовал GDB. GDB – бесплатное и очень мощное программное обеспечение для отладки. Легко интегрировать GDB в Eclipse

Также вам понадобится AVaRICE для подключения GDB с JTAG.

Заметка

Все программное обеспечение, о котором я упоминал, является бесплатным, кросс-платформенным и фактически используется для профессиональной встроенной разработки, поэтому вы можете использовать его без дополнительных мыслей. На самом деле, это почти единственный выбор, который у вас есть, кроме IDE (все же, мои коллеги на работе используют в основном Vim и Eclipse, 50/50, поэтому я думаю, что здесь также не так много выбора).

Другое дело, что очень легко перейти на другой MCU (от AVR), если вы придерживаетесь программного обеспечения, указанного выше. Например, для MSP430 существует аналогичная программная цепочка GCC и аналогичное программное обеспечение для вспышек, и, конечно же, GDB. Таким образом, вы можете просто настроить Eclipse на использование msp430-gcc вместо avr-gcc и разработать для MSP430.

Ваш ответ

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий