Attiny85 прошивка: Работаем с ATtiny в Arduino

Содержание

Arduino ISP программатор для ATtiny, Минимальная Arduino

Arduino это просто, быстро, а самое главное удобно для реализации идей. Но когда всё отлажено и схема, и код настает момент, когда избыточность плат просто не нужна. Идею то можно реализовать значительно дешевле и компактнее. Без горы проводов. Для того чтобы избавиться от ненужных примочек в готовом устройстве предлагаем прошить ваш код непосредственно в микроконтроллер. Ниже описан пример, где в качестве программатора используется Arduino Nano, а прошивать будем микроконтроллер ATtiny13 на котором, кстати, собран набор RDC1-0004, Управление вентиляцией.

Распакуйте архив attiny13.zip. В папке со скетчами создайте папку «hardware». Размещение папки со скетчами можно узнать, выбрав «Файл – Настройки».

Из распакованного архива скопируйте папку «attiny13» в папку «hardware». Должно получиться примерно так: «C:\Users\имя пользователя\Documents\Arduino\hardware\attiny13».

Перезапустите Arduino IDE.

Если сделали все правильно, в списке плат появиться строка «ATtiny13(ATtiny13a)».

В списке Frequency можно выбрать нужную частоту работы микроконтроллера.

Чтобы запрограммировать микроконтроллер, нужен программатор. Программатор можно сделать из Ардуино Нано. Для этого в нее нужно загрузить скетч ArduinoISP из имеющихся примеров.

Внимание! Если для ATtiny13 будет выбрана частота менее 1,2 МГц, пример ArduinoISP нужно изменить.

Строку

#define SPI_CLOCK (1000000/6)

нужно заменить на

#define SPI_CLOCK (128000/6)

Подключите Arduino Nano к ПК. В Arduino IDE выберите плату Arduino Nano, процессор ATmega328, нужный COM-порт.

Выберите «Скетч – Загрузка». Начнется загрузка программы.

Дождитесь окончания загрузки. Программатор готов.

Подключите программируемый микроконтроллер к Ардуино, как показано на рисунке.

Теперь в Arduino IDE выберите программируемый микроконтроллер, нужную частоту, COM-порт остается без изменений. Выберите используемый программатор, в нашем случае «Arduino as ISP».

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

Теперь в микроконтроллер можно загружать «рабочую» программу. Откройте скетч, который хотите загрузить, и выберите «Скетч – Загрузить через программатор». Начнется загрузка. Дождитесь окончания загрузки программы.

Если для вашего проекта вы выбрали другой контроллер из семейства ATtiny, тогда загружайте и распаковывайте в папку hardware дополнительные файлы описания.

tiny.zip

tiny Chip_Dip.zip

Схема подключения для ATtiny в корпусе DIP14:

Прошивка Attiny 13 HEX-файлом с помощью Arduino и SinaProg » SYSTOP

Задача: прошить микроконтроллер Attiny 13 HEX-файлом (уже скомпилированной программой).

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

Мы будем использовать Arduino Uno, SinaProg и адаптер (фото ниже) для данного микроконтроллера.


Адаптер можно купить тут: https://ru.aliexpress.com/item/SOIC8-SOP8-to-DIP8-EZ-Programmer-Adapter-Socket-Converter-Module-150mil/32535866779.html?spm=a2g0s.9042311.0.0.274233edOsLvN7Он требуется для того, чтобы избежать пайки проводов на ноги микроконтроллера, ибо это крайне неудобно, особенно в случае многократных перепрошивок.

В нашем случае используется Attiny13 в SMD-корпусе, если вы мучаете микроконтроллер в DIP-исполнении, можно задействовать DIP-панель: https://www.chipdip.ru/product/scs-8. (о типах корпусов микроконтроллеров можно почитать здесь).

И так, поехали: 
Прошиваем Arduino Uno скетчем из стандартных примеров «ArduinoISP»:

Подключаем наш многострадальный микроконтроллер к Arduino согласно картинке ниже (зеленым обозначены пины Arduino):
Для тех, кто в танке — переполюсовки Attiny13 боится, поэтому проверьте внимательно, как подключены GND и 5V!
Скачиваем SinaProg: по этой ссылке
Запускаем от имени администратора (правый клик по exe’шнику — «запустить от имени администратора»).
Далее пошагово:
  1. Выбираем HEX-файл
  2. Выбираем «Device» (в нашем случае Attiny 13)
  3. В качестве программатора выбираем «AVR ISP»
  4. COM-порт смотрим в диспетчере устройств при подключении ардуины
  5. Скорость выставляем 19200
  6. Нажимаем кнопку «Search» — появляется статус «OK» (если нет, значит что-то подключено неверно, либо не прошита ардуина)
  7. Нажимаем кнопку «Program», после прошивки должен появиться статус «OK»
  8. Нажимаем кнопку «Verify» и, опять же, видим статус «OK».
На этом все, мы прошили наш микроконтроллер. В следующих статьях разберем подробнее весь функционал программы и правильное выставление коварных фьюзов=)

аудио плеер с SD на микроконтроллере ATtiny85 MBS Electronics

Этот простой SD звуковой проигрыватель собран на единственном восьмиразрядном микроконтроллере AVR ATtiny85.
У микроконтроллеров этой серии всего восемь ножек и два ШИМ (Fast PWM) с несущей 250kHz. Для управления картой памяти необходимо 6 проводов: два провода для питания и четыре провода для связи с картой. Восемь ножек микроконтроллера вполне достаточно для коммуникации с картой памяти, одной кнопки управления и вывода звука. схема очень проста. Возможно, это самый простой аудиоплеер из существующих.

Железо

На фоторгафии — самый простой в мире звуковой плеер с SD картой. Разработано 4 варианта схемы устройства под разные конфигурации выходного сигнала. В качестве носителя информации используется стандартная SD или MicroSd карта памяти.
Звуковой сигнал снимается с выходов ШИМ. К выходам НАПРЯМУЮ можно подключить динамики. Даже при замыкании звуковых выходов на землю максимально допустимый ток выхода при питающем напряжении 3 вольта не будет превышен. Громкость звучания невелика. Для увеличения громкости необходимо подключить дополнительный усилитель или активные колонки. В этом случае внешний усилитель необходимо подключать через простейший фильтр, чтобы обрезать высокочастотную составляющую сигнал ШИМ. Ни в коем случае не подключайте выход ШИМ напрямуб к усилителю (без фильра) во избежании поврежления колонок или усилителя

Схема 1 .

Моно

Схема 2 . Стерео

Схема 3. Hi-Res (Повышенное качество)

Схема 4 . Моно — мостове включение динамика (OCL. Повышенная мощность)

Прошивка

Использование карт памяти в проекте подразумевает то, что программа — прошивка умеет манипулировать файловой системой FAT. Для этого используется программный модуль Petit-FatFS — немного образанный FatFs. Модуль Petit-FatFs был создан для использования в проектах на микроконтроллерах с очень малям объемом памяти (менее 512 байт) и отлично подходит для чипов AVR tiny

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

Petit-FatFs

Фюзы, которые необходимо запрограммировать также можно найти в файле main. c.
В стерео конфигурации используются все пины включая RESET. При переключении fuse-бита RSTDISBL, прошивку необходимо производить в режиме HVSP (High Voltage Serial Programming), что поддерживают не все программаторы. С помощь ISP также можно прошить микроконтроллер, но только единожды: после установки fuse-бита RSTDISBL программирование ISP запрещено (для схемы стерео). В схеме с моно воспроизведением переключать fuse-бит RSTDISBL не нужно.

Проигрыватель поддерживает только RIFF или WAV (Microsoft wave file) файлы формата PCM 8/16 бит, стерео/моно с частотой дискретизации до 48kHz. Воспроизведение звуковых файлов из корневой директории начинается при подаче питания или при подключении карты памяти. При нажатии на кнопку воспроизводится следующий файл.

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


Добавляем поддержку не родных м/к в среду Arduino IDE

Добавляем поддержку не родных м/к в среду Arduino IDE

Иногда можно использовать в своих проектах умного дома более простые или слабые микроконтроллеры,где ресурсов может быть достаточно для простых операций -Такие микроконтроллеры дешевле. Кроме программирования таких микроконтроллеров в более сложной среде разработки в WinAVR или CodeVisionAVR можно использовать среду Arduino IDE,добавив их поддержку.Иногда могут пригодится микроконтроллеры с бОльшим количеством портов,например Atmega16 и Atmega32 — их так же можно программировать в Arduino.

 

Обратите внимание,что обычно микроконтроллер с завода настроен на внутренний генератор и чаще всего прошивка загрузчика переключает микроконтроллер на внеший кварц — так что Вы должны позабодиться о подключении кварца к выводам микроконтроллера(выводы XTAL) по стандартной схеме.Исключение — серия attiny и некоторые другие м/к..


Серия микроконтроллеров ATtiny

Поддерживаемые микроконтроллеры:

 attiny13,attiny2313, attiny45, attiny44,attiny85, attiny84, attiny25, attiny24, attiny4313

Цоколевка микроконтроллеров

Для программирования ATtiny 13/25/45/85 подключим его к нашему программатору согласно даташиту:

 

Примечание: У ATtiny13  нет шины i2c и имеет всего 1кб под программу. У ATtiny 25/45/85 имеется последовательный порт на выводах PB4 -RX ,PB3 — TX ,но м/к не поддерживают загрузку через его,только обмен данными.

У ATtiny 2313 и 4313 другая цоколевка,но подключается так же:

Настройка Arduino IDE для микроконтроллеров ATtiny

Для этого необходимо дописать нужные микроконтроллеры в файл boards.txt  и распаковать  архив arduino-tiny в папку  папка_arduino/hardware/arduino/ 

Последнюю версию arduino-tiny можно найти тут.

Например ,чтобы добавить в список поддерживаемых контроллеров ATtiny85 необходимо добавить следущий текст в boards.txt:

###########################################################################
attiny85.name=Optiboot ATtiny85 @ 8 MHz (internal osc)
attiny85.upload.protocol=arduino
attiny85.upload.speed=9600
#bootloader takes up last 10 pages, so there is a limit on the max size.
attiny85. upload.maximum_size=7616
attiny85.bootloader.low_fuses=0xE2
attiny85.bootloader.high_fuses=0xD7
attiny85.bootloader.extended_fuses=0xFE
attiny85.bootloader.path=optiboot
attiny85.bootloader.file=optiboot_attiny85.hex
attiny85.build.mcu=attiny85
attiny85.build.f_cpu=8000000L
attiny85.build.core=tiny
attiny85.build.variant=tinyX5
 # вариант c частотой внутренного генератора 8 мгц.
###########################################################################

Остальные примеры поддерживаемых микроконтроллеров можно посмотреть в файле Prospective Boards.txt архива arduino-tiny .

Для ATtiny13 необходимо другое ядро ,для этого распакуем архив в папку hardware\arduino\cores\core13\

 и добавляем в список boards.txt:

#############################################

attiny13.name=ATtiny13 (internal 9.6 MHz clock)
attiny13.bootloader.low_fuses=0x7a
attiny13.bootloader.high_fuses=0xff
attiny13. upload.maximum_size=1024
attiny13.build.mcu=attiny13
attiny13.build.f_cpu=9600000L
attiny13.build.core=core13
attiny13.build.variant=tiny8

