Команды attiny2313. Как подключить, написать программу и прошить микроконтроллер ATtiny2313. Диапазон питающего напряжения

Как производится программирование микроконтроллеров ATtiny2313? Итак, имеем микроконтроллер ATtiny2313, LPT порт (обязательно железный - никакие USB-2-LPT не работают), несколько проводков (длина не более 10см) и конечно же паяльник. Желательно иметь разъём DB-25M (папа), с ним будет удобней подключать микроконтроллер, но можно обойтись и без него. Припаиваем проводки к выводам 1, 10, 17, 18, 19, 20 микроконтроллера. Получаем нечто вроде того, что на фото:


Я делал без разъёма (в наличии были только мамы...), и вот что получилось:


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


Если быть совсем честным, то желательно собрать "правильный" программатор. И потом будет проще и порт целее. Я пользую STK200/300. Далее используем программу PonyProg2000. После запуска программы она "заржет...." как настоящий пони. Чтобы этого больше не слышать в появившемся окне ставим галочку "Disable sound". Жмём "ОК". Выскакивает окошко которое говорит, что нужно откалибровать программу. Компы бывают же разные и медленные и шустрые. Жмём "ОК". Выскакивает ещё одно окошко - это нам говорит, что нужно настроить интерфейс (какой программатор и куда подключен.). Итак заходим в меню: Setup -> Calibration. В появившемся окне:


Жмём "YES". Проходит пара секунд и программа говорит "Calibration OK". Далее заходим в меню: Setup -> Interface Setup. В появившемся окошке настраиваем как у показано на рисунке.


Теперь заходим в меню: Command -> Program Options. В появившемся окошке настраиваем как показано на рисунке.


Всё готово к программированию!... Итак, последовательность действий:


1. Выбираем из списка "AVR micro"
2. Из другого списка выбираем "ATtiny2313"
3. Загружаем файл прошивки (File -> Open Device File), выбираем нужный файл, например "rm-1_full.hex".
4. Жмём кнопочку "Launch program cycle". Когда программирование завершится прога скажет "Program successful"
5. Ну и напоследок надо запрограммировать так называемые Фьюзы (fuses). Для этого жмём кнопочку "Security and Configuration Bits". В появившемся окне жмём "Read", потом выставляем галочки и жмём "Write".

ВНИМАНИЕ! Если Вы не знаете, что означает тот или иной конфигурационный бит, то не трогайте его. Вот теперь у нас готовый к работе контроллер ATtiny2313! На форуме можно скачать программу PonyProg2000 и оригинал статьи с дополнительными рисунками. Материал для сайта Радиосхемы предоставил Ansel73.

Итак, у нас есть микроконтроллер ATtiny2313, LPT порт (обязательно нужен железный, никакие USB-2-LPT не работают), несколько проводов (длиной не больше 10 см) и разумеется паяльник. Лучше, чтобы был разъём DB - 25M (папа), с его помощью будет гораздо удобней подсоединять микроконтроллер, но можете обойтись и без него. Припаиваете провода к выводам 1, 10, 17, 18, 19, 20 вашего микроконтроллера. Получится что то вроде этого, как на фотографии:

Затем, в случае если имеется разъём DB-25M, то припаяйте провода к нему в соответствии с таблицей, которая показана ниже. А если отсутствует, тогда просто втыкайте провода в разъём на компе.

Здесь делали без разъёма (просто под рукой были лишь только мамы), и вот что из этого вышло:

Здесь LPT порт был вынесен на стол при помощи кабеля длиной в 1.5 м. Кабель обязательно должен быть экранированный, в противном случае будут наводки, помехи и тогда ничего не выйдет. Схема данного устройства программирования микроконтроллера выглядит вот так:

Лучше конечно сделать «правильный» программатор, поскольку так будет проще и порт целее. В данном случае использовался STK200/300. Затем нужна программа PonyProg2000. После того, как программа запустится она «заржёт» прям как настоящий пони:). Для того, чтобы этот звук впредь не напрягал ваши уши нужно в появившемся окне поставить галочку «Disable sound». Нажмите «ОК». Выскочит окно, которое говорит о том, что необходимо откалибровать программу. Компьютеры же бывают разные, и медленные, и быстрые. Нажмите «ОК». Выскочит ещё одно окно, оно говорит, что необходимо произвести настройку интерфейса (какой программатор и куда подключён). Итак, теперь заходите в меню: Setup -> Calibration. В появившемся окне:

