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

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

RISC (компјутер со намалени инструкции). Оваа архитектура има голем сет на инструкции, од кои повеќето се извршуваат во 1 машински циклус. Следи дека во споредба со претходните микроконтролери базирани на CISC (на пример, MCS51), микроконтролерите базирани на RISC се 12 пати побрзи.

Или ако земеме одредено ниво на перформанси како основа, тогаш за исполнување на овој услов, на микроконтролерите базирани на RISC (Attiny2313) им треба 12 пати помала такт фреквенција на генераторот, што доведува до значително намалување на потрошувачката на енергија. Во овој поглед, станува возможно да се дизајнираат различни уреди на Attiny2313, користејќи енергија од батеријата.

Оперативна меморија (RAM) и неиспарлива податочна и програмска меморија:

  • 2 kB флеш-програмска меморија која може да се програмира самостојно, која може да обезбеди 10.000 повторувања за пишување/бришење.
  • 128 бајти EEPROM меморија за податоци што може да се запише што може да обезбеди 100.000 повторувања за пишување/бришење.
  • 128 бајти SRAM меморија (меморија само за читање).
  • Можно е да се користи функцијата за заштита на податоците од програмскиот код и EEPROM.

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

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

Attiny2313 Специјални спецификации:


  • Неактивен- Режим на мирување. Во овој случај, само централниот процесор ја прекинува својата работа. Неактивен не влијае на работата на SPI, аналоген компаратор, аналоген во дигитален конвертор, тајмер/бројач, тајмер за надзор и систем за прекини. Всушност, само ја запира синхронизацијата на јадрото на процесорот и флеш меморијата. Враќањето на нормалниот режим на работа на микроконтролерот Attiny2313 од режимот на мирување се случува со надворешен или внатрешен прекин.
  • исклучете го- Најекономичен режим, во кој микроконтролерот Attiny2313 е всушност исклучен од потрошувачката на енергија. Во оваа состојба, генераторот на часовникот запира, сите периферни уреди се исклучени. Само модулот за справување со прекини од надворешен извор останува активен. Кога ќе се открие прекин, микроконтролерот Attiny2313 излегува од Power-down и се враќа во нормална работа.
  • Застани- микроконтролерот се префрла на овој режим на подготвеност на потрошувачка на енергија со командата SLEE. Ова е слично на исклучувањето, со единствената разлика што генераторот на часовникот продолжува да работи.

I/O порти на микроконтролерот Attiny2313:

Микроконтролерот е опремен со 18 влезно-излезни пинови кои можат да се програмираат врз основа на потребите што се јавуваат при дизајнирање на одреден уред. Излезните бафери за податоци на пристаништата можат да се справат со релативно големо оптоварување.

  • Порта А (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 Flash програмабилна меморија

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

  • Архитектура 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
  • Посебни карактеристики на микроконтролерот
    Вграден дебагер WIRE дебагер
    Програмирање во системот преку SPI порта
    Надворешни и внатрешни извори на прекини
    Режими со мала потрошувачка Во мирување, исклучување и мирување
    Напредно коло за ресетирање на вклучување
    Програмабилно коло за откривање на моментална загуба на моќност
    Вграден калибриран генератор
  • Влезно-излезни порти и дизајн на куќиште
    18 програмабилни В/И линии
    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). В). За намалена храна треба да платите со намалување фреквенција на часовникотмикроконтролер (побавно работење).

Општи карактеристики:

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

Што имаме на овој чип од периферијата?

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

Специјални поволности:

Моќност, фреквенција:

1,8 - 5,5 V (за ATTiny2313V) до 10 MHz
2,7 - 5,5 V (за ATTiny2313) до 20 MHz
Во режим на работа, троши 230 μA со напојување од 1,8 V и фреквенција на главниот осцилатор од 1 MHz. Во режимот за заштеда на енергија, Power-down јаде помалку од 1 μA на 1,8V

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

ATTiny2313 успеа да преживее уште една ревизија и доби писмо Ана крај. Од иновациите, треба да се забележи:
— Се појавија надворешни прекини на сите нозе.
- Отстранета поделба на нормална и нисконапонска моќност. ATTiny2313A може да се напојува од 1,8V до 5,5V, но само треба да ги почитувате ограничувањата на фреквенцијата од 4MHz (за 1,8V) до 20MHz.
- Значително намалена потрошувачка на струја, и во нормален режим и во режими за заштеда на енергија - соодветно 190 μA и 0,1 μA.
Покрај тоа, како резултат на најновата ревизија - ATTiny2313 доби постар брат ATTiny4313 (без буквата А). Постариот брат е сличен на ATTiny2313A освен двојно поголема меморија (4 kB Flash, 256 бајти EEPROM, 256 бајти SRAM). Ваквите конверзии ја покажуваат намерата на Atmel да продолжи да го поддржува овој микроконтролер.

Поради лошата достапност и неразбирливата цена на новите верзии на ATTiny2313A и ATTiny4313, моите уреди ќе се развиваат на старата верзија на ATTiny2313. Но, бидејќи новите верзии се компатибилни со старите, теоретски, фирмверот треба да работи на нови микроконтролери.

Заклучоци:

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

Денес се обидуваме да користиме поедноставен микроконтролер ATtiny2313и поврзете со него LCD дисплеј со знаци кој содржи две линии од 16 знаци.

Дисплејот што ќе го поврземе на стандарден начин 4 битен начин.

Прво, да започнеме, се разбира, со микроконтролерот, бидејќи веќе сме многу запознаени со екранот од претходните лекции.

Отворете го листот со податоци на контролорот ATtiny2313и видете го нејзиниот пинаут

Гледаме дека овој контролер постои во два вида случаи, но бидејќи ми падна во раце во случајот 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 // поставете ја линијата Е на 1

#Дефинирајe0PORTD&=0b1111 10 11 // поставете ја линијата Е на 0

#Дефинирајrs1PORTD|=0b00000 01 0 // поставете ја линијата RS на 1 (податоци)

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

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

Сега внесува информации. Овде ги користиме краците PD3-PD6, односно тие се поместени за 1 точка во однос на поврзувањето со Atmega8, така што ќе поправиме и нешто во датотеката LCD.cво функција sendhalfbyte

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

Но, тоа не е се. Пренесените податоци ги поместувавме за 4, а сега поради горенаведените промени ќе треба да ги поместиме само за 3. Затоа во истата функција ќе ја поправиме и првата линија

в<<=3 ;

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

Во главниот модул, не ја допираме иницијализацијата на портата D, нека целата да влезе во излезна состојба, како во лекцијата 12.

Да се ​​обидеме да го склопиме проектот и прво да го видиме резултатот во proteus, бидејќи и јас направив проект за него, кој исто така ќе биде во приложената архива со проектот за Atmel Studio

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

Proteus е многу добар, но вистинските делови секогаш се попријатни за гледање. Целото коло беше склопено на табла за леб, бидејќи јас не направив и не составив табла за отстранување грешки за овој контролер. Ќе го поврземе програмерот преку стандарден конектор како овој

Еве го целиот дијаграм

Сè е стандардно овде. Отпорник за повлекување за RESET итн.

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

Потоа одете во јазичињата FUSES и правилно поставете ги осигурувачите. Бидејќи немаме кварцен резонатор, ги поставуваме осигурувачите на овој начин


Врв