###############################################

Сейчас мы можем программировать добавленные микроконтроллеры через плату Arduno или USBasp.

Другие микроконтроллеры ATmega

ATmega8 без загрузчика

Чтобы добавить м/к ATmega8 без загрузчика добавляем в boards.txt следущий текст:

###########################################################################
atmega8A.name=ATmega8A
atmega8A.bootloader.low_fuses=0xFF
atmega8A.bootloader.high_fuses=0xCF
atmega8A.bootloader.unlock_bits=0x3F
atmega8A.bootloader.lock_bits=0x0F
atmega8A.upload.maximum_size=8192
atmega8A.build.mcu=atmega8
atmega8A.build.f_cpu=16000000L
atmega8A.build.core=arduino:arduino
atmega8A.build.variant=standard

# вариант без загрузчика и частотой м/к 16 мгц.
###########################################################################

 ATmega8 имеется в списке поддерживаемых как Arduino NG or older с загрузчиком,который отнимает 1 кб ,при таком загрузчике микроконтроллер можно прошивать стандартно,установив его например в Arduino UNO.Сконфигурировать свой загрузчик на другую частоту вы можете в Конструкторе Bootloader`а.

ATmega32 ,ATmega16,ATmega1284,ATmega644,ATmega324

Для добавления данных микроконтроллеров необходимо распаковать из архива avr-netino папку hardware\avrnetio и поместить её в папку Arduiono_ide\hardware\ .Другие папки с примерами и библиотеками можно так же распаковать в соотвествующие папки при необходимости.

Расмотрим пример на  микроконтроллере ATmega32:

Микроконтроллер ATmega32 имеет 40 ножек из них 32 — это порты ввода вывода.

Расшифруем основные из них:

D — это цифровые выводы в нумерации arduino.

AI — аналоговые входы.

PWM — выводы с возможностью ШИМ.

 

Если Вы правельно скопировали папку avrnetio ,то после запуска Arduino IDE Вы увидите добавленные микроконтроллеры в общем списке.Вы можете исправить или удалить некоторые ненужные микроконтроллеры в файле hardware\avrnetio\board.txt 

Если сейчас подключить микроконтроллер к  Arduno или USBasp ,то можно уже заливать скетчи из среды Arduino IDE .

Обратите внимание,что новый м/к запрограммирован работать от внутреннего генератора и при прошивке загрузчика (через меню сервис-> записать загрузчик) поменяются фьюзы на режим от внешнего кварца.Загрузчик прошивать не обязательно,если Вы не хотите Заливать скетчи через последовательный порт.Перед прошивкой загрузчика можно поправить фьюзы в файле board.txt в строках bootloader.low_fuses и bootloader.high_fuses используя калькулятор фьзов.

Хотя avr-netino и поставляется с загрузчиками,но загрузка через последовательный порт на ATmega32 у меня не заработала.Для загрузки через его необходимо подсунуть «правельный» загрузчик в папку /hardware/avrnetio/bootloaders/optiboot/ из архива boots. zip ,заменив в файле board.txt имя файла загрузчика в строке bootloader.file соотвествующего микроконтроллера.Сконфигурировать свой загрузчик на другую частоту вы можете в Конструкторе Bootloader`а

Arduino Digispark ATTiny85

Миниатюрные платы Digispark на микроконтроллерах ATTiny85 совместимы с Arduino IDE. В сравнении с другими платами Arduino у Digispark есть свои преимущества и свои существенные особенности.

На принципиальной электрической схеме платы Digispark видно, что USB интерфейс подключается непосредственно к ножкам микроконтроллера.

Но, у микроконтроллера ATTiny85 нет встроенного USB интерфейса! USB интерфейс программно эмулируется загрузчиком.

Подключить плату Digitspark к Arduino IDE можно через менеджер плат, но предварительно необходимо добавить ссылку

http://digistump.com/package_digistump_index.json

в настройки Arduino:

Особенности Digitspark проявляются в среде Arduino IDE во время прошивки микроконтроллера. Перед прошивкой ваша плата должна быть отключена. После того как вы нажмёте в среде Arduino IDE кнопку «Загрузка» появится приглашение

Скетч использует 718 байт (11%) памяти устройства. Всего доступно 6012 байт.
Глобальные переменные используют 9 байт динамической памяти.
Running Digispark Uploader...
Plug in device now... (will timeout in 60 seconds)

В это время вы должны вставить интерфейс платы Digispark в USB разъём компьютера.

А так плата Digispark представляется в Linux системе, но только несколько секунд после включения:

dior@U18pro:~$ lsusb
Bus 002 Device 003: ID 045e:0745 Microsoft Corp. Nano Transceiver v1.0 for Bluetooth
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 011: ID 16d0:0753 MCS Digistump DigiSpark
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2. 0 root hub

Первым стартует загрузчик, а через несколько секунд он передаёт управление прикладной программе.

Выводы P3, P4 и P5 следует использовать с ограничениями. На выводе P5 задействована функция RESET микроконтроллера, а P3 и P4 используются в процессе программирования (USB интерфейс). На выводе P1 припаян светодиод, это так же накладывает на использование этого вывода некоторые ограничения.

Микроконтроллеры и Технологии — HID клавиатура на 4 клавиши(ATtiny85)

Дата публикации: .

На высоком уровне этот проект реализует библиотека V-USB(ранее AVR-USB) от Objective Development, которую я часто использую для эмуляции USB-клавиатуры.

Я использовал стандартный дескриптор отчета для USB-клавиатуры, у которого есть 8-байтный буфер отчетов. Это может быть немного излишним, поскольку в проекте используется только 4 байта(1 для каждой кнопки), но это позволяет легко расширить функциональность в будущем.

Каждая кнопка имитирует только 1 ключ, с его индивидуальным нажатием и клавишным событием, которые точно такие же, как у обычной клавиатуры.

В стандартной прошивке эмулируются нажатия для клавиш с 1 по 4. Хотя это можно легко изменить.

Схема устройства

Печатная плата

Программирование микроконтроллера

Если у вас нет программатора, который поддерживает высоковольтное последовательное программирование(HVSP), вы не сможете повторно перепрограммировать ATTiny85 после включения fuse бита RSTDISBL. (Программатор Atmel STK500 поддерживает HVSP!)

Если у вас есть программатор, который поддерживает только ISP, вы все равно сможете успешно прошить МК, прошивка должна быть залита перед установкой fuse бита RSTDISBL.

Если вы хотите поэкспериментировать/протестировать этот проект, не имея программатора поддерживающего HVSP, я предлагаю протестировать его без включения fuse бита RSTDISBL. Это приведет к тому, что кнопка 3 не будет работать (поскольку она подключена к выводу 1, который еще работает как линия сброса), но все остальные кнопки будут работать. Только когда вы уверены, что довольны прошивкой, вы можете установить fuse бит RSTDISBL.

Рекомендуемые настройки битов конфигурации:

EXTENDED: 0xFF
HIGH: 0x5D (используйте 0xDD для тестирования без установленного fuse бита RSTDISBL, как описано выше)
LOW: 0xC1

Автор: Flip van den Berg


Архив для статьи «HID клавиатура на 4 клавиши(ATtiny85)»
Описание:

Исходный код AVRStudio 4, файл прошивки микроконтроллера, макет печатной платы Eagle

Размер файла: 623.54 KB Количество загрузок: 453 Скачать

 

заливаем собственную прошивку в фонарик / Лайв им.

SinuX / iXBT Live

Наверняка у многих имеются фонари фирмы Convoy, они давно зарекомендовали себя как недорогие и качественные источники света. Но мало кто знает, что с помощью программатора за $3 и клипсы за $3 можно залить в некоторые фонари кастомную прошивку, которая будет иметь больше функций или будет удобнее в использовании. Сразу оговорюсь, что в статье речь пойдет о прошивке фонарей с драйверами на базе микроконтроллера Attiny13a, такие драйвера стоят во всех конвоях S серии (кроме нового S9), а так же в Convoy M1, M2, C8. Многие другие производители так же ставят в свои фонари драйвера с Attiny, к ним данный мануал тоже применим, но следует уделять внимание фьюзам и используемым портам Attiny.

Краткий ликбез

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

  • Кнопка выключения — у «тактических» EDC фонариков типа Конвоев обычно располагается в хвосте
  • Аккумулятор — обычно это Li-ion банка
  • Драйвер — самая важная часть фонаря, его мозги
  • Светодиод — говорит сам за себя

Драйвер и светодиод

 

Из всего этого безобразия нас, как вы уже поняли, интересует в первую очередь драйвер. Он отвечает за работу фонаря в различных режимах яркости, запоминание последнего включенного режима и прочую логику. В одноаккумуляторных фонарях чаще всего встречаются ШИМ-драйвера. В качестве силового ключа в таких драйверах обычно используется либо полевой транзистор, либо куча линейных регуляторов AMC7135. Например, так выглядит довольно популярный драйвер Nanjg 105D:

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

Предыстория

Сейчас на рынке представлено поистине огромное количество карманных EDC фонариков, и, что характерно, каждый производитель норовит изобрести свою собственную прошивку с собственным уникальным™ управлением. Из всех существующих решений мне больше всего нравилась прошивка, с которой до недавних пор поставлялись фонари Convoy с драйвером Nanjg 105D. Она имела 2 группы режимов (1 группа: Мин-Средний-Макс, 2 группа: Мин-Средний-Макс-Строб-SOS). Смена групп в ней осуществлялась интуитивно просто: включаем минимальный режим, спустя пару секунд фонарь моргнёт — кликаем кнопкой, и группа режимов переключена. С недавних пор Convoy начал поставлять свои фонари с новой прошивкой biscotti. Она имеет больше возможностей (12 групп режимов, возможность включения-отключения памяти последнего режима, запоминание режима в выключенном состоянии (т.н. off-time memory)), но у нее есть несколько жирных минусов, которые лично для меня перечеркивают все достоинства:

  • Сложное управление. Чтобы сменить группу режимов нужно помнить наизусть шаманскую последовательность кликов кнопкой
  • Off-time memory не работает при использовании светящихся кнопок (например, таких)
  • Много бесполезных групп режимов, отличающихся лишь порядком следования

Когда у меня накопился приличный зоопарк фонарей с разными прошивками, но одинаковыми драйверами, я решил унифицировать их, залив всем одну и ту же прошивку. Все бы ничего, но нельзя просто так взять и перешить Nanjg 105D на старую добрую прошивку с двумя группами, потому что в свободном доступе ее нет, и производитель установил запрет на считывание дампа памяти микроконтроллера, т. е. оригинальную прошивку взять неоткуда. В репозитории прошивок для фонарей аналога данной прошивки нет, поэтому у меня остался один выход — написать все самому.

Встречайте Quasar v1.0

