Attiny85 8-разрядный микроконтроллер с внутрисистемно-программируемой flash памятью размером 8 кбайт

Содержание

Шаг 1: Получение файлов

Основными проблемами, с которыми вы можете столкнуться при попытке использовать IR-библиотеку с Attiny, являются ошибки, подобные этой:

C: Program Files (x86) Arduino library IRremote IRremote.cpp: 229: ошибка: «TCCR2B» не был объявлен в этой области

все это связано с таймерами Attiny, отличными от чипа Atmega, но нам не нужно беспокоиться об этом, если вы не хотите изменить код библиотеки (ЭТО НЕКОТОРЫЕ ЖЕСТКИЕ ПЕРСОНАЛЫ, НЕ ИЗМЕНИТЬ КОД), но есть некоторые библиотеки или та же библиотека, просто портированные на Attiny, поэтому коды, которые мы пишем, такие же, как и для arduino. Вы можете скачать zip-файл здесь:

http://gammon.com.au/Arduino/IRremote_Attiny.zip

Просто извлеките файлы и поместите файл IRremote в папку библиотек в папке arduino, путь должен выглядеть следующим образом

C: Users (ваш пользователь) Documents Arduino библиотеки

Вам также нужно скачать это для следующего шага:

HTTP: //forum.arduino.cc/index.php PHPSESSID = f55lj4 …

Шаг 5: Установка и настройка библиотеки V-usb

Загрузите библиотеку с http: //code.google.com/archive/p/vusb-for-arduin …Разархивируйте файл и скопируйте папку library / UsbKeyboard в папку библиотек скетчей.

Теперь вам нужно отредактировать пару файлов для совместимости с ATtiny85 (он настроен для работы с arduino):

А) отредактируйте usbconfig.h:

под «Hardware Config» изменить:

#define USB_CFG_IOPORTNAME Dв## определить USB_CFG_IOPORTNAME B

а также

#define USB_CFG_DMINUS_BIT 4в#define USB_CFG_DMINUS_BIT 0

в разделе «Изменение конфигурации дополнительного оборудования»:

#define USB_CFG_PULLUP_IOPORTNAME Dв## определить USB_CFG_PULLUP_IOPORTNAME B

Чтобы создать полную спецификацию HID для загрузки (иначе мультимедийные ключи работать не будут), также измените:

#define USB_CFG_INTERFACE_SUBCLASS 0 // Загрузкав#define USB_CFG_INTERFACE_SUBCLASS 0x01 // Загрузка

а также

#define USB_CFG_INTERFACE_PROTOCOL 0 // Клавиатурав#define USB_CFG_INTERFACE_PROTOCOL 0x01 // Клавиатура

При желании вы также можете изменить производителя и имя устройства в следующих определениях:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

Б) отредактируйте UsbKeyboard.h:

менять:

PORTD = 0; // TODO: только для USB-пинов?DDRD | = ~ USBMASK;

в

PORTB = 0; // TODO: только для USB-пинов?DDRB | = ~ USBMASK;

Чтобы разрешить изменение кодов клавиш больше 101, также:

0x25, 0x65, // LOGICAL_MAXIMUM (101)чтобы:0x25, 0xE7, // LOGICAL_MAXIMUM (231)

а также

0x29, 0x65, // USAGE_MAXIMUM (клавиатурное приложение)чтобы:0x29, 0xE7, // USAGE_MAXIMUM (приложение клавиатуры)

Вам может понадобиться отредактировать также эти 3 файла:

usbdrv.husbdrv.cUsbKeyboard.h

и каждый раз, когда вы видите, PROGMEM добавляет «const» перед именем типа переменной (например: PROGMEN char usbHidReportDescriptor 35 ==> PROGMEM const char usbHidReportDescriptor 35)

Если это не ясно, посетите http: //forum.arduino.cc/index.php? Topic = 391253.0 # …

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

UsbKeyboard настроен для attiny85