Жмите «YES». Пройдёт пара секунд и программа скажет «Calibration OK». Потом заходите в меню: Setup -> Interface Setup. В появившемся окне настраивайте, как это указано на рисунке.

Теперь заходите в меню: Command -> Program Options. В появившемся окне настраивайте, как это указано на рисунке.

Теперь всё готово для программирования! Итак, этапы действий:

  1. Выберите из списка «AVR micro»
  2. Из другого списка нужно выбрать «ATtiny2313»
  3. Теперь загружайте файл прошивки (File -> Open Device File), выбирайте нужный файл, к примеру «rm-1_full.hex».
  4. Жмите кнопку «Launch program cycle». Когда программирование закончится программа скажет «Program successful»
  5. И в завершении нужно запрограммировать так называемые Фьюзы (fuses). Для этого жмите кнопку «Security and Configuration Bits». В появившемся окошке жмите «Read», затем выставите галочки и нажмите «Write».

    ВНИМАНИЕ! В случае если вы не знаете, что значит тот или иной конфигурационный бит, тогда не трогайте его. Вот теперь наш контроллер ATtiny2313 к работе готов!

    Это всё. Всего вам доброго.


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

  • AVR RISC архитектура
  • AVR - высококачественная и низкопотребляющая RISC архитектура
    120 команд, большинство которых выполняется за один тактовый цикл
    32 8 битных рабочих регистра общего применения
    Полностью статическая архитектура
  • ОЗУ и энергонезависимая память программ и данных
    2 КБ самопрограммируемой в системе Flash памяти программы, способной выдержать 10 000 циклов записи/стирания
    128 Байт программируемой в системе EEPROM памяти данных, способной выдержать 100 000 циклов записи/стирания
    128 Байт встроенной SRAM памяти (статическое ОЗУ)
    Программируемая защита от считывания Flash памяти программы и EEPROM памяти данных
  • Характеристики периферии
    Один 8- разрядный таймер/счетчик с отдельным предделителем
    Один 16-разрядный таймер/счетчик с отдельным предделителем, схемой сравнения, схемой захвата и двумя каналами ШИМ
    Встроенный аналоговый компаратор
    Программируемый сторожевой таймер со встроенным генератором
    USI - универсальный последовательный интерфейс
    Полнодуплексный UART
  • Специальные характеристики микроконтроллера
    Встроенный отладчик debugWIRE
    Внутрисистемное программирование через SPI порт
    Внешние и внутренние источники прерывания
    Режимы пониженного потребления Idle, Power-down и Standby
    Усовершенствованная схема формирования сброса при включении
    Программируемая схема обнаружения кратковременных пропаданий питания
    Встроенный откалиброванный генератор
  • Порты ввода - вывода и корпусное исполнение
    18 программируемых линий ввода - вывода
    20 выводной PDIP, 20 выводной SOIC и 32 контактный MLF корпуса
  • Диапазон напряжения питания
    от 1.8 до 5.5 В
  • Рабочая частота
    0 - 16 МГц
  • Потребление
    Активный режим:
    300 мкА при частоте 1 МГц и напряжении питания 1.8 В
    20 мкА при частоте 32 кГц и напряжении питания 1.8 В
    Режим пониженного потребления
    0.5 мкА при напряжении питания 1.8 В


Общее описание:

ATtiny2313 - низкопотребляющий 8 битный КМОП микроконтроллер с AVR RISC архитектурой. Выполняя команды за один цикл, ATtiny2313 достигает производительности 1 MIPS при частоте задающего генератора 1 МГц, что позволяет разработчику оптимизировать отношение потребления к производительности.

AVR ядро объединяет богатую систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с арифметико-логическим устройством (АЛУ), что позволяет получить доступ к двум независимым регистрам при выполнении одной команды. В результате эта архитектура позволяет обеспечить в десятки раз большую производительность, чем стандартная CISC архитектура.