Взяв за основу прошивку luxdrv 0.3b от DrJones, я сваял собственную с блекджеком и лунапарками. Я постарался сделать ее максимально похожей на стоковую прошивку Nanjg 105D и более масштабируемой. Что может мой Quasar:

  • 2 группы режимов: (Минимальный — Средний — Максимальный — Турбо) и (Минимальный — Средний — Максимальный — Турбо — Строб — Полицейский строб — SOS)
  • Строб злой (частота вспышек около 12Гц)
  • Новый режим — полицейский строб — делает прерывистые серии по 5 вспышек, режим может быть полезен велосипедистам, т.к. повышает заметность
  • Переключение групп осуществляется как в заводской прошивке: включаем первый режим, ждем пару секунд, кликаем сразу после того, как фонарь моргнет
  • Путем модификации исходников можно добавить до 16 групп, в каждой группе можно задать до 8 режимов
  • Используется традиционная on-time память, можно использовать светящиеся кнопки без потери функциональности
  • При разряде аккумулятора ниже 3В фонарь начинает сбрасывать яркость, но полностью не отключается — используйте аккумуляторы с защитой, если боитесь их убить.
  • Удобная фича для проверки текущего уровня аккумулятора: в любом режиме делаем 10-20 быстрых полу-нажатий  кнопкой до тех пор, пока фонарь не перестанет включаться. После этого фонарь сделает от 1 до 4 вспышек, каждая вспышка означает уровень заряда соответственно < 25%, < 50%, < 75% и < 100%.

Исходники, скомпилированный бинарник с двумя группами режимов и проект для Atmel Studio вы можете найти на моем гитхабе. Помните, что исходники распространяются под лицензией CC-BY-NC-SA, и прошивку вы используете на свой страх и риск без каких-либо гарантий.

Принадлежности

Для заливки кастомной прошивки нам понадобятся:

  • SOIC клипса Купить
  • Любой клон Arduino Nano 3.0 для использования в качестве программатора Купить
  • Arduino у меня уже была, поэтому я решил завести отдельный самостоятельный девайс для прошивки фонарей и купил USBISP программатор Купить
  • Dupont провода для подключения клипсы к программатору Купить

 

Подготовка программатора

 

Для прошивки драйвера подойдет обычная Arduino Nano 3. 0 с залитым скетчем ArduinoISP, но я решил завести отдельный программатор, поэтому купил USBISP. Он имеет форм-фактор флешки в алюминиевом корпусе:

Из коробки этот программатор определяется на компе как HID устройство и работает только с китайским кривым софтом, чтобы использовать его с avrdude можно перепрошить его в USBASP. Для этого нам, как ни странно, понадобится другой рабочий программатор. Здесь нам поможет Arduino Nano, подключаем её к компьютеру, открываем Arduino IDE и открываем стандартный скетч ArduinoISP:

Раскомменчиваем строку #define USE_OLD_STYLE_WIRING:

И заливаем скетч в Nano. Теперь у нас есть AVRISP программатор, которым можно перепрошить наш USBISP в USBASP. Для этого нам в первую очередь понадобится avrdude, он лежит в папке установки Arduino IDE по пути \hardware\tools\avr\bin. Для удобства советую добавить полный путь к avrdude.exe в переменную окружения PATH.

Теперь нам необходимо открыть USBISP и перевести его в режим программирования, установив перемычку UP:

Вот так:

Заодно убеждаемся, что на плате распаян Atmega88 или 88p, как в моем случае:

Другие перемычки, несмотря на советы в инете, трогать не нужно, все прекрасно прошивается и с ними.

Теперь внимательно смотрим на распиновку USBISP программатора, нанесенную на его алюминиевом корпусе, и подключаем его к Arduino Nano:

  • VCC и GND к VCC и GND сответственно
  • MOSI к D11
  • MISO к D12
  • SCK к D13
  • RESET к D10

У меня не оказалось Female-Female проводов, поэтому я заюзал мини-макетку:

Следующий шаг — скачиваем прошивку usbasp.atmega88-modify.hex, подключаем Arduino к компу, запускаем консоль и переходим в папку с сохраненной прошивкой. Для начала выставим фьюзы командой:

avrdude -p -m88 -c avrisp -b 19200 -U lfuse:w:0xff:m -U hfuse:w:0xdd:m

Затем заливаем прошивку командой:

avrdude -p m88p -c avrisp -b 19200 -U flash:w:usbasp.atmega88-modify.hex

После этого убираем перемычку на USBISP, подключаем его к компьютеру, и если все сделано правильно, — на нем загорится синий светодиод:

Теперь у нас есть полноценный компактный USBASP программатор в удобном металлическом корпусе.

SOIC клипса

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

Подключаем контакты клипсы к программатору в соответствии с распиновкой микроконтроллера:

Для большей надежности я припаял провода к клипсе и затянул все это термоусадкой:

Заливаем прошивку в фонарь

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

Крепим клипсу, соблюдая ориентацию. Ориентир в данном случае — кругляш на корпусе микросхемы, он обозначает первый её пин (RESET в нашем случае):

Смотрим, чтобы все пины клипсы утопились в корпус. Подключаем программатор к компу, теперь дело осталось за малым — нужно залить прошивку) Для этого идем на гитхаб, качаем бинарник quasar.hex, запускаем консоль, переходим в папку с бинарником и выполняем команду:

avrdude -p t13 -c usbasp -u -Uflash:w:quasar.hex:a -Ulfuse:w:0x75:m -Uhfuse:w:0xFF:m

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

Просто, да? А вот нифига, с вероятностью 90% вместо загрузки прошивки вы увидите это:

Причина чаще всего кроется в том, что у новых моделей драйверов замкнуты пины 5 и 6 (MISO и MOSI), что делает невозможным программирование. Поэтому если avrdude жалуется на target doesn’t answer, то первым делом вооружаемся скальпелем и внимательно смотрим на плату. Нужно перерезать дорожку, как показано на картинке:

После этого прошивка обычно заливается без проблем. Если нет — внимательно посмотрите на микроконтроллер, возможно у вас вовсе не Attiny13a, по крайней мере мне попадались драйвера с Fasttech с PIC контроллерами.

Модификация прошивки

Скомпилированная прошивка на гитхабе посути является чуть более продвинутым аналогом оригинальной прошивки, поэтому куда интереснее собрать собственную версию прошивки со своими группами и режимами. Сейчас я расскажу, как это сделать. Первым делом качаем и устанавливаем Atmel Studio с официального сайта. Потом скачиваем все файлы проекта (кто умеет в git — могут просто клонировать всю репу) и открываем Quasar.atsln через установленную студию:

Перечислю наиболее интересные места в коде:

#define LOCKTIME 50

Задает время, через которое текущий режим будет сохранен. Значение 50 соответствует 1 секунде, соответственно поставив 100 можно получить интервал ожидания в 2 секунды

#define BATTMON 125

Задает критический уровень напряжения на аккумуляторе, при достижении которого фонарь начнет сбрасывать яркость. У стандартного Nanjg 105D величина 125 соответствует примерно 2.9 вольтам, но все зависит от величин резисторов делителя напряжения на плате. Если удалить эту строку целиком — фонарь не будет следить за напряжением аккумулятора.

#define STROBE        254
#define PSTROBE       253
#define SOS           252

Определения режимов-мигалок, цифровые значения трогать не следует, если не нужен какой-либо режим — соответствующую строку можно удалить, не забыв после этого поправить объявления групп режимов в массиве groups.

#define BATTCHECK

Включает режим индикации уровня аккумулятора после 16 быстрых кликов. Можно удалить, если эта функция не нужна.

#define MEM_LAST

Задает запоминание последнего режима. Возможны следующие значения: MEM_LAST — фонарь включается в последнем включенном режиме, MEM_FIRST — фонарь всегда включается в первом режиме, MEM_NEXT — фонарь всегда включается в следующем режиме.

#define MODES_COUNT     7
#define GROUPS_COUNT    2

Задают количество режимов в группе и количество групп соответственно. Тесно связаны со следующим массивом groups:

PROGMEM const byte groups[GROUPS_COUNT][MODES_COUNT] = {{ 6, 32, 128, 255, 0, 0, 0 },
                                                        { 6, 32, 128, 255, STROBE, PSTROBE, SOS }};

Здесь перечислены сами группы режимов работы. Числа 6, 32, 128, 255 — значения яркости, STROBE, PSTROBE, SOS — обозначения специальных режимов. Нулевые значения яркости игнорируются, поэтому в разных группах можно задавать разные количества режимов (в данном случае в первой группе 4 режима, во второй — 7).

Например, если вы хотите оставить один единственный режим работы со 100% яркостью, то сделать это можно так:

#define MODES_COUNT     1
#define GROUPS_COUNT    1
PROGMEM const byte groups[GROUPS_COUNT][MODES_COUNT] = {{ 255 }};

Если вам нужны 3 группы режимов без мигалок и с обратным следованием (от максимального к минимальному), то можно сделать так:

#define MODES_COUNT     4
#define GROUPS_COUNT    3
PROGMEM const byte groups[GROUPS_COUNT][MODES_COUNT] = {{ 255, 0, 0, 0 },
                                                        { 255, 64, 6, 0 },
                                                        { 255, 128, 32, 6 }};

При таком раскладе в первой группе всего один режим со 100% яркостью, во второй — 3 режима, в третьей — 4 режима с более плавным уменьшением яркости. Легко и просто, правда? Остается лишь скомпилировать исходник в hex файл с помощью студии, для этого выбираем «Release» в диспетчере конфигураций и жмем «Запуск без отладки»:

Если нигде в коде не накосячили, то в папке проекта появится директория Release, а в ней — hex файл, который остается залить в драйвер описанным в предыдущем разделе способом.

На этом все, надеюсь сей мануал будет кому-нибудь полезен. Если у кого возникнут вопросы — милости прошу в комменты)

Как легко запрограммировать ATtiny85

Впервые эта статья была написана 27.03.2017. Обновлен в 2019 году.

ATtiny85 — это небольшой 8-контактный микроконтроллер DIP / SOIC от ATMEL, теперь Microchip. Хотя ограниченное количество выводов может показаться ограничением, тем не менее, он идеально подходит для небольших задач, где более крупный микроконтроллер был бы излишним. Некоторые примеры включают считывание нескольких датчиков и включение света. Небольшая занимаемая площадь также позволяет сэкономить место на печатных платах с ограниченным пространством

.

ATtiny85s можно программировать в Arduino.Существует коммерческий продукт под названием Digispark, который был широко клонирован китайскими производителями, продавая его почти по себестоимости. Фактически, покупка клона Digispark часто бывает дешевле, чем простой чип ATtiny85. Digispark — это отдельная плата, не нуждающаяся во внешнем программаторе, потому что на микросхему ATtiny85 загружен небольшой загрузчик, называемый micronucleus. Исполняемый файл, также известный как micronucleus на компьютере, ожидает, пока плата с поддержкой micronucleus будет подключена к компьютеру, а затем программирует ATtiny85.

Tldr

Настройте Arduino в качестве интернет-провайдера. Подключите Arduino следующим образом:

Для Windows: если вы хотите установить последнюю версию прошивки, загрузите zip-файл с Github, распакуйте, перейдите в папку прошивки / релизов и запустите следующий код:

  avrdude -c arduino -p t85 -b 19200 -P COM9 -U flash: w: "micronucleus-1. 11.hex" -U lfuse: w: 0xe1: m -U efuse: w: 0xfe: m -U hfuse: ш: 0xdd: m
  
  • -c arduino: Программирование с помощью Arduino ISP
  • -p t85: Программирование ATtiny85
  • COM9: COM-порт вашего Arduino, проверьте в диспетчере устройств или Arduino
  • «микронуклеус-1.11.hex «: файл для прошивки на ATtiny85.

Как это начиналось

У меня возникла идея снять дешевые чипы ATTiny85 с их плат на Digispark и интегрировать их в свои собственные печатные платы, потому что их легче программировать на готовой плате, и когда я доволен результатом, я могу просто поместите его на другую доску, и вуаля! Все должно работать. К сожалению, все оказалось не так просто, как я ожидал.

Рисунок 1. Digispark

Первая проблема заключалась в том, что схема не работала.Я мог припаять провода к дорожкам, чтобы перепрограммировать ATtiny85, но были и другие части схемы, которые я хотел изменить, поэтому я решил купить коммутационную плату у Adafruit.

Рис. 2. Коммутационная плата SMT

Конечно, если вы начали с DIP-версии ATtiny85, вам не пришлось бы этого делать.

Урок 1: Всегда сначала прототипируйте свои схемы на плате!

Подключите ATTiny85 к провайдеру Arduino следующим образом:

  VCC-> 5 В
PB5-> 10
PB2-> 13
PB1-> 12
PB0-> 11
GND-> GND
  

Я попытался подключить питание и светодиоды, но ничего не вышло, поэтому я решил использовать Arduino в качестве ISP для программирования скетча мигания в ATtiny85, используя другую библиотеку пакетов для чипов ATtiny85, и индикатор начал мигать.

Но одна проблема заключалась в том, что внутренняя частота была установлена ​​на 8 МГц, и изменение ее на 16 МГц или 1 МГц привело к странной реакции времени между миганием. Я считаю, что есть некоторые проблемы с Arduino, если исходная частота составляет 8 МГц. Причина выбора более низкой частоты заключалась в том, что я хотел сэкономить электроэнергию. Более низкая частота приводит к немного меньшему потреблению энергии от батареи, что очень важно, если вы используете проект с батарейным питанием. Однако с программным обеспечением Digispark все тайминги верны, и я смог установить его на частоты, которые мне требовались ранее.

Мне пришлось загрузить на чип прошивку Digispark. Сначала я попытался превратить свой Digispark в провайдера.

Я попытался использовать учебник littlewire на форуме Digispark, чтобы превратить мой другой Digispark в провайдера, однако он так и не смог распознать другой чип ATtiny85, хотя он был зарегистрирован как USB-устройство после того, как я загрузил на него программу Littlewire.

Итак, затем я решил использовать свой Arduino в качестве интернет-провайдера для загрузки прошивки Digispark. Я сослался на учебник Adafruit для получения конкретной команды, необходимой для его запуска.Обратите внимание, что для правильной работы Arduino ISP вам нужна скорость передачи данных!

  ~ $ avrdude -c arduino -p t85 -b 19200 -P / dev / ttyACM0 -U flash: w: ". .. / t85_default.hex"
  

С новой микросхемой вам также нужно будет установить предохранители (добавить в исходную команду):

  -U lfuse: w: 0xe1: m -U efuse: w: 0xfe: m -U hfuse: w: 0xdd: m
  

Если у вас новые инструменты, вы сможете успешно загрузить прошивку и сразу же начать программировать ее в Arduino.

Мне удалось его успешно загрузить и попытаться использовать Arduino для программирования Digispark, однако он сообщил, что прошивка слишком новая для этого инструмента. Итак, теперь нам нужно заменить инструмент. Из github micronucleus перейдите в папку командной строки и выполните команду, чтобы сделать micronucleus исполняемым файлом. Теперь вам нужно найти старый инструмент где-нибудь в ~ / .arduino15 / packages / digistump / tools / micronucleus / 2.0a4 / micronucleus и заменить его новым инструментом, который вы только что выполнили.Обязательно сделайте резервную копию старого исполняемого файла на случай, если вы захотите вернуться.

Вы также можете загрузить старую прошивку micronucleus версии 1.06.

Найдите старую программу micronucleus, которая вызывается Arduino, замените ее.

Теперь у вас должна быть возможность загрузить микропрограмму micronucleus на любой чип ATtiny85. При распайке оригинального чипа хорошо то, что если вы выполните разводку ATtiny85 на плате 1: 1, вы сможете загружать эскизы, как если бы ATtiny85 был на самой плате! Таким образом вы сможете программировать и создавать прототипы многих чипов Atiny85.

Помните, что после того, как вы снова переключитесь на загрузку кода через micronucleus, вам необходимо отсоединить провода от ATtiny85, соединяющие их с провайдером Arduino.

Удаление 5-секундной задержки с Digispark ATtiny85

Теперь я хотел удалить 5-секундную задержку, поэтому я использовал следующую версию micronucleus (v 1.11) и файл обновления micronucleus-1.11-entry-jumper-pb0-upgrade.hex . Я использовал последнюю версию исполняемого файла micronucleus и запустил его с опцией --run . Таким образом, код для запуска в терминале выглядит как ~ $ micronucleus --run '... upgrade.hex' . В этом случае PB0 заземлен, чтобы подготовить микросхему к программированию, когда вы, наконец, загрузите программу дыхания. Если его не притянуть к земле, то микросхема немедленно запустит загруженную на него программу.

Загрузите свой ATtiny85 — Hackster.io

Что такое загрузчик? Для микроконтроллеров

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

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

Дополнительную информацию см. В статье « Bootloader Development ».

Микроконтроллер ATtiny85

Было бы неплохо иметь базовые представления о микроконтроллере ATtiny85. Кроме того, существует множество других микроконтроллеров ATtiny с различными функциями. Вот краткое описание возможностей микроконтроллера ATtiny85.

  • 8 контактов
  • 8 КБ флэш-памяти ISP
  • 512-байтовая EEPROM
  • 512-байтовая SRAM
  • 6 линий ввода-вывода общего назначения
  • 32 рабочих регистра общего назначения
  • Один 8-битный таймер / счетчик с функцией сравнения режимы
  • Один 8-битный высокоскоростной таймер / счетчик
  • USI
  • Внутренние и внешние прерывания
  • 4-канальный 10-битный аналого-цифровой преобразователь
  • Программируемый сторожевой таймер с внутренним генератором
  • Три режима энергосбережения, выбираемых программным способом
  • DebugWIRE для отладки на кристалле.
  • Устройство обеспечивает пропускную способность 20 MIPS на частоте 20 МГц и работает при напряжении 2,7-5,5 В.

Для получения дополнительной информации об этом и других микроконтроллерах ATtiny посетите веб-сайт Atmel. Этот веб-сайт также содержит подробные и обобщенные версии таблиц данных для каждого микроконтроллера.

Зачем нужен загрузчик?

Загрузчик упрощает создание прототипов, поскольку код может быть загружен в микроконтроллер непосредственно из Arduino IDE с использованием базового последовательного соединения.

Когда я программирую свой ATtiny85, мне приходится вытаскивать его из схемы и вставлять в свой программатор. Когда он закончит загрузку прошивки, я вытаскиваю ее из программатора и снова вставляю в схему. Я могу повторить этот процесс несколько раз. По крайней мере, он стареет, но много раз я гнул булавки, и мне приходилось их выпрямлять с помощью плоскогубцев.

С помощью загрузчика я могу программировать свой ATtiny85, все еще подключенный к цепи.

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

Почему бы не использовать загрузчик?

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

