Програмиране на Attiny2313. Програмиране на Attiny2313 Как да напиша програма за attiny2313

AVR RISC архитектура:

RISC (Компютър с намален набор от инструкции). Тази архитектура има голям набор от инструкции, повечето от които се изпълняват в 1 машинен цикъл. От това следва, че в сравнение с предишните микроконтролери, базирани на CISC архитектура (например MCS51), RISC микроконтролерите са 12 пъти по-бързи.

Или ако вземем определено ниво на производителност като основа, тогава за да изпълним това условие, микроконтролерите, базирани на RISC (Attiny2313), изискват 12 пъти по-ниска тактова честота на генератора, което води до значително намаляване на консумацията на енергия. В тази връзка става възможно да се проектират различни устройства на Attiny2313, използвайки захранване от батерията.

Оперативно устройство за съхранение (RAM) и енергонезависима памет на данни и програми:

  • 2 KB самопрограмируема Flash програмна памет, която може да осигури 10 000 повторения за запис/изтриване.
  • 128 байта EEPROM записваема памет за данни, която може да осигури 100 000 повторения за запис/изтриване.
  • 128 байта SRAM памет (RAM само за четене).
  • Възможно е да използвате функцията за защита на програмен код и EEPROM данни.

Периферни свойства:

  1. Микроконтролер Атини2313оборудван с осембитов таймер-брояч с отделно монтиран прескалер с максимален коефициент 256.
  2. Има и шестнадесет-битов таймер-брояч с отделен предскалер, верига за улавяне и сравнение. Таймер-броячът може да се тактува или от външен източник на сигнал, или от вътрешен.
  3. Два канала. Има режим на работа на бърза PWM модулация и PWM с фазова корекция.
  4. Вътрешен аналогов компаратор.
  5. Таймер за наблюдение (програмируем) с вътрешен осцилатор.
  6. Сериен универсален интерфейс (USI).

Специални технически индикатори на Attiny2313:


  • Празен— Режим на неактивност. В този случай само централния процесор спира да работи. Неактивността не засяга работата на SPI, аналоговия компаратор, A/D преобразувателя, таймера на брояча, наблюдателното куче или системата за прекъсване. Всъщност всичко, което се случва, е спиране на синхронизацията на ядрото на процесора и флаш паметта. Микроконтролерът Attiny2313 се връща към нормална работа от режим на неактивност чрез външно или вътрешно прекъсване.
  • Изключване— Най-икономичният режим, при който микроконтролерът Attiny2313 действително е изключен от потребление на енергия. В това състояние тактовият генератор спира и всички периферни устройства се изключват. Остава активен само модулът за обработка на прекъсвания от външен източник. Когато бъде открито прекъсване, микроконтролерът Attiny2313 излиза от режим на изключване и се връща към нормална работа.
  • в готовност– микроконтролерът превключва в този режим на готовност за консумация на енергия с помощта на командата SLEE. Това е подобно на изключване, като единствената разлика е, че часовникът продължава да работи.

Входно-изходни портове на микроконтролера Attiny2313:

Микроконтролерът е снабден с 18 I/O пина, които могат да бъдат програмирани въз основа на нуждите, които възникват при проектирането на конкретно устройство. Изходните буфери на тези портове могат да издържат на относително високо натоварване.

  • Порт A (PA2 - PA0) – 3 бита. Двупосочен входно-изходен порт с програмируеми издърпващи резистори.
  • Порт B (PB7 - PB0) – 8 бита. Двупосочен входно-изходен порт с програмируеми издърпващи резистори.
  • Порт D (PD6 - PD0) – 7 бита. Двупосочен входно-изходен порт с програмируеми издърпващи резистори.

Диапазон на захранващото напрежение:

Микроконтролерът работи успешно със захранващо напрежение от 1,8 до 5,5 волта. Консумацията на ток зависи от режима на работа на контролера:

Активен режим:

  • 20 µA при тактова честота 32 kHz и захранващо напрежение 1,8 волта.
  • 300 µA при тактова честота 1 MHz и захранващо напрежение 1,8 волта.

Режим на пестене на енергия:

  • 0,5 µA при захранващо напрежение 1,8 волта.

(3,6 Mb, изтеглени: 5 958)