ATtiny2313 имеет следующие характеристики: 2 КБ программируемой в системе Flash память программы, 128 байтную EEPROM память данных, 128 байтное SRAM (статическое ОЗУ), 18 линий ввода - вывода общего применения, 32 рабочих регистра общего назначения, однопроводный интерфейс для встроенного отладчика, два гибких таймера/счетчика со схемами сравнения, внутренние и внешние источники прерывания, последовательный программируемый USART, универсальный последовательный интерфейс с детектором стартового условия, программируемый сторожевой таймер со встроенным генератором и три программно инициализируемых режима пониженного потребления. В режиме Idle останавливается ядро, но ОЗУ, таймеры/счетчики и система прерываний продолжают функционировать. В режиме Power-down регистры сохраняют свое значение, но генератор останавливается, блокируя все функции прибора до следующего прерывания или аппаратного сброса. В Standby режиме задающий генератор работает, в то время как остальная часть прибора бездействует. Это позволяет очень быстро запустить микропроцессор, сохраняя при этом в режиме бездействия мощность.

Прибор изготовлен по высокоплотной энергонезависимой технологии изготовления памяти компании Atmel. Встроенная ISP Flash позволяет перепрограммировать память программы в системе через последовательный SPI интерфейс или обычным программатором энергонезависимой памяти. Объединив в одном кристалле 8- битное RISC ядро с самопрограммирующейся в системе Flash памятью, ATtiny2313 стал мощным микроконтроллером, который дает большую гибкость разработчика микропроцессорных систем.

ATtiny2313 поддерживается различными программными средствами и интегрированными средствами разработки, такими как компиляторы C, макроассемблеры, программные отладчики/симуляторы, внутрисхемные эмуляторы и ознакомительные наборы.

Микроконтроллер ATTiny2313 является возрождением в новой серии старого микроконтроллера AT90S2313, который в свое время вышел довольно удачным. ATTiny2313 улучшенный вариант своего предка. Но он также унаследовал и довольно скромную периферию. Так что, в плане функциональности ATTiny2313 скромноват. Микроконтроллер выпускается в двух вариантах – обычном (ATTiny2313) и с пониженным питанием (ATTiny2313V ). За пониженное питание приходится платить понижением тактовой частоты микроконтроллера (более медленная работа).

Общие характеристики:

  • 120 инструкций оптимизированных для программирования на языках высокого уровня;
  • 32 регистра общего назначения (я тащусь от этого);
  • почти каждая инструкция выполняется за 1 такт генератора, за счет чего быстродействие достигает 20 MIPS (20 миллионов операций за секунду);
  • 2 килобайта флеш-памяти для программ. Флеш-память может программироваться прямо с контроллера (сама себя);
  • 128 байт EEPROM (энергонезависимая память);
  • 128 байт SRAM (оперативная память).

Что мы имеем на борту у этого чипа из периферии?

  • один 8 битный таймер/счетчик;
  • один 16 битный таймер/счетчик;
  • четыре ШИМ канала;
  • аналоговый компаратор;
  • Watchdog таймер;
  • USI универсальный последовательный интерфейс;
  • USART (это компьютерный COM RS232).

Особые плюшки:

Питание, частота:

1.8 – 5.5В (для ATTiny2313V) до 10МГц
2.7 – 5.5В (для ATTiny2313) до 20МГц
В рабочем режиме потребляет 230 мкА при питании 1.8 В и частоте задающего генератора 1МГц. В режиме энергосбережения Power-down кушает меньше 1мкА при 1.8В

Программирование

ATTiny2313 умудрился пережить еще одну ревизию и обзавелся буковкой А в конце. Из нововведений следует отметить:
— Появились внешние прерывания на всех ножках.
— Убрано разделение на обычное и низковольтное питание. ATTiny2313А может питаться от 1.8 до 5.5В, при этом лишь необходимо соблюдать ограничения по частоте от 4МГц (для 1.8В) до 20Мгц.
— Значительно уменьшено потребление тока, как в штатном режиме, так и в режимах энергосбережения – соответственно 190мкА и 0.1мкА.
Мало того, в результате последней ревизии — ATTiny2313 обзавелся старшим братом ATTiny4313 (без буковки А). Старший брат аналогичен ATTiny2313А за исключением в два раза увеличенной памяти (4 кбайт Flash, 256 байт EEPROM, 256 байт SRAM). Такие преобразования показывают намеренья Atmel продолжать поддерживать данный микроконтроллер.