ATTiny85 имеет 8 КБ (8 192 байта) флэш-памяти для кода. Прошивка будет использовать 576 байт, оставив 7616 байт для ваших скетчей (прошивку, используемую в этом проекте, можно найти по адресу https: // github.com / TCWORLD / ATTinyCore).

Вторая причина связана с производительностью. Загрузчик запускается при включении или сбросе микроконтроллера. Это требует времени из-за того, что загрузчик проверяет попытку загрузить новую прошивку. после проверки загрузчик запускает прошивку, которую вы загрузили из Arduino IDE. Этот процесс занимает несколько секунд, что приводит к задержке перед запуском микропрограммы. Опять же, это может быть или не быть для вас серьезной проблемой, но вы должны знать об этом.

Я считаю, что лучше всего использовать загрузчик во время прототипирования, а затем, при создании окончательного проекта, записать прошивку на микроконтроллер с помощью программатора.

Добавление поддержки в IDE

Если вы не знакомы с добавлением платы в IDE Arduino, подробности показаны ниже. Для получения дополнительной информации см. Эту статью на Adafruit.

Первым шагом является добавление URL-адреса к опции Additional Boards Manager в Preferences .Выберите Preferences из меню File и добавьте URL-адрес, показанный ниже, в текстовое поле. Если в поле указано несколько URL-адресов, разделите их запятыми.

https://raw.githubusercontent.com/porrey/Snapduino/IDE/package_porrey_snapduino_index.json

В этом проекте я использую определение платы для моего Snapduino .

Второй шаг — установка платы. В среде Arduino IDE щелкните меню Tools , а затем щелкните Board .В появившемся меню выберите Boards Manager . В текстовом поле поиска введите Snapduino , чтобы найти пакет платы. Теперь нажмите кнопку Install , чтобы установить плату.

Изменение имени платы

Если вам не нравится имя платы в среде IDE (вы, вероятно, не используете схемы Snap Circuits), имя можно изменить вручную на любое другое. Выполните следующие действия, чтобы изменить имя платы в меню Arduino IDE.

  • Щелкните Preferences из меню File .
  • Щелкните ссылку, чтобы изменить файл настроек.
  • Откройте папку Packages .
  • Откройте папку Snapduino .
  • Откройте папку hardware .
  • Откройте папку AVR.
  • Откройте папку 1.0.1 папку.
  • Откройте файл boards.txt в текстовом редакторе, чтобы изменить имя доски.
  • Отредактируйте строку « snapduino.name = Snapduino » и измените имя справа от знака равенства на то, что вам подходит.
  • Сохраните файл.
  • Откройте файл platform.txt в текстовом редакторе, чтобы изменить имя категории.
  • Отредактируйте строку « name = Snap Circuits » и измените имя справа от знака равенства на то, что вам подходит.
  • Сохраните файл.
  • Закройте и снова откройте Arduino IDE.

Запись загрузчика

Загрузка загрузчика в микроконтроллер выполняется только один раз. Для выполнения этого шага требуется доступ к программисту.Лучший программатор для ATtiny85 (на мой взгляд) — SparkFun Tiny AVR Programmer.

My SparkfFun Tiny AVR Programmer с загруженным и готовым к работе ATtiny85.

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

Если у вас есть программатор, поместите ATtiny85 в программатор и подключите его к порту USB на вашем компьютере.Откройте Arduino IDE и выберите плату Snapduino в меню Tools . В меню Programmer в разделе Tools выберите правильный программатор. Если у вас есть SparkFun AVR Tiny Programmer, выберите USBtinyISP . Теперь щелкните Записать загрузчик в меню инструментов.

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

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

Микроконтроллер ATtiny85 не имеет секции защищенного загрузчика. Это означает, что на этих чипах можно случайно перезаписать загрузчик. Если это произошло, просто следуйте инструкциям по перезагрузке загрузчика.

Подключение кабеля FTDI

Нам понадобится способ связи с микроконтроллером из Arduino IDE.ATtiny85 не имеет встроенной поддержки USB, и мы не добавляли эту возможность в нашу схему. Вместо этого мы будем использовать USB-кабель FTDI Serial TTL-232.

Кабель FTDI представляет собой кабель USB-Serial. Он имеет небольшой микрочип в головке кабеля, который выполняет преобразование между USB-портом и последовательным TTL, необходимым для программирования микроконтроллера. Это очень тополевый кабель, который можно получить в разных местах. Тот, который я использую в этом проекте, был куплен у Adafruit.Мне нравится этот кабель, потому что он может использоваться в цепях 3V3 и 5V и всегда обеспечивает 5V на линии питания.

Большинство плат, совместимых с Arduino и Arduino, имеют встроенные преобразователи USB-to-Serial. У других есть прошивка, которая может обмениваться данными через USB-соединение. Чтобы увидеть ATtiny85 с USB-подключением, обратите внимание на Adafruit Trinket — Mini Microcontroller — 5V Logic.

Поместите ATtiny85 на макетную плату с 6-контактным разъемом и подключите схему в соответствии со схемой, включенной в проект ниже.

Схема обеспечивает базовую поддержку программирования микроконтроллера. Эти компоненты будут включены во все ваши схемы. Резистор 10 кОм используется в качестве подтягивающего резистора для поддержания высокого уровня на выводе сброса. Конденсатор ,1 мкФ подключен к контакту RTS на кабеле FTDI, чтобы позволить Arduino IDE автоматически сбрасывать микроконтроллер ATtiny85 во время программирования.

Настройка загрузчика

Загрузчик, используемый для ATtiny85, требует однократного процесса настройки, чтобы он мог синхронизироваться с последовательным интерфейсом.Этот шаг гарантирует, что процесс загрузки будет последовательным.

Откройте Arduino IDE и выберите Serial Monitor из меню Tools . Когда появится окно, установите скорость передачи из раскрывающегося списка, расположенного в правом нижнем углу экрана, на 9600 , если вы записали загрузчик на 8 МГц , или выберите 19200 , если вы использовали 16 МГц .

На устройстве появится сообщение с просьбой медленно отправить « x », пока загрузчик не завершит процесс настройки.Просто поместите и « x » в текстовое поле в верхней части окна и нажмите «Отправить». Повторяйте это до тех пор, пока загрузчик не укажет на завершение. После того, как вы завершите этот шаг, вам не нужно будет повторять его снова, если вы снова не запишете загрузчик.

Загрузка вашего первого эскиза

Добавьте светодиод и резистор 220 Ом на макетную плату, как показано на прилагаемой схеме. Загрузите Blinking LED Code , расположенный в нижней части проекта, и откройте его в вашей Arduino IDE.Выберите Snapduino и скорость процессора, которую вы хотите запустить (используйте только 16 МГц при работе от 5 В). Убедитесь, что выбран правильный последовательный порт для вашего кабеля FTDI, и нажмите Загрузить .

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

Блестящий программатор для крошечных AVR

Как я уже упоминал в одном из предыдущих сообщений блога, я хотел попробовать сделать проект с микроконтроллером ATtiny85, который популярен в кругах любителей как мягкий путь за пределы готовых плат Arduino , поскольку он основан на той же архитектуре AVR, имеет надежную поддержку фреймворка Arduino, довольно прост в работе и обладает довольно высокой производительностью, несмотря на то, что у него всего 5 полнофункциональных контактов ввода-вывода.

ATtiny85 можно запрограммировать из Arduino IDE, но, поскольку это голая ИС, процесс немного сложнее, чем просто подключение USB-кабеля и загрузка прошивки — для этого требуется внешний программатор.

Arduino как ISP

Многие микроконтроллеры AVR, включая ATtiny85, могут быть запрограммированы с помощью так называемого ISP (внутрисистемное программирование) , который представляет собой последовательный протокол, основанный на SPI, и существует множество доступных программаторов. Популярным способом программирования микросхем AVR, не требующим покупки отдельного программатора, является Arduino в качестве ISP, который превращает плату Arduino в программатор.

Следуя этому руководству, я смог превратить свою Arduino Mega и щит для прототипирования в рабочий программатор ATtiny85.

Arduino Mega как ISP

Он работал хорошо, но у него была довольно неприятная особенность — avrdude часто не мог синхронизироваться во время загрузки прошивки, и Arduino приходилось перезагружать, после чего загрузка проходила успешно.

При подключении через USB, Arduinos представляет виртуальный последовательный порт для хоста, который имеет двойное назначение — он используется для программирования Arduino, а также для связи между хостом и приложением, которое на нем запущено.Я подумал, что причиной может быть двойное использование последовательного интерфейса, поэтому решил попробовать другую Arduino-совместимую плату, которая у меня была, STM32 Blue Pill.

STM32 также поставляется с интерфейсом USB, но в отличие от Arduinos на базе ATmega, где используется внешний мост USB-UART, линии передачи данных USB подключаются напрямую к целевому микроконтроллеру. По умолчанию платы Blue Pill программируются с помощью внешнего программатора ST-link, поэтому USB полностью контролируется приложением, запущенным на плате, и может использоваться для реализации e.грамм. устройство HID или полностью настраиваемый протокол USB.

Я настроил свою Blue Pill с виртуальным последовательным портом USB CDC, а затем попытался загрузить на него скетч Arduino ISP. Сработало с первого раза, без доработок! Я нашел это довольно неожиданным, поскольку STM32 — это семейство микроконтроллеров, основанных на архитектуре ARM Cortex-M, а не на архитектуре AVR. Это свидетельство переносимости фреймворка Arduino и усилий, которые прилагаются для поддержки форков для оборудования, отличного от AVR.

STM32 Blue Pill в качестве ISP

Проблема с необходимостью перезапуска программатора во время загрузки также исчезла, и, поскольку я предпочел меньший форм-фактор Blue Pill, который хорошо фиксируется на макетной плате, я больше не возился с Arduino Mega.

Краткое примечание о PlatformIO

В какой-то момент во время своего путешествия во встраиваемое программирование я обнаружил PlatformIO, которая представляет собой действительно отличный инструментарий / IDE для самых разных встраиваемых платформ. По сравнению с Arduino IDE, которая очень проста, PlatformIO интегрируется с популярными IDE, такими как Visual Studio Code, и позволяет проектам легко следовать современным методам разработки программного обеспечения и в целом является одной из самых хороших IDE для C и C ++, которые я до сих пор использовал.

Мне очень нравится его кроссплатформенная поддержка, его управление зависимостями, простота добавления CI с помощью Github Actions и возможность многоцелевого использования проектов для нескольких платформ.Arduino можно использовать в качестве платформы, но она также поддерживает различные платформы для целевой платформы, такие как простой AVR-libc для AVR или ESP-IDF для ESP32. Также очень легко импортировать эскизы Arduino, превращая их в структуру проекта, поддающуюся контролю версий. Я очень рекомендую его, чтобы он вырос из Arduino IDE.

Что скрывается за макетами?

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

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

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

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

Разработка схемы

Недавно я просмотрел отличный учебник Филиппа Салмони по KiCad, в котором он проходит через весь процесс проектирования схемы на базе микроконтроллера STM32, выбора компонентов, компоновки и маршрутизации, а также подготовки Gerber и других файлов, необходимых для изготовления и сборки.Он также рассказывает о передовых методах работы и типичных ошибках в компоновке и маршрутизации.

Я решил использовать KiCad для проектирования схем. Моей отправной точкой для дизайна была эталонная схема доски Blue Pill. Я в основном скопировал его, но внес несколько изменений:

  • Заменил стабилизатор напряжения на AMS1117 в корпусе SOT-223, чтобы получить больший запас по максимальному току.
  • Заменен подтягивающий резистор на линии передачи данных USB + с 1,5 кОм на + 3,3 В (было 4.От 7кОм до + 5В). Это соответствует спецификации USB для идентификации устройства как полноскоростного USB. Некоторые микроконтроллеры STM32 имеют этот подтягивающий резистор внутри, чтобы иметь возможность управлять идентификацией скорости в прошивке, но STM32F103 этого не делает.
  • Я привязал контакты BOOT0 и BOOT1 к земле, так как я планировал программировать это устройство только через SWD, что не требует каких-либо изменений в селекторах загрузки.
  • Я пропустил кристалл 32,768 кГц, поскольку программисту не нужны часы реального времени.
  • Я заменил все пассивные компоненты на более крупные 0805, для удобства пайки.

Теперь, когда у меня есть базовый «шаблон» для платы на базе STM32, я добавил определенные биты, которые позволят мне программировать ATtiny85s. Это было довольно просто:

  • Я подключил соответствующие выводы ISP (MISO, MOSI, SCK) целевого ATtiny к выводам SPI STM32.
  • Для линии сброса я просто выбрал случайный вывод GPIO.
  • Я решил добавить еще одно подключение к входу внешних часов ATtiny85, чтобы иметь возможность программировать ATtiny85, у которых установлены биты предохранителей, требующие внешних часов.
  • Я добавил резисторы 1 кОм на все линии передачи данных между STM32 и ATtiny85. Если случится так, что и STM32, и ATtiny85 имеют выводы, установленные как выходы, и они находятся в противоположном логическом состоянии, это может вызвать протекание высокого тока, повреждая одну или обе микросхемы. В этом не было строгой необходимости, поскольку у Arduino как ISP все контакты установлены на высокий импеданс (вход), прежде чем целевой чип AVR будет переведен в режим программирования через контакт сброса. Тем не менее, это все еще хорошая идея, поскольку может случиться так, что программист не сможет сбросить цель по разным причинам.
  • Я добавил статусный светодиод.
  • Я добавил еще один DIP-разъем для ATtiny84 на всякий случай, со всеми линиями передачи данных, подключенными параллельно с ATtiny85, но с собственными защитными резисторами.

Окончательная схема

Схема и трассировка

Я решил разложить плату на 4-х слойной плате с сигналами на внешних слоях, землей и платой питания посередине. В основном это потребовало много проб и ошибок, чтобы сделать плату относительно компактной.В этой части очень пригодился учебник Филипа Сэлмони, но также и книга Рика Хартли «Как добиться надлежащего заземления» , и я попытался работать в рамках этих ограничений в грубом порядке приоритета:

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

Я проложил линии передачи данных USB как дифференциальную пару, хотя я не стал беспокоиться о согласовании перекосов и трассировках с контролируемым импедансом, так как решил, что это не имеет особого значения на таком коротком расстоянии и с высокоскоростным USB, что является всего 12 Мбит / с.

Сигналы (верхний и нижний слой)

Некоторые люди из сабреддита r / PrintedCircuitBoard были достаточно любезны, чтобы просмотреть мой дизайн после того, как я закончил с ним, и я учел отзывы — в основном о размещении пассивных компонентов и оконечной нагрузки USB.

Изготовление и сборка

Мои платы были изготовлены JLCPCB, так как они имеют удивительно низкие цены и быструю обработку прототипов небольших объемов. Я заплатил 14 долларов за 10 досок + доставку и получил платы в течение недели. JLCPCB также предлагает сборку SMD, и, поскольку я был немного напуган перспективой пайки крошечных компонентов SMD, я сначала хотел воспользоваться этим. К тому времени, как я разместил заказ, я передумал, так как решил, что было бы неплохо изучить и этот навык.Поэтому я заказал компоненты у Mouser. Я также купил паяльную пасту, флюсовые ручки, пинцет для поверхностного монтажа и дешевую станцию ​​горячего воздуха.

Для первой платы я собирал ее поэтапно, тестируя работоспособность в каждой точке — я начал с USB-разъема, регулятора напряжения и всех пассивных компонентов в силовой части. Индикатор питания загорелся, когда я подключил USB-кабель. Следующей частью был кристалл с его нагрузочными конденсаторами и микроконтроллер со всеми разделительными конденсаторами и понижающими резисторами, который было немного сложнее проверить, поскольку он еще не был запрограммирован, поэтому он ничего не делал.Я попытался исследовать контакты кварцевого генератора, но не увидел никакого сигнала. Итак, я продолжил с разъемами DIP и разъемом SWD, после чего подключил его к ST-link, и он был распознан! После того, как я загрузил прошивку, я смог увидеть красивую синусоидальную волну 8 МГц, поэтому кажется, что STM32 использует внутренний RC-генератор, когда он пуст с завода.

Вот финальный результат во всем блеске

Блестящий программатор AVR

Прошивка и тестирование

Прошивка была в значительной степени неизмененной Arduino как эскиз ISP.Я просто переназначил контакты, которые использовались для различных сигнальных линий, немного подчистил директивы препроцессора, поскольку требовалось поддерживать только одну плату, и добавил поддержку для обеспечения внешней тактовой частоты 16 МГц.

Последняя часть, которая меня больше всего беспокоила, — это USB. Я подключил программатор к своему компьютеру и был очень рад, что устройство было распознано.

Теперь пришло время окончательного теста — программирования ATtiny85. Я вставил в сокет пустой ATtiny85 и попытался загрузить образец кода

.
  tibordp @ persephone $ avrdude -P / dev / ttyUSB0 -b19200 -p attiny85 \
  -С / домой / тибордп /.platformio / пакеты / инструмент-avrdude / avrdude.conf \
  -c stk500v1 -b 19200 -e -D -U flash: w: .pio / build / attiny85 / firmware.hex: i

avrdude: устройство AVR инициализировано и готово принимать инструкции

Чтение |

avrdude: подпись устройства = 0x1e930b (вероятно, t85)
avrdude: стирающий чип
avrdude: чтение входного файла ".pio / build / attiny85 / firmware.hex"
avrdude: запись flash (472 байта):

Написание |

avrdude: записано 472 байта флеш-памяти
avrdude: проверка флэш-памяти на соответствие .pio / build / attiny85 / firmware.hex:
avrdude: загрузить данные флэш-памяти из входного файла.pio / build / attiny85 / firmware.hex:
avrdude: входной файл .pio / build / attiny85 / firmware.hex содержит 472 байта
avrdude: чтение данных флеш-памяти на кристалле:

Чтение |

avrdude: проверяем ...
avrdude: проверено 472 байта флэш-памяти

avrdude: safemode: Предохранители исправны (E: FF, H: DF, L: D1)

avrdude сделано. Спасибо.  

Спасибо , вам , avrdude!

Увы, когда я попробовал протестировать ATtiny84, случилась катастрофа. Сколько бы я ни пытался, avrdude просто не распознает чип.Я проверил целостность с помощью мультиметра, и вроде все было подключено правильно. Я также пробовал прощупывать сигнальные линии во время загрузки, и сигнал присутствовал хорошо.

Итак, я вернулся к схеме, чтобы проверить, все ли я правильно соединил. Оказалось, что я неправильно подключил линию MOSI к контакту 6 вместо контакта 7 DIP-разъема ATtiny84 (контакт 6 — это PA7 , 7-й контакт порта ввода-вывода A, отсюда и путаница). К счастью, это было легко исправить, отрезав штырь 6 DIP-гнезда и установив небольшую перемычку между отверстиями 6 и 7 на плате.

Потом все заработало и у меня был рабочий программатор для ATtiny85 и ATtiny84 (тоже должен работать для семейства ATtinyx41, но я его не тестировал, так как его нет под рукой).

Что дальше?

В течение следующих нескольких недель я собрал еще 4 платы, пока у меня не закончились кварцевые генераторы и DIP-разъемы. Я постепенно становился лучше, и к доске 5 я смог сократить весь процесс примерно до 10 минут. Оказалось, что мои опасения по поводу пайки SMD были совершенно необоснованными.Поверхностное натяжение паяльной пасты помогает компонентам самовыравниваться на контактных площадках, поэтому достаточно нанести необходимое количество пасты, грубо расположить компоненты и нагреть их горячим воздухом. Плюс — проще доработать, если вы допустили ошибку, немного горячего воздуха, и вы можете легко удалить весь компонент. По сравнению с этим распайка многополюсных компонентов, таких как микросхемы DIP, намного сложнее.

Наличие специального программатора для ATtiny85 оказалось действительно удобным.На данный момент я выполнил несколько небольших проектов, таких как таймер для кофе / кухни и ШИМ-контроллер с обратной связью по напряжению для преобразователей постоянного / постоянного тока, который использует встроенную ФАПЧ ATtiny85, позволяющую переключаться на высокой частоте (до 64 МГц). , хотя разрешение становится хуже за ~ 250 кГц).