Редактировать: недавно я обнаружил, что Алехандро Лейва (http://github.com/gloob) позаботился об этой библиотеке и, кажется, работает хорошо. Вы также можете попробовать его версию с необходимыми изменениями, которые я сделал, чтобы она работала с attiny, поэтому, если вы хотите проверить это, просто извлеките ее из папки библиотек скетчей.

UsbKeyboard настроен для attiny85 (версия Alejandro Leiva)

Как прошить Digispark ATtiny 85.

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

Для этого понадобятся:

1. Приложение Arduino IDE

2. Ссылка для менеджера плат

3. Добавить платы Digispark в приложение Arduino IDE

4. Установить драйверы для Digispark ATtiny 85.

Ознакомиться с приложение Arduino IDE http://kolotushkin.com

Запустите приложение Arduino IDE, зайдите во вкладку Файл/Настройки и в Дополнительные ссылки для
Менеджера плат: добавьте эту ссылку

И нажмите «ОК»

Затем откройте вкладку Инструменты /Выбор платы /Менеджер плат

В открывшемся списке выбираем пункт “Digistump AVR Boards” и нажмите “Установить”.

Чтобы быстрее найти, впишите в окно поиска слово “Digistump” или просто “digi”.

Осталось скачать и установить драйверы.

Откройте архив Digistump.Drivers.zip и извлеките из него папку с драйверами Digistump Drivers. Это можно сделать простым перетаскиванием папки Digistump Drivers из архива в удобную для вас папку.

Затем подключите плату Digispark к компьютеру. Откройте Пуск/Панель управления/Диспетчер устройств. Найдите в списке устройство помеченное желтым треугольником (у вас может отобразиться как «Неизвестное устройство»), кликните на него правой кнопкой мышки и в открывшемся окне кликните обновить драйверы.

Затем выберите пункт «Выполнить поиск драйверов на этом компьютере»

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

Если теперь устройство определено как Digispark Bootoalder без желтой отметки, значит все готово!

Теперь откройте скетч Blink, который находится во вкладке “Файл/Примеры/Basics/Blink”.

Так как скетч расcчитан для платы Arduino на которой светодиод подключен к 13 пину, то необходимо
заменить значение “13” на “1” потому как на плате Digispark светодиод подключен к 1 пину!

Затем в менеджере плат выберите плату Digispark (Default — 16,5mhz)

Нажимаете “Загрузить”. После чего произойдет компиляция и снизу появится сообщение (will timeout in 60
seconds), и вот только тогда в течении 60 секунд нужно подключить плату к USB порту для загрузки скетча!

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

Видео версия обзора платы Digispark ATTiny85. «Как прошить Digispark ATTiny85. Обзор платы Digispark ATTiny85»

Программное обеспечение

  • Работа с радиомодулем NRF24L01+;
  • Измерение напряжения питания средствами микроконтроллера;
  • Перевод микроконтроллера в режим сна;
  • Пробуждение по таймеру WDT (WatchDog Timer);
  • Пробуждение по Pin Change прерыванию PCINT;
  • Работа с аналоговыми и цифровыми портами.
  • TMRh20/RF24
  • TMRh20/RF24Network

GitHubattwlight_sensorattwlight_rx

Измерение температуры

  • avrdude — команда из пакета Arduino IDE находящаяся в папке hardware/tools/avr/bin/;
  • /dev/ttyUSB0 — устройство программатора;
  • /etc/avrdude.conf — ссылка на файл находящийся в директории с Arduino IDE по адресу hardware/tools/avr/etc/avrdude.conf.

Engbedded Atmel AVR Fuse Calculator

Шаг 3: Окончательный дизайн

Для окончательного дизайна вы могли бы использовать картон со сквозными компонентами или вытравить свою собственную доску и использовать компоненты SMD. Чтобы узнать, как вытравить доску, просто гуглите ее, есть удивительные учебники, доступные онлайн.

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

Кстати, следы на изображениях — не голая медь, они обработаны неприятным химическим веществом, которое слегка связывает медь (предполагается, что он вызывает рак, поэтому используйте его с большой осторожностью, латексные шарики и пылезащитную маску):http://www.ebay.com/itm/1-pz-A2207-Preparato-chimico-agente-di-stagnatura-90g-TELSTORE/152106663870

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

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

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

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

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

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

Макетная плата

Готовую схему необходимо развести на плате. Это также можно сделать в KiCad. Для этого сначала требуется завершить работу со схемой:

  1. Промаркировать элементы на схеме , все настройки можно оставить по умолчанию.
  2. Сопоставить элементы схемы с посадочными местами на плате . Появится следующее окно:
    Здесь для наглядности следует включить просмотр выбранного элемента .
    Поскольку предстоит работать с макетной платой необходимо следить, чтобы все посадочные места укладывались в сетку 1/10″ (2.54mm). Если требуемый элемент найти не удаётся, проще назначить похожий, затем, в редакторе печатной платы, изменить его (Ctrl+E) и записать в свою библиотеку.
    Как только все посадочные места будут назначены нужно сохранить результат и вернуться в редактор схемы.
  3. Сгенерировать netlist , настройки по умолчанию вполне приемлемы.

Редактор схемы можно закрыть и перейти к редактору печатной платы . Здесь нажать , затем загрузить ранее созданный netlist (Read Current Netlist), убедиться, что не было ошибок и закрыть окно. Если схема была изменена или элементам были назначены другие посадочные места, необходимо обновить netlist и загрузить его здесь снова.

При первой загрузке netlist все посадочные места окажутся стопкой в одной куче. Сначала необходимо переключить сетку на 1/10″ (2.54mm), растащить элементы (используя кнопку m), убрать лишние надписи Visibles → Render → Values и, пользуясь подсказками редактора, соединить элементы дорожками.

Результат будет выглядеть примерно так:

Оставшиеся белые линии, указывают какие посадочные места необходимо соединить проводами. К сожалению в KiCad нет способа вывести результат, так чтобы его было удобно воспроизвести на макетной плате. Но в данном случае макетная плата получилась не большой, и с ней можно поступить просто: отключить лишние надписи Visibles → Render → Footprints Front, снять скриншот и зеркально отразить его по вертикали.

Готовый макет:

Тут два несоответствия со схемой выше: не распаяны подстроечные элементы R1,C3 и диод короче на одно отверстие.

Плата немного побита жёсткой отладкой, но на то она и макетная. Большинство других вариантов, после всех модификаций, выглядело бы хуже.

Шаг 2: Исправление окончательной ошибки

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

c: / программные файлы (x86) / arduino / hardware / tools / avr / bin /../ lib / gcc / avr / 4.3.2 /../../../../ avr / lib / avr25 / crttn85.o :(. init9 + 0x2): перемещение усечено до соответствия: R_AVR_13_PCREL для символа `exit ‘, определенного в разделе .fini9 в c: / программных файлах (x86) / arduino / hardware / tools / avr / bin /../ Библиотека / GCC / АРН / 4.3.2 / avr25 libgcc.a (_exit.o)

Но не беспокойтесь, если вы не используете неправильное ядро, поэтому просто перейдите к шагу 4 (Устранение неполадок) и вернитесь к этому шагу.

Если у вас есть ошибка, описанная выше, вам нужно извлечь вторую загрузку из последнего шага (tinyPCRELpatch.zip), этот шаг довольно прост, просто скопируйте папку с аппаратным обеспечением в папку с аппаратным обеспечением, в которую вы установили arduino ide (ЭТО НЕ Куда мы поместим папку с ИК-библиотекой, это будет место в файлах вашей программы (x86) (или версия для вашей операционной системы и компьютера). Путь для меня:

C: Program Files (x86) Arduino hardware

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

если вы используете ответ для чтения Mac № 4 в этой теме:

HTTP: //forum.arduino.cc/index.php PHPSESSID = 8t8a2l …

Программная часть

Проблема с драйвером датчика MAX30102 заключается в том, что используемый в приборе датчик выпускается на плате MH-ET LIVE. В спецификации на датчик подразумевается, но не указывается явно, что LED1 – красный светодиод, LED2 – инфракрасный (ИК). Однако, если сигнал управления на LED1 равен 0, красный светодиод остается включенным (как на Рисунке 3), если же сигнал управления на LED2 равен 0, то красный светодиод гаснет. Очевидный вывод состоит в том, что LED1 – это ИК светодиод, а LED2 – красный, который также участвует в измерениях уровня насыщения крови кислородом (см. описание ниже). Мы упоминаем этот момент по причине того, что самый распространенный драйвер датчика MAX30102 для проектов на Arduino – это драйвер SparkFun 3010x, в котором однозначно определено, что LED1 – красный, LED2 – ИК. Это может быть справедливо для модулей с датчиком серии MAX30105, установленных на платах SparkFun, но, похоже, не относится к датчику MAX30102 на плате MH-ET LIVE.

Уровень кислорода в крови обозначает насыщение периферийных капилляров кислородом. Более конкретно, это процент насыщенного кислородом гемоглобина по сравнению с общим количеством гемоглобина в крови (насыщенный и ненасыщенный кислородом гемоглобин).

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

R = (AC_red/DC_red)/(AC_IR/DC_IR)

где AC_xxx является переменной составляющей сигнала xxx, а DC_xxx является постоянной составляющей сигнала xxx. В приборе вычисляются два значения R. Верхнее значение на дисплее (следующее после частоты пульса) вычисляется по классической формуле:

R = 104 — 1.7 × R

Нижнее значение вычисляется с помощью таблицы из Arduino библиотеки драйвера, которая является приближением  формулы:

-45.060 × R × R + 30.354 × R + 94.845

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

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

Например, дикротические выемки, которые можно увидеть на полученном с помощью прибора графике сердечного ритма (Рисунок 1) – «второе движение вверх на нисходящей части траектории, соответствующее увеличению давления в аорте при закрытии аортального клапана. – словарь Merriam Webster». Автор заметил, что если эти дикротические выемки более ярко выраженные – у более молодых людей – они могут преодолеть фильтрацию второго уровня и привести к ошибочному выходному сигналу детектора пульса, который, по сути, ищет пики и впадины в сигнале. Работа над проектом продолжается!

Исходный код (скетч Arduino), необходимые библиотеки, проект корпуса (Рисунок 5) для печати на 3D принтере доступны для скачивания в разделе загрузок.

Рисунок 5. Простой корпус для прибора, напечатанный на 3D принтере.

Дополнительно автор добавил версию прибора (nanoPulsePPG) для стандартных плат Arduino и протестировал работу на плате Arduino Nano, но также должно работать на плате Arduino Uno. Таким образом, вы можете экспериментировать с исходным кодом и датчиком.

Перепрограммируемый загрузчик ATtiny85 с использованием платы Arduino Uno

Для программирования ATtiny85 без использования платы Arduino мы сначала должны загрузить в него загрузчик используя плату Arduino Uno. Этот процесс выполняется один раз и в дальнейшем у нас не будет необходимости в использовании платы Arduino для программирования микроконтроллера ATtiny85. Загрузчик (bootloader) – это специальная программа, которая выполняется в микроконтроллере, который необходимо запрограммировать. Использование загрузчика – это один из самых удобных способов загрузки программы в микроконтроллер. Загрузчик находится в микроконтроллере и выполняет поступающие команды, а затем записывает новую программу в память микроконтроллера.

Перепрограммируемый загрузчик в микроконтроллере устраняет необходимость в использовании специальных внешних аппаратных средств (плат программирования, программаторов) для программирования микроконтроллера и позволяет загружать программу в микроконтроллер непосредственно с помощью USB соединения. Платы Digispark ATtiny85 (а выбор подобных плат сейчас достаточно большой) работают на загрузчике “micronucleus tiny85”, первоначально написанным Bluebie. Загрузчик – это программный код, который заранее загружен в плату Digispark и позволяет работать ей как USB устройство, которое можно программировать с помощью Arduino IDE. Мы будем использовать аналогичный подход и загружать загрузчик digispark attiny85 в наш микроконтроллер ATtiny85.

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

Шаг 1. Конфигурирование платы Arduino Uno в качестве ISP программатора.

Поскольку ATtiny85 является всего лишь микроконтроллером, для его программирования требуется ISP (In-System Programming — внутрисистемное программирование). Поэтому для программирования ATtiny85 нам необходимо сначала сконфигурировать плату Arduino Uno в качестве ISP программатора. Для этого подключите плату Arduino Uno к компьютеру и запустите Arduino IDE. После этого откройте пункт меню File > Example > ArduinoISP и загрузите в Arduino ISP код.

Шаг 2. Схема перепрограммируемого загрузчика ATtiny85.

Схема перепрограммируемого загрузчика ATtiny85 представлена на следующем рисунке.

Конденсатор 10 мкФ подключен между контактами Reset и GND платы Arduino. Все соединения схемы представлены в следующей таблице:

ATtiny85 Pin Arduino Uno Pin
Vcc 5V
GND GND
Pin 2 13
Pin 1 12
Pin 0 11
Reset 10

После сборки схемы подключите плату Arduino Uno и запустите Arduino IDE. Определите к какому COM порту подключена плата Arduino Uno (в диспетчере устройств Windows). В нашем случае это COM5.

После этого скопируйте отредактированный файл «Burn_AT85_bootloader.bat» и файл ATtiny85.hex» в корневой каталог Arduino IDE (C:\Program Files (x86)\Arduino).

После этого сделайте клик правой кнопкой мыши на файле «Burn_AT85_bootloader.bat» и выберите «Run as Admin» (запуск от администратора). Необходимо примерно 5-6 секунд чтобы загрузчик загрузился. Если все прошло успешно, то вы должны увидеть сообщение «AVRdude done. Thank you. Press any key to continue…».

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

Как прошить плату Digispark на базе микроконтроллера ATtiny 85. Обзор платы.

Ниже представлены 4 самых часто встречаемых варианта плат, всех их объединяет наличие AVR
микроконтроллера ATtiny 85 с 8 битным процессором способным работать на частоте от 1 до 20 МГц.
Ее характеристики как и цена довольно скромные – всего 8 Кб памяти для хранения программ, 512 байт
оперативной памяти, 512 байт энергонезависимой памяти, 6 — цифровых входов/выходов, 4 — аналоговых входа,
3 — ШИМ выхода, 1 — I2C, 1 — SPI.

Зато у этой малышки имеется USB интерфейс, благодаря которому она может работать как джойстик,
клавиатура или мышь.

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

Так же на плате имеется стабилизатор напряжения для подключения от внешних источников питания (контакт
VIN) от 6 до 16 вольт (разработчики утверждают что стабилизатор выдерживает до 35 вольт). Плата отличается
особой экономностью, может потреблять всего 0,1 мкА.

Datasheet Download — ATMEL Corporation

Номер произв ATtiny85
Описание Atmel 8-bit AVR Microcontroller
Производители ATMEL Corporation
логотип  

1Page

No Preview Available !

Atmel 8-bit AVR Microcontroller with 2/4/8K
Bytes In-System Programmable Flash
ATtiny25/V / ATtiny45/V / ATtiny85/V
Features

• High Performance, Low Power AVR8-Bit Microcontroller

• Advanced RISC Architecture

– 120 Powerful Instructions – Most Single Clock Cycle Execution
– 32 x 8 General Purpose Working Registers
– Fully Static Operation

• Non-volatile Program and Data Memories

– 2/4/8K Bytes of In-System Programmable Program Memory Flash
• Endurance: 10,000 Write/Erase Cycles
– 128/256/512 Bytes In-System Programmable EEPROM
• Endurance: 100,000 Write/Erase Cycles
– 128/256/512 Bytes Internal SRAM
– Programming Lock for Self-Programming Flash Program and EEPROM Data Security

• Peripheral Features

– 8-bit Timer/Counter with Prescaler and Two PWM Channels
– 8-bit High Speed Timer/Counter with Separate Prescaler
• 2 High Frequency PWM Outputs with Separate Output Compare Registers
• Programmable Dead Time Generator
– USI – Universal Serial Interface with Start Condition Detector
– 10-bit ADC
• 4 Single Ended Channels
• 2 Differential ADC Channel Pairs with Programmable Gain (1x, 20x)
• Temperature Measurement
– Programmable Watchdog Timer with Separate On-chip Oscillator
– On-chip Analog Comparator

• Special Microcontroller Features

– debugWIRE On-chip Debug System
– In-System Programmable via SPI Port
– External and Internal Interrupt Sources
– Low Power Idle, ADC Noise Reduction, and Power-down Modes
– Enhanced Power-on Reset Circuit
– Programmable Brown-out Detection Circuit
– Internal Calibrated Oscillator

• I/O and Packages

– Six Programmable I/O Lines
– 8-pin PDIP, 8-pin SOIC, 20-pad QFN/MLF, and 8-pin TSSOP (only ATtiny45/V)

• Operating Voltage

– 1.8 — 5.5V for ATtiny25V/45V/85V
– 2.7 — 5.5V for ATtiny25/45/85

• Speed Grade

– ATtiny25V/45V/85V: 0 – 4 MHz @ 1.8 — 5.5V, 0 — 10 MHz @ 2.7 — 5.5V
– ATtiny25/45/85: 0 – 10 MHz @ 2.7 — 5.5V, 0 — 20 MHz @ 4.5 — 5.5V

• Industrial Temperature Range

• Low Power Consumption

– Active Mode:
• 1 MHz, 1.8V: 300 µA
– Power-down Mode:
• 0.1 µA at 1.8V
Rev. 2586Q–AVR–08/2013
2586Q–AVR–08/2013

No Preview Available !

1. Pin Configurations

Figure 1-1. Pinout ATtiny25/45/85

PDIP/SOIC/TSSOP
(PCINT5/RESET/ADC0/dW) PB5
(PCINT3/XTAL1/CLKI/OC1B/ADC3) PB3
(PCINT4/XTAL2/CLKO/OC1B/ADC2) PB4
GND
1
2
3
4
8 VCC
7 PB2 (SCK/USCK/SCL/ADC1/T0/INT0/PCINT2)
6 PB1 (MISO/DO/AIN1/OC0B/OC1A/PCINT1)
5 PB0 (MOSI/DI/SDA/AIN0/OC0A/OC1A/AREF/PCINT0)
NOTE: TSSOP only for ATtiny45/V
QFN/MLF
(PCINT5/RESET/ADC0/dW) PB5
(PCINT3/XTAL1/CLKI/OC1B/ADC3) PB3
DNC
DNC
(PCINT4/XTAL2/CLKO/OC1B/ADC2) PB4
1
2
3
4
5
15 VCC
14 PB2 (SCK/USCK/SCL/ADC1/T0/INT0/PCINT2)
13 DNC
12 PB1 (MISO/DO/AIN1/OC0B/OC1A/PCINT1)
11 PB0 (MOSI/DI/SDA/AIN0/OC0A/OC1A/AREF/PCINT0)
NOTE: Bottom pad should be soldered to ground.
DNC: Do Not Connect
1.1 Pin Descriptions
1.1.1 VCC
Supply voltage.
1.1.2 GND
Ground.
1.1.3
Port B (PB5:PB0)
Port B is a 6-bit bi-directional I/O port with internal pull-up resistors (selected for each bit). The Port B output buffers
have symmetrical drive characteristics with both high sink and source capability. As inputs, Port B pins that are
externally pulled low will source current if the pull-up resistors are activated. The Port B pins are tri-stated when a
reset condition becomes active, even if the clock is not running.
ATtiny25/45/85
2586Q–AVR–08/2013
2

No Preview Available !

Port B also serves the functions of various special features of the ATtiny25/45/85 as listed in “Alternate Functions

of Port B” on page 60.
On ATtiny25, the programmable I/O ports PB3 and PB4 (pins 2 and 3) are exchanged in ATtiny15 Compatibility
Mode for supporting the backward compatibility with ATtiny15.
1.1.4
RESET
Reset input. A low level on this pin for longer than the minimum pulse length will generate a reset, even if the clock

is not running and provided the reset pin has not been disabled. The minimum pulse length is given in Table 21-4

on page 165. Shorter pulses are not guaranteed to generate a reset.

The reset pin can also be used as a (weak) I/O pin.
ATtiny25/45/85
2586Q–AVR–08/2013
3

Всего страниц 30 Pages
Скачать PDF

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

Саму плату 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\*имя пользователя*\Documents\Arduino\» папку 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 байта, для простейших мигалок и датчиков.

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

Шаг 7: Установка и настройка загрузчиков

Мы собираемся установить два загрузчика, один из которых, по моему опыту, более стабильный, и мы будем использовать его в окончательном наброске. Другое, разработанное Rowdy Dog Software, — это потрясающее ядро, очень маленькое и с встроенным последовательным интерфейсом, но через некоторое время мой пульт сломался, поэтому мы будем использовать этот загрузчик только для калибровки внутренних часов attiny85 и декодирования нашего пульта. кнопок.

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

Начнем с установки:

A) Загрузчик Mellis:

просто откройте настройки Arduino IDE и добавьте в «URL-адреса диспетчера дополнительных плат»:

http://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Затем откройте менеджер плат Arduino IDE и найдите attiny, установите платы от Mellis.Теперь вы должны увидеть Arduino ID платы ATtiny25 / 45/85 и ATtiny24 / 44/84.

Б) Rowdy Dog Software крошечный загрузчик:

загрузите загрузчик с Http: //storage.googleapis.com/google-code-archive …

Разархивируйте файл и скопируйте крошечную папку в альбоме / оборудовании (создайте эту папку, если она еще не существует). затем перейдите в папку sketchbook / hardware / tiny / avr / и:

1) скопируйте файл Prospective Boards.txt в файлboards.txt

2) отредактируйте файл platform.txt и внесите некоторые изменения:

Раскомментируйте переменную compiler.path и оставьте ее указывающей на папку hardware / tools / avr / bin / в папке установки arduino:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER} / оборудование / инструменты / АРН / bin /

изменить такжеcompiler.S.flags = -c -g -assembler-with-cppвcompiler.S.flags = -c -g -x ассемблер-с-cpp

Затем измените следующие переменные, убедившись, что все на своем месте (эти файлы должны существовать, в противном случае укажите переменные на правильные пути):

tools.avrdude.cmd.path = {runtime.ide.path} / оборудование / инструменты / АРН / бен / AVRDUDE

tools.avrdude.config.path = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

tools.avrdude.cmd.path.linux = {runtime.ide.path} / оборудование / инструменты / АРН / бен / AVRDUDE

tools.avrdude.config.path.linux = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

3) отредактируйте файл cores / tiny / core_build_options.h и измените:

#define TIMER_TO_USE_FOR_MILLIS 1 в#define TIMER_TO_USE_FOR_MILLIS 0

Это очень важно, иначе ИК-приемник будет выводить нули для каждой кнопки. Этот оператор настраивает timer0 для функции millis (), оставляя timer1 доступным для библиотеки IR

Окончательный эскиз все равно отключит timer0, поэтому у вас не будет доступных ни функций millis (), ни delay (). Вместо этого у вас может быть доступна функция delayMicroseconds ().

Этот загрузчик минимален, но включает поддержку объектов Serial:

Attiny85 PB2 (контакт 7) — TX, а PB0 (контакт 5) — RX

Вы можете иметь конфигурацию с программатором ISP (arduino) и адаптером последовательного интерфейса к USB, подключенным одновременно, поэтому вам не нужно менять провода слишком часто:

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

The Code

/* Project name: ATTiny85 - OLED (I2C)
    Project URI: https://www.studiopieters.nl/attiny85-oled-i2c
    Description: ATTiny85 - OLED (I2C)
    Version: 2.0.9
    License: MIT
*/

#include <Tiny4kOLED.h>

void setup() {

  // Send the initialization sequence to the oled. This leaves the display turned off
  oled.begin();
  // Clear the memory before turning on the display
  oled.clear();
  // Turn on the display
  oled.on();
  // Switch the half of RAM that we are writing to, to be the half that is non currently displayed
  oled.switchRenderFrame();
}

void loop() {

  /* -----------------------------------------
     Show screen with two different font sizes
     -----------------------------------------
  */

  // Clear the non-displayed half of the memory to all black
  // (The previous clear only cleared the other half of RAM)
  oled.clear();

  // The characters in the 8x16 font are 8 pixels wide and 16 pixels tall
  // 2 lines of 16 characters exactly fills 128x32
  oled.setFont(FONT8X16);

  // Position the cusror
  // usage: oled.setCursor(X IN PIXELS, Y IN ROWS OF 8 PIXELS STARTING WITH 0);
  oled.setCursor(12, );

  // Write the text to oled RAM (which is not currently being displayed)
  // Wrap strings in F() to save RAM!
  oled.print(F("StudioPieters"));

  // The characters in the 6x8 font are 6 pixels wide and 8 pixels tall
  // 4 lines of 21 characters only fills 126x32
  oled.setFont(FONT6X8);

  // Position the cusror
  // Two rows down because the 8x16 font used for the last text takes two rows of 8 pixels
  oled.setCursor(1, 2);

  // Write the text to oled RAM (which is not currently being displayed)
  oled.print(F("ATTiny85 - OLED (I2C)"));

  // Position the cusror
  // Cursor X is in pixels, and does not need to be a multiple of the font width
  oled.setCursor(44, 3);

  // Write the text to oled RAM (which is not currently being displayed)
  oled.print(F("Project"));

  // Swap which half of RAM is being written to, and which half is being displayed
  oled.switchFrame();

  delay(3000);

I removed the wires connecting the Arduino Nano and the ATTiny85 and powered the module with a CR3230 Battery. Power the I2C OLED from ATtiny85’s 5V pin and GND pin.

https://youtube.com/watch?v=UHfpMubxCuU

YES IT WORKS!
DOWNLOAD ALL FILES FOR THIS PROJECT ON GITHUB.

DO YOU HAVE ANY QUESTIONS? LEAVE A COMMENT DOWN HERE.

REFERENCESTiny4kOLED, (20 jan 2018), Library for an ATTiny85 to use an SSD1306 powered, double buffered, 128×32 pixel OLED, over I2C, https://www.arduino.cc/en/Tutorial/ArduinoISP