По причине плохой доступности и непонятной цены новых версий ATTiny2313А и ATTiny4313 мои устройства будут разрабатываться на старом варианте ATTiny2313. Но так как новые версии совместимы со старыми то, теоретически, прошивки должны работать и на новых микроконтроллерах.

Выводы:

Как и все микроконтроллеры AVR серии ATTiny2313 производителен и экономичен. Имеет удобный для разводки платы и пайки корпус SOIC. Расстояния между ножками относительно большое (можно даже умудриться кинуть дорожку на плате между соседними ножками). Простой в изучении. Имеется много литературы на русском языке. Ввиду большой популярности предшественника AT90S2313 разработано много интересных схем в сети для повторения. Широко доступен в продаже. Недорог. Для начала изучения микроконтроллеров – самое то. Из недостатков стоит отметить довольно скромную периферию на сегодняшний день. И как обратная сторона достоинства — корпус SOIC немного великоват (хотя это я уже придираюсь). Небольшие объемы памяти не позволят сделать на ATTiny2313 масштабные проекты. В общем, неплохой высокопроизводительный контроллер для небольших проектов, не требующих особой периферии. В своих устройствах планирую использовать довольно широко по причине наилучшей доступности и дешевизны.

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

Первым делом нам нужен программатор, разновидностей программаторов много, какой программатор выбрать?
Есть обычные программаторы в который нужно вставлять микроконтроллер, прошивать, вынимать микроконтроллер и потом вставлять его в нашу плату, чтобы увидеть результат и эту последовательность придется делать первое время сотни раз, этот вариант на мой взгляд не удобный.
Наш микроконтроллер ATtiny2313 поддерживает функцию внутрисхемного программирования ISP (In-System Programming) через SPI порт, этот вариант использования внутрисхемного программирования ISP на мой взгляд самый удобный и быстрый, т.к. микроконтроллер из нашей платы вынимать не нужно после каждой прошивки, можно программировать микроконтроллер сотни раз и сразу же не отключая программатор от компьютера и платы, видеть результат после прошивки микроконтроллера, процесс отладки программного обеспечения радиолюбительского устройства заметно упрощается и сокращается затрачиваемое на это время.
Внутрисхемный программатор ISP можно сделать самому, в интернете есть множество простых схем как это делается через LPT,COM порт, например программатор PonyProg в интернете можно найти схемы как его сделать.

В данной статье будет рассматриваться работа с внутрисхемным ISP программатором для микроконтроллеров AVR (PX-400) он работает через COM порт.
Если у вас нет COM порта в компьютере, нужен будет еще переходник с USB порта на COM порт, переходников таких тоже много разновидностей, я рекомендую переходник с которым я работал: UCON-232S USB to Serial port converter board
Фото программатора PX-400 , переходника UCON-232S USB , Datasheet ATTiny2313

Разберем подробнее все детали данной схемы:
(На всякий случай, все детали, программатор, переходик (с USB на COM порт) я покупал в chipdip.ru)