Shiny AVR Programmer — это открытый исходный код на GitHub, как файлы дизайна печатной платы для KiCad, так и прошивка. Запросы на вытягивание приветствуются!

Если я когда-нибудь вернусь к этому проекту, мне бы очень хотелось добавить поддержку последовательного программирования высокого напряжения.ATtiny85 имеет так мало контактов ввода / вывода, что специальный вывод RESET действительно может ограничить возможные приложения. Есть способ использовать вывод RESET в качестве вывода ввода-вывода общего назначения, но впоследствии он делает микросхему неуправляемой с помощью обычного программатора ISP. Чтобы запрограммировать такие микросхемы, используется программатор, который может подавать +12 В на вывод RESET, но протокол программирования также полностью отличается, поэтому реализация потребует дополнительной работы со стороны прошивки (а также возможности для повышения + 5 В от USB, но это относительно просто по сравнению).

А пока я, вероятно, отложу ATtiny85s на некоторое время и продолжу путешествие по ландшафту электронной инженерии в другом направлении. Я еще не уверен, что это будет, но в настоящее время ведущий претендент — изучить HDL и поэкспериментировать с FPGA. Будь то это или другие аналоговые / ВЧ-штуки, возможность разработать собственную печатную плату, без сомнения, будет очень полезным навыком.

Ввод-вывод микропрограмм ATtiny соответствует AVRdude

avrdude: Version 6.0.1, скомпилировано 15 апреля 2015 г. в 19:59:58

Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/

Copyright (c) 2007-2009 Joerg Wunsch

Общесистемный файл конфигурации: «f: \ ArduinoIDE \ hardware \ tools \ avr \ bin

\ avrdude.conf»

Использование порта: COM6

Использование программатора: stk500v1

Переопределение скорости передачи данных: 19200

Часть AVR : ATtiny13

Задержка стирания чипа: 4000 мкс

PAGEL: P00

BS2: P00

Расположение RESET: выделенный

RETRY pulse: SCK

режим последовательного программирования: да

режим параллельного программирования: да

Тайм-аут: 200

StabDelay: 100

CmdexeDelay: 25

SyncLoops: 32

ByteDelay: 0

PollIndex: 3

PollValue: 0x53

PollValue: 0x53

PollValue:

PollValue

Тип памяти Режим Задержка Размер Indx Paged Size Size # Макс.страниц Мин.Вт

Вт Обратное чтение

———— —- —— —— —- — —— —— —- —— —— —

— ———

eeprom 65 5 4 0 нет 64 4 0 4000 4000 0xff 0xff

флэш 65 6 32 0 да 1024 32 32 4 500 4500 0xff 0xff

подпись 0 0 0 0 нет 3 0 0 0 0 0x00 0x00

блокировка 0 0 0 0 нет 1 0 0 4500 4500 0x00 0x00

калибровка 0 0 0 0 нет 2 0 0 0 0 0x00 0x00

lfuse 0 0 0 0 нет 1 0 0 4500 4500 0x00 0x00

hfuse 0 0 0 0 нет 1 0 0 4500 4500 0x00 0x00

Тип программатора: STK500

Описание: Atmel STK500 Версия 1.x прошивка

Версия аппаратного обеспечения: 2

Версия прошивки: 1.18

Верхняя карта: Неизвестно

Vtarget: 0,0 В

Varef: 0,0 В

Осциллятор: Выкл.

Период SCK: 0,1 мкс

устройство инициализировано и готово к приему инструкций

Чтение | #################################################################################################### | 100% 0.05s

avrdude: подпись устройства = 0x1e9007

avrdude: safemode: lfuse читается как 6A

avrdude: safemode: hfuse читается как FF

avrdude: ПРИМЕЧАНИЕ: будет указан цикл стирания flash-памяти выполнить

ed

Чтобы отключить эту функцию, укажите параметр -D.

avrdude: стирающий чип

avrdude: чтение входного файла «blink.hex»

avrdude: запись flash (352 байта):

Запись | #################################################################################################### | 100% 0.90s

avrdude: записано 352 байта флэш-памяти

avrdude: проверка флэш-памяти на предмет мерцания .hex:

avrdude: загрузить данные флэш-памяти из входного файла blink.hex:

avrdude: входной файл blink.hex содержит 352 bytes

avrdude: чтение данных флэш-памяти на кристалле:

Чтение | #################################################################################################### | 100% 0,55 с

avrdude: проверка …

avrdude: 352 байта флэш-памяти подтверждено

avrdude: safemode: lfuse читается как 6A

avrdude: safemode: hfuse 9000 читается как av2 : Предохранители исправны (H: FF, E: FF, L: 6A)

avrdude done.Спасибо.

>> Маленькая проволока

Рассказ

Когда я увидел реализацию usbtiny в simpleavr на attiny45, я подумал, что было бы круто, если бы я сделал его комплектную версию с минимальным форм-фактором. Затем я разработал печатную плату и отправил ее на изготовление первого прототипа. Позже я подумал, что если я захочу продать это, это было бы намного круче и больше подходило бы с концепцией «оборудования с открытым исходным кодом», если бы я продвинул этот проект на шаг вперед. Итак, я попытался приспособить что-нибудь еще к устройству, и вышел этот проект Little Wire .

Little Wire — это многофункциональный аппаратный инструмент с открытым исходным кодом, управляемый через USB, в минимальном форм-факторе, разработанный ihsan Kehribar.

Я сотрудничал с Seeedstudio, и они произвели для меня первую партию, и комплектов Little Wire были запущены в эксплуатацию в июне 2012 года. После того, как эта партия была завершена в апреле 2013 года, заметил разницу во времени , я решил не продолжать производство их по контракту изготовление. В настоящее время вы не можете купить готовые комплекты Little Wire , но, поскольку это проект OSHW, вы можете бесплатно создать свою собственную версию.