8-битов AVR микроконтролер с 2 KB системно програмируема флаш памет

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

  • AVR RISC архитектура
  • AVR - висококачествена и нискоенергийна RISC архитектура
    120 инструкции, повечето от които се изпълняват в един тактов цикъл
    32 8-битови работни регистъра с общо предназначение
    Напълно статична архитектура
  • RAM и енергонезависима памет за програми и данни
    2 KB самопрограмируема флаш програмна памет, способна да издържи 10 000 цикъла на запис/изтриване
    128 байта системно програмируема EEPROM памет за данни, способна да издържи 100 000 цикъла на запис/изтриване
    128 байта вградена SRAM памет (статична RAM)
    Програмируема защита срещу четене на Flash програмна памет и EEPROM памет на данни
  • Периферни характеристики
    Един 8-битов таймер/брояч с отделен прескалер
    Един 16-битов таймер/брояч с отделен предскалер, верига за сравнение, верига за улавяне и два PWM канала
    Вграден аналогов компаратор
    Програмируем таймер за наблюдение с вграден осцилатор
    USI - Универсален сериен интерфейс
    Пълен дуплекс UART
  • Специални характеристики на микроконтролера
    Вграден debugWIRE дебъгер
    Вътрешно системно програмиране чрез SPI порт
    Външни и вътрешни източници на прекъсване
    Режими на ниска консумация Idle, Power-down и Standby
    Подобрена верига за нулиране при включване
    Програмируема схема за откриване на прекъсване на захранването
    Вграден калибриран генератор
  • I/O портове и дизайн на корпуса
    18 програмируеми I/O линии
    20-пинов PDIP, 20-пинов SOIC и 32-пинов MLF пакети
  • Диапазон на захранващото напрежение
    от 1,8 до 5,5 V
  • Работна честота
    0 - 16 MHz
  • Консумация
    Активен режим:
    300 µA при 1 MHz и 1,8 V захранващо напрежение
    20 µA при 32 kHz и 1,8 V захранващо напрежение
    Режим на ниска консумация
    0,5 µA при 1,8 V захранващо напрежение

Блокова диаграма на ATtiny2313:


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

ATtiny2313 е 8-битов CMOS микроконтролер с ниска мощност с AVR RISC архитектура. Чрез изпълнение на инструкции в един цикъл, ATtiny2313 постига 1 MIPS производителност при 1 MHz тактова честота, което позволява на дизайнера да оптимизира съотношението мощност към производителност.

Ядрото на AVR интегрира богат набор от инструкции и 32 работни регистъра с общо предназначение. Всичките 32 регистъра са директно свързани към аритметично-логическата единица (ALU), което позволява достъп до два независими регистъра при изпълнение на една инструкция. В резултат на това тази архитектура позволява десетки пъти по-голяма производителност от стандартната CISC архитектура.

ATtiny2313 има следните характеристики: 2 KB Flash програмируема програмна памет, 128 байта EEPROM памет за данни, 128 байта SRAM (статична RAM), 18 I/O линии с общо предназначение, 32 работни регистъра с общо предназначение, еднопроводен интерфейс за вградения дебъгер, два гъвкави таймера/брояча със схеми за сравнение, вътрешни и външни източници на прекъсване, програмируем сериен USART, универсален сериен интерфейс с детектор за стартови условия, програмируем таймер за наблюдение с вграден осцилатор и три софтуерно инициализирани режима на ниска мощност. В неактивен режим ядрото спира, но RAM, таймерите/броячите и системата за прекъсване продължават да функционират. В режим на изключване регистрите запазват стойностите си, но генераторът спира, дезактивирайки всички функции на устройството до следващото прекъсване или хардуерно нулиране. В режим на готовност главният осцилатор работи, докато останалата част от устройството не работи. Това позволява на микропроцесора да се стартира много бързо, като същевременно поддържа захранване, когато е неактивен.

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

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

Основни характеристики:

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

Какво имаме на борда на този периферен чип?

  • един 8-битов таймер/брояч;
  • един 16-битов таймер/брояч;
  • четири PWM канала;
  • аналогов компаратор;
  • Таймер за наблюдение;
  • USI универсален сериен интерфейс;
  • USART (това е компютър COM RS232).

Специални екстри:

Мощност, честота:

1.8 – 5.5V (за ATTiny2313V) до 10 MHz
2.7 – 5.5V (за ATTiny2313) до 20 MHz
В режим на работа той консумира 230 µA със захранване от 1,8 V и честота на главния осцилатор от 1 MHz. В енергоспестяващ режим Power-down консумира по-малко от 1 µA при 1,8 V

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

ATTiny2313 успя да оцелее при още една ревизия и получи писмо Анакрая. Сред иновациите трябва да се отбележи:
— Появиха се външни прекъсвания на всички крака.
— Разделянето между нормално захранване и захранване с ниско напрежение е премахнато. ATTiny2313A може да се захранва от 1,8 до 5,5 V, като е необходимо само да се спазват честотните ограничения от 4 MHz (за 1,8 V) до 20 MHz.
— Консумацията на ток е значително намалена, както в нормален режим, така и в енергоспестяващи режими - съответно 190 µA и 0,1 µA.
Освен това, в резултат на последната ревизия, ATTiny2313 придоби по-голям брат ATTiny4313 (без буквата A). По-големият брат е подобен на ATTiny2313A, с изключение на два пъти повече памет (4 kB Flash, 256 байта EEPROM, 256 байта SRAM). Тези промени показват намеренията на Atmel да продължи да поддържа този микроконтролер.

Поради слабата наличност и неразбираемата цена на новите версии на ATTiny2313A и ATTiny4313, моите устройства ще бъдат разработени на старата версия на ATTiny2313. Но тъй като новите версии са съвместими със старите, теоретично фърмуерът трябва да работи на нови микроконтролери.

Изводи:

Като всички AVR микроконтролериСерията ATTiny2313 е продуктивна и икономична. Има SOIC корпус, който е удобен за оформление на платка и запояване. Разстоянията между краката са сравнително големи (дори можете да успеете да поставите следа върху дъската между съседни крака). Лесен за научаване. Има много литература на руски. Поради голямата популярност на неговия предшественик AT90S2313, в мрежата са разработени много интересни схеми за повторение. Широко достъпен в търговската мрежа. Евтин. За да започнете да изучавате микроконтролери, това е мястото. Сред недостатъците си струва да се отбележи доста скромната периферия днес. И като недостатък, корпусът на SOIC е малко голям (въпреки че вече съм придирчив). Малките количества памет няма да ви позволят да създавате мащабни проекти на ATTiny2313. Като цяло добър високопроизводителен контролер за малки проекти, които не изискват специални периферни устройства. Планирам да го използвам доста широко в моите устройства поради най-добрата наличност и ниската цена.

Днес ще се опитаме да използваме по-прост микроконтролер ATtiny2313и свържете към него символен LCD дисплей, съдържащ два реда от 16 знака.

Ще свържем дисплея по стандартен начин 4-битов начин.

Първо, нека започнем, разбира се, с микроконтролера, тъй като вече сме много запознати с дисплея от предишни уроци.

Нека отворим листа с данни на контролера ATtiny2313и нека да видим неговия pinout

Виждаме, че този контролер съществува в два вида кутии, но тъй като го получих в DIP пакет, ще разгледаме тази конкретна версия на корпуса и по принцип те не се различават много, освен на външен вид, така че как броят на краката е същото - по 20 бр.

Тъй като има 20 крака в сравнение с 28-те крака на контролера ATMega8, върху който сме работили през цялото време и ще продължим да работим, тогава съответно ще има и по-малко възможности.

По принцип всичко, което имаше ATmega8, е тук, единственото нещо е, че има по-малко порт нокти. Но тъй като задачата пред нас е да се опитаме да го свържем през SPI шината с друг контролер, това не ни депресира особено.

Има и други разлики, но те са незначителни и ще се запознаем с тях при необходимост.

Нека съставим верига като тази (щракнете върху снимката, за да я увеличите)

Дисплеят е свързан към изводите на порт D. PD1 и PD2 са към управляващите входове, а останалите са свързани към изводите на дисплейния модул D4-D7.

Нека създадем проект с името TINY2313_LCD, прехвърлете всичко в него, с изключение на основния модул от проекта за свързване на дисплея към Atmega8.

Разбира се, някои неща ще трябва да бъдат преработени. За да направите това, трябва внимателно да проучите кой крак е свързан с какво. Шината E на дисплея е свързана към PD2, а шината RS е свързана към PD1, така че нека направим промени във файла lcd.h

#дефинирайe1PORTD|=0b0000 01 00 // задайте ред E на 1

#дефинирайe0PORTD&=0b1111 10 11 // задайте ред E на 0

#дефинирайrs1PORTD|=0b00000 01 0 // задаваме RS реда на 1 (данни)

#дефинирайrs0PORTD&=0b11111 10 1 // настройте RS реда на 0 (команда)

Както виждаме от удебеления шрифт, не сме имали толкова драстични промени.

Сега въвеждане на информация. Тук използваме крака PD3-PD6, тоест те са изместени с 1 точка спрямо връзката към Atmega8, така че ще коригираме и нещо във файла lcd.cвъв функция изпрати половин байт

PORTD&=0b 1 0000 111; // изтриване на информация за входове DB4-DB7, оставете останалото

Но това не е всичко. Преди изместихме предадените данни с 4, но сега, поради горните промени, ще трябва да ги изместим само с 3. Следователно в същата функция ще коригираме и първия ред

° С<<=3 ;

Това са всички промени. Съгласете се, те не са толкова страхотни! Това се постига чрез факта, че винаги се опитваме да пишем универсален код и да използваме макро замествания. Ако не бяхме отделили време за това наведнъж, щеше да се наложи да коригираме кода в почти всички функции на нашата библиотека.

В основния модул не докосваме инициализацията на порт D; нека целият модул да премине в изходно състояние, както в урок 12.

Нека се опитаме да сглобим проекта и първо да видим резултата в Proteus, тъй като направих и проект за него, който също ще бъде в прикачения архив с проекта за Atmel Studio

При нас всичко работи отлично! Ето как можете бързо да преправите проект за един контролер за друг.

Proteus е много добър, но винаги е по-приятно да гледате реални детайли. Цялата верига беше сглобена на макет, тъй като не съм направил или сглобил платка за отстраняване на грешки за този контролер. Ще свържем програмиста чрез стандартен конектор като този

Ето цялата диаграма

Тук всичко е стандартно. Издърпващ резистор към RESET и др.

Сега, преди да мигаме контролера в avrdude, трябва да изберем контролера и да прочетем неговата флаш памет

След това отидете в раздела FUSES и настройте предпазителите правилно. Тъй като нямаме кварцов резонатор, инсталираме предпазителите по този начин


Връх