1 - PBD-20 гнездо на плату 2.54мм 2х10 прямое - Это я сделал для удобства, чтобы проще было проверять сигналы с выводов микроконтроллера, этот пункт можно было не делать.
2 - SCS-20 DIP панель 20 контактов - панель припаиваем к плате, чтобы была возможность заменить микроконтроллер в плате если потребуется,
ATtiny2313-20PU, DIP20, МCU, 5V, 1K-Flash, 12MHz - Микроконтроллер вставляем в DIP панель.
3 - Кварцевый резонатор 4.000 МГц (усечен.) HC-49S - Кварцевый резонатор 4 МГц
4 - Керамический конденсатор К10-17Б имп. 22пФ NPO,5%,0805 - Два керамических конденсатора по 22пФ
5 - 78M05 (+5В, 0.5А) TO220 - Стабилизатор напряжения 5В, подает на микроконтроллер стабилизированное питание не более +5В, в данном случае у меня получилось 4,4В, этого вполне хаватает.
6 - NP-116 штекер питания 1.3х3.4х9.5мм MP-331 (7-0026c) - Штекер питания припаял к старому зарядному устройству от мобильного телефона DC 5.7V/800mA
7 - DS-213 гнездо питания на плату - гдездо питания для штекера NP-116, для удобства подключения питания
8 - IDC-10MS (BH-10), вилка прямая - Вилка для подключения внутрисхемного ISP программатора
9 - Резистор постоянный 0,25Вт 150 Ом - Три резистора по 150 Ом на выводы MISO,SCK,MOSI
10 - Резистор постоянный 0,25Вт 47 Ом - Один резистора 47 Ом на вывод RESET
11 - Кнопка тактовая h=5мм, TC-0103 (TS-A2PS-130) - Кнопка сброса RESET, после нажатия на кнопку программа в микроконтроллере запускается с начала, кнопку можно было не делать.
12 - Светодиод зеленый d=3мм, 2.5В, 2мА - Выполняет функцию индикатора, этот пункт можно было не делать.
13 - Резистор постоянный 0,25Вт 110 Ом - Резистор для светодиода, чтобы на светодиоде было 2В, этот пункт можно было не делать
14 - Два провода подключенные к светодиоду, для проверки сигналов с выводов микроконтроллера, этот пункт можно было не делать
15 - Дип-Рм печатная макетная плата 100х100мм

Пункты 3 и 4 Работают как единое целое, как внешний тактовый генератор,эти пункты можно не делать, если вы не предъявляете высоких требований к точности и стабильности внутреннего RC-Генератора, внутренний RC-Генератор имеет погрешность около 10% и на точность может влиять изменение температуры.

Итак, вы скачали и установили Atmel Studio :
Запускаем Atmel Studio и напишем простейшую программу на языке Си мигание светодиодом:
Нажимаем: New project... \ AVR GCC \ C \ C Executable Project
Указываем папку где сохранить проект и название проекта например Test1 и нажимаем ОК.
Из списка выбираем наш микроконтроллер ATtiny2313 и нажимаем ОК.
Стираем все что появилось в окне и вставляем наш код программы который ниже:

#define F_CPU 4000000L //Указываем частоту нашего внешнего кварца 4 МГц
#include
#include
int main(void)
{
//Устанавливаем все выводы PORTB как выходы
DDRB=0xFF;//Регистр направления передачи информации (1-выход, 0-вход)
while(1)
{
//Регистр данных PORTB (используется для вывода информации)
PORTB=0b00000001;//Подаем 1 на 12 порт МК PB0 - включаем светодиод
PORTB=0b00000000;//Подаем 0 на 12 порт МК PB0 - выключаем светодиод
_delay_ms(1000);//Задержка 1 сек.
}
}

Заходим в меню Build \ Configuration manager \ Active solution configuration \
Выбираем Release , нажимаем Close
Это мы сделали для того, чтобы у нас появилась в проекте папка Release , о которой я расскажу ниже.

Нажимаем F7 , готово, наше приложение откомпилировалось!
Для прошивки микроконтроллера ATtiny2313 нам нужен только один файл с расширением HEX
Он находится в папке нашего проекта: ...
Обратите внимание, файл Test1.hex нуно взять именно из папки Release !
Не перепутайте, т.к. папке Debug лежит тоже файл Test1.hex , но в этом файле еще содержится отладочная информация и из-за этого вы прошить этим файлом не сможете т.к. он обычно бывает большого размера и не поместится в памяти МК.

Файл.hex нашли, теперь нужна программа для прошивки микроконтроллера ATtiny2313, программ таких много, но мы воспользуемся программой: Avr-Osp II
Скачать:

Подключаем программатор к нашей схеме, на схему обязательно подаем питание!

Запускаем программу Avr-Osp II , указываем в разделе FLASH путь к файлу...\Test1\Test1\Release\Test1.hex ,устанавливаем галочки в программе и нажимаем кнопку Program вот и все, микроконтроллер ATtiny2313 прошит!

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

Вопросы и комментарии оставляйте пожалуйста на нашем форуме