Новости: Digistump начала продавать комплекты адаптеров для всех, кто хочет более удобно использовать свои Digispark с прошивкой Littlewire. Вы можете проверить их здесь:
http://digistump.com/products/99
http://digistump.com/products/100
http://digistump.com/products/101

Текущая версия микропрограммы / программного обеспечения: v1.3 . Если ваш Little Wire не загружен с прошивкой v1.3 или v1.2, вы все равно можете использовать старый веб-сайт для справки или вы можете загрузить архивные версии программного обеспечения / прошивки со страницы загрузок, но я советую вам обновите прошивку.Ниже вы узнаете, как это сделать.

Особенности

  • usbtinyisp совместимый программатор AVR.
  • 4-х канальный GPIO.
  • АЦП с разрешением 10 бит.
  • 2 параллельных аппаратных выхода ШИМ.
  • SPI интерфейс.
  • интерфейс I2C.
  • Интерфейс 1-Wire
  • Светодиодный интерфейс
  • WS2812 RGB.
  • Поддержка нескольких устройств.

Экспериментальные особенности

Примечание: Этот инструмент должен получать инструкции во время выполнения через USB.Он не может работать в безкомпьютерной среде.

Назначение контактов

шелкография usbtinyisp Жесткий ШИМ Мягкая ШИМ АЦП I2C SPI Onewire WS2812 CDC-232
контакт1 MISO CH_B СН_2 DO ДАННЫЕ TX
контакт2 SCK CH_3 CH_1 SCL SCK ДАННЫЕ ДАННЫЕ RX
контакт3 СБРОС CH_0 CS ДАННЫЕ
контакт 4 MOSI CH_A CH_1 SDA DI ДАННЫЕ

Поддержка программного обеспечения

Когда я впервые выпустил Little Wire , в нем были встроенные C, C ++, C # и поддержка обработки через пользовательские библиотеки, написанные мной.Позже поддержка нескольких программных библиотек стала очень сложной задачей. Поэтому я отказался от поддержки C ++, C # и библиотек обработки с выпуском v1.3 Little Wire . Если вы все еще используете прошивку v1.0 / v1.1, вы можете посмотреть архивные выпуски, чтобы получить поддержку для этих языков. Остерегайтесь , программные библиотеки не поддерживают обратную / прямую совместимость с , и я определенно советую вам установить последнюю версию прошивки v1.2 на свое устройство.

Документацию

Doxygen для текущей библиотеки C можно найти здесь: http: // littlewire.github.io/documentation/

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

Библиотека Ruby:

littlewire.rb

Хотя это не официальная и полная библиотека для Little Wire , она хорошо разработана и заслуживает упоминания. Эта библиотека поддерживается @Bluebie и охватывает большинства из функций Little Wire .Если вы хотите управлять своим устройством Little Wire из Ruby, вам стоит поискать его. Вы можете найти подробную информацию об этой библиотеке здесь: https://github.com/Bluebie/littlewire.rb

Обновление / установка прошивки

Если у вас голый чип Attiny85:

  • Сначала вы должны загрузить программное обеспечение загрузчика micronucleus на свой чип и правильно установить предохранители. Ниже приведен пример

    .
      avrdude -c usbtiny -p t85 -U flash: w: micronucleus-1.02.hex -U lfuse: w: 0xe1: m -U hfuse: w: 0x5d: m -U efuse: w: 0xfe: m
      
  • После того, как вы загрузите загрузчик в свой чип, вы можете выполнить следующие действия.

Если на вашем Attiny85 установлен загрузчик

micronucleus :

Если на вашем Attiny85 установлен загрузчик

fast tiny & mega UART :
  • Вы можете загрузить последнюю версию прошивки через встроенный загрузчик, но я не рекомендую использовать старый загрузчик, вам следует его сменить.Микронуклеус действительно хорош …
  • Вы можете использовать программатор HVSP, такой как STK500, AVR Dragon, или устройство сброса предохранителей высокого напряжения, такое как «HV Rescue Shield» или «HSVP Fuse Resetter», чтобы полностью перезагрузить устройство. После отключения предохранителя RSTDISBL вы можете выполнить «Если у вас голый чип Attiny85» .
  • Можно купить пустой чип Attiny85 и начать все сначала.
  • Вы можете заменить загрузчик, загрузив «прошивку для обновления». Этот тип прошивки — особенное изобретение Блуби ( Jenna Fox ), которое заменяет встроенный загрузчик на микронуклеус.Вы можете узнать больше об этой технике здесь: https://github.com/Bluebie/micronucleus-t85/tree/master/upgrade. Это очень экспериментальный метод, но многие люди сообщили, что он работает, и вы, возможно, тоже захотите его попробовать.

Если вы купили

Little Wire в Seeedstudio:
  • К сожалению, загрузчик micronucleus не входил в число , когда я разрабатывал версию 1.0 для Little Wire . Поэтому ваше устройство имеет быстрый загрузчик , крошечный и мега-UART .Вы можете выполнить указанные выше действия.

Где предварительно скомпилированные двоичные файлы, драйверы и архивы?

Вы можете найти их на странице загрузок: http://littlewire.github.io/downloads.html

Референтные проекты

  • Этот проект основывается на:

Обратите внимание:

  Не используйте Adafruit USB VID / PID без письменного разрешения Adafruit Industries, LLC и
Лимор "Ладада" Фрид (support @ adafruit.com). Разрешено использование Littlewire, Ихсан Кехрибар.
и Seeed Studio от Adafruit Industries, LLC, чтобы использовать Adafruit USB VID / PID для littlewire
(Артикул: AVR06071P)
  
Аппаратный взлом

: извлечение прошивки из микроконтроллеров Atmel

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

В этой первой части мы рассмотрим микроконтроллер Atmel Atmega2561. Чтобы получить доступ к прошивке микроконтроллеров Atmel, мы будем читать данные напрямую с контроллера через последовательный интерфейс программирования (SPI).Для этого требуются следующие инструменты и программное обеспечение:

Используя Bus Pirate в сочетании с программным обеспечением с открытым исходным кодом avrdude , микропрограмму микроконтроллера Atmel AVR можно извлечь из флэш-памяти микроконтроллера через SPI. Приложение avrdude можно скачать здесь.

Стандартная прошивка Bus Pirate должна работать нормально, если вы не извлекаете флеш-память из определенных микроконтроллеров Atmel, таких как ATmega 2560 и 2561. Прошивка Bus Pirate может иметь проблемы с извлечением памяти выше 128 КБ на ATmega 2560-2561.Чтобы решить эту проблему, вам необходимо установить прошивку STK500v2 на Bus Pirate. Прошивка STK500v2 превратит Bus Pirate в клон отладчика AVR. Прошивку для этого можно скачать здесь, а инструкции по обновлению прошивки Bus Pirate можно найти на этом веб-сайте.

После того, как Bus Pirate будет обновлен прошивкой STK500v2, вы можете подключить его к порту SPI. Если вам повезет, у производителя устройства есть разъемы на плате, к которым вы можете подключиться, но в любом случае вам нужно будет найти и проверить подключения заголовка перед подключением Bus Pirate — и, если необходимо, припаять некоторые провода или разъемы к плате.Другой вариант — напрямую подключиться к микропроцессору.

На этом этапе таблица данных пригодится для определения распиновки микроконтроллера. Используя таблицу данных Atmega2561, вам нужно будет определить и найти контакты SPI «Power» и «Ground».

  • MOSI = серийный вход Master Out
  • MISO = Master In Serial Out
  • SCLM = последовательные часы
  • RESET = Сброс микроконтроллера
  • GND = Земля
  • Vcc = стандартное напряжение 3.3 В постоянного тока

Для этого вы можете использовать мультиметр, настроенный для проверки целостности цепи, чтобы отследить эти контакты до разъема на плате или более легкого места на печатной плате для пайки проводов, которые можно подключить к Bus Pirate.


Источник изображения

Как только это будет выполнено, вы можете подключить Bus Pirate к портам SPI чипа:

Atmega2561 Автобус Пиратский
Штифт SCK 11 SCLK
Вывод MOSI 12 MOSI
MISO контакт 13 MISO
Пин сброса 20 CS
Контакт 21 Vcc Vcc 3.3vdc
GND контакт 22 GCC

После подключения вы можете использовать приложение avrdude для извлечения флэш-памяти из микроконтроллера ATmega 2561, используя следующую команду:

avrdude -p m2561 -c stk500v2 e -P / dev / ttyUSB0 -u flash: r: flash.bin: r

Для микроконтроллера Atmel AVR используется переключатель -p . Коммутатор -c идентифицирует устройство интерфейса SPI, -P указывает на местоположение устройства Bus Pirate — в этом случае он подключен к системе как ttyUSB0 — и, наконец, -u сообщает avrdude извлечь во флеш-память и запишите его во флеш-память.мусорное ведро.

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

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

Нужна помощь в обеспечении безопасности вашего Интернета вещей? Узнайте больше о наших услугах по тестированию безопасности Интернета вещей.
Начать

Примечания строителей ансамбля RX

Локальный осциллятор и управление — Введение

Общие

На этом этапе завершается установка компонентов для изолированной заземляющей шины USB и реализованы функции микроконтроллера и гетеродина.

В микроконтроллере реализовано USB-устройство, которое может управлять частотой программируемого генератора (Si570) и выдает программные сигналы переключения диапазона для выбора из диапазонов 0, 1, 2 и 3.Эти диапазоны являются «суперполосами», которые, в зависимости от выбора производителя, обеспечивают покрытие традиционных HF-диапазонов или набора HF-диапазонов плюс 6 метров.

(перейти непосредственно к построению заметок)

Схема местного генератора и управления

(Контрольные точки резистора (шпилька, верхний или левый вывод), физически установленные на плате, отмечены на схеме красными точками)

(Щелкните, чтобы увидеть полную схему)

(на схеме выше есть интерактивные области, которые можно использовать для навигации)

(перейти непосредственно к построению заметок)

Спецификация местного осциллятора и системы управления

Этап ведомости материалов

(изображения резисторов и цветовые коды любезно предоставлены WIlfried, программой DL5SWB R-Color Code)

Локальный осциллятор и сводные данные по сборке

  • Установить защитные верхние части
  • Установить нижние компоненты
  • Заведите и установите T1
  • Установить Ics на верхней части
  • Установить оставшиеся компоненты верхнего строения
  • Загрузите и установите необходимое программное обеспечение
  • Испытайте сцену

Подробные примечания по сборке локального осциллятора и управления

Нижняя часть платы

Установить защитные детали верхней части

Сначала установите эти резисторы, чтобы защитить от брызг припоя на выводах 4 и 8 Si570 (см. Ниже)

>
Чек Обозначение Компонент Маркировка Категория Ориентация Примечания
R07 2.2k 1 / 6W 5% красный-красный-красный-желтый 1 / 6W N-S
R08 2,2k 1 / 6W 5% красный-красный-красный-желтый 1/6 Вт N-S
Установить нижние компоненты

Будьте осторожны при установке C35, чтобы избежать попадания припоя в соседние отверстия для первичных обмоток T1.

Обратите внимание на фотографию ориентации Si570 и установите с правильной ориентацией.Обратите особое внимание на штифты 4 и 8, так как их посадка довольно мала по сравнению с другими контактными площадками.

Верх платы

Заведите и установите T1

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

Поскольку обе обмотки имеют одинаковую длину, идентифицировать «первичную» и «вторичную» обмотки легко: выберите одну обмотку (т. Е. Пару проводов, которые показывают непрерывность) и назовите ее «первичной»; оставшаяся обмотка является «вторичная» обмотка.

Если вы не знакомы с намоткой и установкой индукторов, вы можете обратиться к советам по конструкции WB5RVZ для катушек (тороидальных) и трансформаторов (тороидальных и бинокулярных).Щелкните здесь, чтобы узнать подробнее об идентификации сердечников тороида.

Расшифровка спецификаций трансформатора:

Обмотки трансформаторов указываются с использованием шаблона «nnT / wXmmT» или «wXmmT / nnT», где:

  • «nn» — количество витков в одной обмотке
  • «мм «- количество витков в нескольких обмотках
  • « w »= количество нескольких витков (например, 2 = бифилярный; 3 = трехзаходный и т. д.)

Таким образом, например,« 18T / 2x9T бифиляр № 30 » означает, что с помощью провода №30 создать одну 18-витковую первичную обмотку и две 9-витковые вторичные обмотки; «Бифиляр 2x9T / 18T №30» означает, что с помощью провода №30 можно получить две 9-витковые первичные обмотки и одну 18-витковую вторичную обмотку.

907 30 футов в комплекте)

Чек Обозначение Компонент Маркировка Категория Ориентация Примечания
magwire
T01 2T Бифиляр # 30 (4 «) на BN-43-2402 Xfrmr

изменение от 3Trifilar

Установить Ics на верхней части

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

Установить оставшиеся компоненты верхнего строения

Осторожно установите резисторы и диоды, расположенные рядом с областью разъема USB. Строители, как известно, вставляли их не в те отверстия. Просмотрите макет платы и столбец ориентации ниже, чтобы дважды проверить ориентацию.

Корпус каждого стабилитрона должен быть расположен над кружками шелкографии для D1 и D2 на плате, а диоды установлены перпендикулярно плате в виде шпильки.Полосатый конец каждого диода находится на выводе диода, который возвращается к печатной плате.

Проверка Обозначение Компонент Маркировка Категория Ориентация Примечания
D1 BZX55C3V3de BZX55C3V3de Осевой

Конец полосы диода — шпилька — см. Схему платы

D2 BZX55C3V3 3.Стабилитрон 3 В BZX55C Осевой

Конец полосы диода — шпилька — см. Схему платы

C03 0,01 мкФ 103 Керамика горизонт
R01 68 1 / 6W 5% bl-gry-blk-gld 1 / 6W N-S
R02 68 1 / 6W 5% bl-gry-blk-gld 1 / 6W N-S
R03 2.2k 1 / 6W 5% красный-красный-красный-желтый 1 / 6W E-W
R05 2,2k 1 / 6W 5% красный-красный-красный-желтый 1 / 6W W-E
R06 2,2k 1 / 6W 5% красный-красный-красный-желтый 1 / 6W W-E
R09 2,2k 1 / 6W 5% красный-красный-красный-желтый 1 / 6W W-E

изменено от 221

R12 10 k 1 / 6W 5% brn-blk-ora-gld 1 / 6W N-S
R13 10 k 1 / 6W 5% brn-blk-ora-gld 1 / 6W N-S
R04 1 M 1 / 6W 5% brn-blk-grn-gld 1/6 Вт E-W
Загрузите и установите необходимое программное обеспечение

Все последние версии основных программ конфигурации прошивки, драйвера USB и соответствующую документацию можно получить на сайте Fred PE0FKO:

Для тестирования (а затем и эксплуатации) вашей установки вам необходимо загрузить и установить необходимые программное обеспечение (программы SDR и библиотеки динамической компоновки, а также драйверы оборудования.Фактические действия и программы могут отличаться в зависимости от операционной системы Windows на вашем компьютере. версия (XP, Vista или Windows 7) и архитектура ЦП / память (32-разрядная или 64-разрядная).

Следующие ссылки предоставлены и по состоянию на 08.07.2010 актуальны:

* Примечание по установке драйверов USB PE0-FKO: на веб-сайте Фреда есть отличное пошаговое руководство по установке драйвера USB.

Установить драйвер

Правильная процедура — загрузить драйвер и поместить его в подходящую папку, затем подключить USB-кабель. Windows должна обнаружить новое оборудование, и вам необходимо вручную указать ему папку, содержащую диск.Затем он должен правильно установить. Конечно, работает на Win2000 и XP. В Vista или Windows 7 раньше возникали некоторые проблемы с подписью драйверов. На форуме были сообщения, описывающие методы решения этих проблем. Одно из таких решений рассматривается в авторские заметки строителей MOBO4.3.

LibUSB — Ошибка «Неизвестное устройство»

Другие столкнулись с ужасной проблемой «Неизвестное устройство» при подключении кабеля USB после установки драйвера LibUsb.Эта проблема с «неизвестным устройством» (и решение для тех, кто использует беспроводную мышь Logitech и / или различные адаптеры беспроводного подключения к Интернету) обсуждается в сообщениях № 45071 и 47755 в Yahoo Softrock40 Group

.
Установить / запустить CFGSR («ConFiGureSoftRock»)

Если после установки драйвера вы запустите CFGSR, то либо автоматически «открыть» прошивку, а если нет, вам нужно перейти на «USB» вкладку и выберите ее из списка, отображаемого в нижнем поле. Каким образом зависит от того, настроен ли у вас CFGSR для автоматического подключения при запуске программы или нет.

Тест местного генератора

Вы можете использовать ‘CFGSR’ для тренировки Si570, используя вкладку ‘Tune’, которая делает его в «VFO». Просто случай выставления частоты, а Si570 должен выводить сигнал с частотой, в 4 раза превышающей частоту, отображаемую на основном дисплее на экран. Вкладка «Test» также может быть использована для просмотра всех различных Si570. регистры и т. д., но, вероятно, ненужные, как если бы вы могли слышать или измерять Выходная частота Si570, вы знаете, она рабочая.

Локальный осциллятор и этап управления завершены

Верх платы

Нижняя часть платы

Тестирование местного генератора и управления

Потребляемый ток

Испытательная установка

Включите обычную сторону схемы платы

Измерьте потребляемый ток на кабеле питания 12 В (БЕЗ подключенного USB)

Подключите кабель USB и подайте питание 12 В на главную цепь

Измерьте потребляемый ток на кабеле питания 12 В (при подключенном USB).Вы должны получить немного большее потребление тока.

Контрольные измерения
Testpoint Units Номинальное значение Авторское Yours
Потребляемый ток — NO USB mA 4.3 _____61 _______ USB 5,3 _______

Испытательная обмотка Т1

Испытательная установка
С помощью омметра проверьте целостность цепи между правой контактной площадкой C35 (точка с маркировкой «A») и заземлением USB (точка с надписью «B»).У вас должно получиться соединение (~ 0 Ом). Затем проверьте целостность цепи (~ 0 Ом) между правой контактной площадкой C35 (точка с маркировкой «A») и обычным заземлением (точка с меткой «C»). Вы НЕ должны получать непрерывность; если есть непрерывность, значит, у вас короткое замыкание в обмотках или они пересеклись.
Контрольные измерения
Testpoint Units Номинальное значение Авторское Ваше
«A» — «B» Ом ~ 0 _______ « Ом ~ бесконечность _______

Выходы каскада гетеродина

Испытательная установка

Здесь мы хотим измерить выход (4-кратная центральная частота для делителей).Измеряется WRT (обычное) заземление (на проводе шпиона R9).

Настройка

Убедитесь, что все программное обеспечение, драйверы и т. Д. Установлены. Подключите USB-разъем через USB-кабель к ПК. Вы должны услышать звук «BoopBoop», который издает компьютер, когда он распознает устройство (ансамбль), подключенное к USB-порту.

Затем запустите CFGSR.exe, и вы должны получить следующий экран:

Затем проверьте вкладку «Si570». Должно получиться так:

Обратите внимание, что выходы локального генератора измеряются относительно аналоговой заземляющей пластины, а НЕ относительно гальванически изолированной заземляющей шины USB.Шунт / QSD EN является хорошей точкой для этого заземления.

Используя программное обеспечение CFGSR (на вкладке «Настройка»), протестируйте сценарии для установки центральной частоты (помните, Si570 выдает сигнал, который в 4 раза превышает желаемую центральную частоту).

Измерьте выходной сигнал на шпильке R9.

Ниже приведен пример настройки Si570 в CFGSR, выбрав центральную частоту 6,05 МГц (с выходной частотой Si570 4x или 24,2 МГц. (Не обращайте внимания на паршивый осциллограф за кулисами — выход действительно квадратный). wave, но это дешевый USB-осциллограф, который не очень хорошо регистрирует прямоугольные ВЧ-волны.)

Вы можете навести указатель мыши на частоту в поле центральной частоты и повернуть колесико мыши. Центральная частота будет увеличиваться или уменьшаться, а выходная частота гетеродина (4x) будет увеличиваться или уменьшаться в 4 раза быстрее, чем центральная частота.

Джон, KB6QL, обнаружил этот трюк для тех, у кого нет осциллографа, счетчика или ВЧ-радиомодуля, чтобы использовать его при тестировании выхода гетеродина:

«Оказывается, гетеродин можно настроить на частоту, которая находится в диапазоне FM. Итак, как быстро и грязно, я достал свой маленький MP3-плейер и FM-радио и настроил его на эту частоту, и пусть шнур / муравей гарнитуры накинут приемник.Это дало мне полное затихание. Затем я переключил приемник на другую частоту и успокоение ушло «.

Устранение неисправностей

Если гетеродин колеблется на заводской частоте по умолчанию, но не реагирует на ваши попытки изменить частоту, в первую очередь следует обратить внимание на пайку Si570, особенно на контакты 7 и 8. Эти контакты — и их пайка — являются единственной наиболее часто встречающейся причиной невозможности изменить частоту Si570.

Проверка выходов выбора фильтра

Тестовая установка

Снова запустите CFSR и настройте гетеродин на четыре частоты (каждая находится в середине одной из полос):

  1. 2 МГц
  2. 6 МГц
  3. 12 МГц
  4. 24 МГц

Измерьте напряжения в «FL SEL 0» (шпилька R13) и «FL SEL 1» (шпилька R12) по отношению к обычному заземлению.

(Высокие / низкие значения R12 и R13 используются в таблице истинности переключения ABPF, показанной во вводных параграфах этапа автоматического полосового фильтра.

Контрольные измерения
907 Диапазон МГц 1)
Testpoint Единицы Номинальное значение Авторское Твое
R12 (для диапазона 2 МГц 0) Vdc 0 100 мВ 62____762_ 907 В постоянного тока 0 100 мВ _______
R12 (для диапазона 12 МГц 2) В постоянного тока 5 4.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *