Шеми „направи сам“ на attiny2313. Го поврзуваме копчето со микроконтролерот ATtiny2313, едноставна програма. Компајлирање и трепкање на програмата во МК

Како да составите едноставно коло, како да поврзете програмер со микроконтролер ATtiny2313, како да напишете наједноставната програмана јазик C и како да го трепкате микроконтролерот ATtiny2313 со нашата програма, сето ова ќе го најдете во оваа статија.

Како прво, ни треба програмер, има многу варијанти на програмери, кој програмер да избереме?
Постојат обични програмери во кои треба да вметнете микроконтролер, да го трепкате, да го отстраните микроконтролерот и потоа да го вметнете во нашата табла за да го видите резултатот и оваа низа ќе треба да се направи стотици пати на почетокот, оваа опција не е погодно според мое мислење.
Нашиот микроконтролер ATtiny2313поддржува ISP (In-System Programming) функција преку SPI порта, овој случај за користење за програмирање во коло Интернет провајдерспоред мене најзгодно и најбрзо, бидејќи. микроконтролерот од нашата плоча не треба да се отстранува после секој фирмвер, можете да го програмирате микроконтролерот стотици пати и веднаш без да го исклучите програмерот од компјутерот и плочата, видете го резултатот по трепкањето на микроконтролерот, процесот на дебагирање софтверрадиоаматерскиот уред е значително поедноставен и времето поминато на тоа е намалено.
Можете сами да направите програмер во коло на интернет провајдер, има многу на Интернет едноставни колакако тоа се прави преку LPT, COM портана пример, програмер ПониПрогНа Интернет можете да најдете дијаграми како да го направите тоа.

Оваа статија ќе ја разгледа работата со програмер на провајдер во коло за микроконтролери AVR (PX-400)работи преку COM порта.
Ако немате COM порта на вашиот компјутер, ќе ви треба и адаптер со УСБ влездо порта COM, исто така има многу варијанти на такви адаптери, го препорачувам адаптерот со кој работев: UCON-232S Плочка за конвертор од USB во сериски порт
Програмер за фотографии PX-400, адаптер UCON-232S USB , Лист со податоци ATTiny2313

Ајде внимателно да ги разгледаме сите детали од оваа шема:
(За секој случај, ги купив сите детали, програмер, адаптер (од USB до COM порта) на chipdip.ru)

1 - ПБД-20 приклучок за плочка 2,54мм 2x10 директно- Го направив ова за погодност, за да биде полесно да се проверат сигналите од пиновите на микроконтролерот, оваа ставка не може да се направи.
2 - SCS-20 DIP панел 20 пина- панелот е залепен на плочата така што е можно да се замени микроконтролерот во плочата доколку е потребно,
ATtiny2313-20PU, DIP20, MCU, 5V, 1K-блиц, 12MHz- Микроконтролерот е вметнат во DIP панелот.
3 - Кварцен резонатор 4.000 MHz (отсечен) HC-49S- Кварцен резонатор 4 MHz
4 - Керамички кондензатор K10-17B imp. 22pF NPO,5%,0805- Два керамички кондензатори од 22 pF
5 - 78M05 (+5V, 0,5A) TO220- Стабилизатор на напон 5V, снабдува стабилизирана моќност на микроконтролерот не повеќе од + 5V, во овој случај добив 4,4V, ова е сосема доволно.
6 - NP-116 приклучок за напојување 1.3x3.4x9.5mm MP-331 (7-0026c)- Приклучок за струја залемен на стариот полначод мобилен телефон DC 5,7V/800mA
7 - DS-213 приклучок за струја на плочата- Каде е приклучокот за струја за приклучокот NP-116, за лесно поврзување со струја
8 - IDC-10MS (BH-10), директно приклучок- Приклучок за поврзување на програмер на интернет провајдер во коло
9 - Константа на отпорник 0,25W 150 Ohm- Три отпорници од 150 Ohm за пинови MISO, SCK, MOSI
10 - Константа на отпорник 0,25W 47 Ohm- Еден отпорник од 47 оми по пин RESET
11 - Копче за такт h=5mm, TC-0103 (TS-A2PS-130)- Копче РЕСЕТИРАЈ, по притискање на копчето, програмата во микроконтролерот започнува од почеток, копчето не можеше да се направи.
12 - LED зелена d = 3mm, 2,5V, 2mA - Дејствува како индикатор, оваа ставка не може да се направи.
13 - Константа на отпорник 0,25W 110 Ohm- Отпорник за ЛЕР, така што ЛЕР има 2V, оваа ставка не може да се направи
14 - Две жици поврзани на ЛЕР, за проверка на сигналите од пиновите на микроконтролерот, оваа ставка не може да се направи
15 - Dip-Rm печатена штица 100x100mm

Чекорите 3 и 4 работат како единица, како надворешен генератор на часовник, овие чекори може да се испуштат ако не поставите големи барања за точноста и стабилноста на внатрешниот RC осцилатор, внатрешниот RC осцилатор има грешка од околу 10% и на точноста може да влијае промената на температурата.

Значи, сте преземале и инсталирале Студио Атмел:
Ние лансираме Студио Атмели напишете едноставна програма C за трепкање на ЛЕР:
Кликнете: Нов проект... \ AVR GCC \ C \ C Извршен проект
Наведете ја папката каде да се зачува проектот и името на проектот на пример Test1 и кликнете OK.
Од списокот, изберете го нашиот микроконтролер ATtiny2313 и кликнете OK.
Ние бришеме сè што се појави во прозорецот и го залепуваме нашиот програмски код кој е подолу:

#define F_CPU 4000000L // Наведете ја фреквенцијата на нашиот надворешен кварц 4 MHz
#вклучи
#вклучи
int main (празнина)
{
//Поставете ги сите PORTB пинови како излези
DDRB=0xFF;//Регистар на насока за пренос на информации (1-излез, 0-влез)
додека (1)
{
//Регистар на податоци PORTB (се користи за прикажување информации)
PORTB=0b00000001;//Напојување 1 на порта 12 на MK PB0 - вклучете ја LED диодата
PORTB=0b00000000;//Поднесете 0 до портата 12 на MK PB0 - исклучете ја LED диодата
_delay_ms(1000);//Одложување 1 сек.
}
}

Одиме во менито Изградба\Менаџер за конфигурација\Конфигурација на активно решение\
Изберете Ослободете, притиснете затвори
Ова го направивме за да имаме папка во проектот Ослободете, за што ќе разговарам подолу.

Кликнете F7, готово, нашата апликација е составена!
За да го трепкаме микроконтролерот ATtiny2313, потребна ни е само една датотека со наставката HEX
Се наоѓа во нашата проектна папка: ...
Забележете ја датотеката Тест1.хекс nuno земи го од папката Ослободете !
Не мешајте, бидејќи папка Отстранување грешкиима и датотека Тест1.хекс, но оваа датотека исто така содржи информации за отстранување грешкии поради ова нема да можете да ја флеширате оваа датотека. тоа обично се случува голема величинаи нема да се вклопи во меморијата на МК.

Пронајдена е датотеката .hex, сега ни треба програма за трепкање на микроконтролерот ATtiny2313, има многу такви програми, но ние ќе ја користиме програмата: Авр-Осп II
Преземи:

Го поврзуваме програмерот со нашето коло, мора да го напојуваме колото!

Ја започнуваме програмата Авр-Осп II, наведете ја патеката до датотеката во делот FLASH ... \Test1\Test1\Release\Test1.hex, поставете ги полињата за избор во програмата и притиснете го копчето програматоа е тоа, микроконтролер 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 I/O пинови кои можат да се програмираат врз основа на потребите што се јавуваат при дизајнирањето специфичен уред. Излезните бафери за податоци на пристаништата можат да се справат со релативно големо оптоварување.

  • Порта А (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 934)

Уредот од овој напис работи со SD-картички. Темата е стара и прилично пробиена, но вреди да се пишува за користењето на SD картички повторно.
Општо земено, SD-картичките (SDC, SD Card) имаат многу предности и се многу лесни и удобни за користење во мали вградени проекти. За ова придонесуваат голем број фактори:
- многу едноставен интерфејс за интеракција со картичката (имплементиран преку SPI);
- голема брзина (микроконтролерот може да пренесува податоци од SD-картичката со брзина блиску до 10 Mbps);
- мала потрошувачка на енергија (буквално неколку милиампери - не повеќе);
- Мала големина;
- Достапност и ниска цена.
SD-картичките практично немаат никакви недостатоци (освен, можеби, нивните процедури за иницијализација :)).

1. Вовед.

Јас го именував уредот опишан во оваа статија Уред за зборување SD картичка. Малку претенциозно;), но по името е јасно дека ова е уред за зборување. Наменет е за изразување на вашите проекти. Накратко, работи на следниов начин: нумерирани звучни датотеки се снимаат на SD-картичката, која уредот ја репродуцира по ваша команда. Опсегот на примена е доста широк - системи за предупредување, играчки, роботи, паметна куќаитн. Димензиите на уредот се прилично скромни (може да биде помал, но намерно го избрав микроконтролерот ATtiny2313, кој е поевтин и полесен за набавка). Се обидов да се фокусирам на едноставноста и максималната функционалност.
Гледајќи напред, ајде да видиме што треба да се случи на крајот:

Дали таков уред би функционирал? Потоа собираме!

2 Мемориска картичка.

Уредот користи SD мемориска картичка. Веќе пишував за причините за изборот, само ќе додадам дека SD-картичките стануваат речиси стандард за мемориските картички за Мобилни уреди. Дури и производителите кои фанатично го промовираа/промовираат својот тип на мемориски картички, полека почнуваат да користат SD картички. Причината за таквата популарност, веројатно, беше ниската цена на овие картички. За аматерски уреди, SD-картичката е, всушност, единствената картичка што може да се користи и причината е едноставниот интерфејс за работа со неа.

SD-картичката помина долг пат на еволуција и има неколку опции за нејзина имплементација (MMC - како варијанта на SD-картичката, SD ver1, SD ver2, SDHC, SDXC). Постапката за комуникација со картичката е едноставна и универзална за сите видови картички, но лансирањето (иницијализирањето на картичката) е прилично двосмислен и збунувачки процес, со ритуално „жонглирање“ на картичката, испраќање празни „кукла“ команди и други неразбирливи работи (накратко, се бара танцување со тамбура:)). Самата спецификација за протоколот SDC доста опширно го опишува процесот на иницијализација, разбирливо е, има многу производители на картички, секој има свој хардвер, со свои карактеристики... За што зборувам? - Се обидов да ја направам процедурата за иницијализација што е можно поуниверзална, но бидете подготвени за фактот дека некои картички нема да работат. Затоа, ако нешто тргне наопаку со вашиот уред, обидете се со друга мемориска картичка - можеби ова е причината.

ВО овој уредПоддржани се SD-картички до и вклучувајќи 2 GB. Сè погоре (SDHC и SDXC) не е поддржано.
За уредот, нема разлика во тоа каков образец е картичката (SD, MiniSD или MicroSD), но мора правилно да ја поврзете, според пинаутот на картичката.

3 Датотечниот систем.

Уредот работи со картички кои имаат датотечен систем FAT16. Овој систем е најсоодветен за уреди како нашиот, бидејќи е едноставен и лесен за имплементација (FAT12 и FAT32, во принцип, исто така не се тешки за имплементација, но тоа е непрактично, поради недостаток на какви било предности во споредба со FAT16) .

Нема посебни барања за форматирање на картичката - може да се форматира на кој било достапен уред. Стандарден Форматирање на Windowsсосема погодни за овие цели.

За правилно функционирање на уредот, звучните датотеки лоцирани на SD-картичката мора да исполнуваат одредени барања:
а) Форматот на датотеката мора да биде - некомпресиран WAV.
Параметрите на датотеката се како што следува:
- Брзина на битови - фреквенција на земање примероци (Frequency) - 32000 Hz;
- Број на канали (Канали) - 1 (моно);
- Димензија (Големина на примерокот) - 8 бита.
Можна е и таква кратенка - WAV PCM 8U

б) Датотеката мора да биде именувана на посебен начин. За да може уредот да знае која датотека е прва, втора, трета итн. првиот знак од името на датотеката мора да биде голема буква од латинската азбука (остатокот од името, како и наставката на датотеката, се игнорирани).
На пример, следните имиња на датотеки би биле точни:
A_Lay_dogs.wav - првата песна
Б-Ова е втората песна.wav - втората песна
Со предупредување! Грешка!.wav - трета песна

в) За да ги користите дополнителните функции на уредот, датотеките може да се лоцираат во две папки со име „1“ и „2“. Уредот има прекинувач за избор на активната папка, односно истата команда за почеток на репродукција може да започне песни од папката „1“ или „2“, во зависност од нивото на преклопниот влез (еден вид на избор на звучна шема е многу корисна работа!). Ако една од папките (или двете) не постои, датотеките се репродуцираат од root директориумот.

Можете да складирате други датотеки заедно со аудио записи, под услов да не создаваат конфликти со нивните имиња (подобро е да ги ставите во посебен директориум, тогаш нема да треба да обрнувате внимание на тоа како се именувани таму).

г) Поради малата количина на SRAM во ATtiny2313, невозможно е да се создаде бафер за претходно читање податоци, така што податоците од датотеката директно се емитуваат за репродукција. Соодветно на тоа, не постои можност (нема доволно време) за пребарување на фрагменти од датотеки во табелата FAT. Со други зборови, датотеките напишани на картичката не смеат да бидат фрагментирани.

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

4 Шема. Печатено коло.

Шемата на уредот е што е можно поедноставна. Всушност, освен самиот микроконтролер и SD-картичката, во него нема ништо. За себе, направив заптивка за SMD компоненти, бидејќи се планира да се користи овој уред на место ограничено по големина. Ако димензиите не се критични за вас, можете да го составите колото на табла за леб во верзијата DIP. Во случај на табла за леб, склопувањето на уредот ќе ви одземе најмногу 15 минути. Дозволениот напон за напојување за SD-картичка е од 2,7 до 3,6 волти. Во овој интервал, микроконтролерот исто така работи нормално, така што нема потреба да се користат соодветни компоненти. Ја проверив работата на целиот уред и со напојување од 5 волти - сè работеше добро, но не препорачувам да го направите ова на трајна основа, бидејќи различни картички можат различно да реагираат на пренапон. Како држач за картичка за microSD, користев адаптер, залемен директно на неговите контакти. Ако ви требаат помали димензии, подобро е да користите вистински држач за microSD картичка.

За трепкање на микроконтролерот, се користи истиот конектор како и за SD-картичката, така што треба да размислите како да го поврзете програмерот со него (намерно направив адаптер).

Откако ќе се залеме плочата, можете да го трепкате микроконтролерот.

Мала галерија на готовиот уред:




Мала нијанса во шемата.
Кога SD-картичката е вметната во држачот на картичката (картичката е поврзана со извор на енергија), се создава бран на струја и, соодветно, пад на напонот во колото (се чини дека во овој момент се полнат значителни капацитети на картичката ). Повлекувањето е толку значајно што микроконтролерот се ресетира. Го користам ова за да ја започнам процедурата за иницијализација на картичката (инсталирањето на картичката го рестартира микроконтролерот и првото нешто што го прави фирмверот е да ја бара и иницијализира картичката). Ако не го ресетирате MC при инсталирање на картичката (моќно напојување или големи капацитети за измазнување), тогаш треба да се грижите за копчето за ресетирање во колото за рачно ресетирање на микроконтролерот (ова е ако планирате да се „загреете“ промена на картички).

5 Работа со уредот.

Како што напишав погоре, работата со уредот е многу едноставна: копирајте ги правилно именуваните песни на SD-картичката, вметнете ја картичката во држачот на картичката, уредот автоматски ќе ја пронајде картичката, зелената LED ќе светне - тоа е тоа, уредот е подготвен за репродукција на песни. Сега треба само да изберете-започнете ја песната за репродукција, на начин кој најмногу ви одговара.

5.1 Копчиња на уредот, нивното дејство.

Се обидов да го направам уредот што е можно пофункционален, па затоа се користат многу ногарки на микроконтролерот за прекинувачи на режимот (ова го прави уредот да изгледа како еж :)). Ако не ви треба никаква функција - само оставете ја ногата да ви „виси“ во „воздух“.
Дејство на префрлување:
- „Чудовиште“ - ви овозможува да ја забавите (2 пати) репродукцијата на песната - создавајќи ефект на низок глас. Прекинувачот работи „во лет“ - брзината се менува при префрлување;
- „Хелиум“ - ја забрзува репродукцијата на песната (за 1/3) - создавајќи ефект на висок глас. Прекинувачот работи "во лет";
- „Повтори“ ако овој прекинувач е затворен за заземјување, тогаш избраната песна ќе се репродуцира на неодредено време (додека прекинувачот не се отвори). Ова може да биде корисно, на пример, ако треба да создадете одредена звучна позадина - звук на дожд, палење на оган, шум на поток ...;
- Копче „Избери / репродуцирај“ што ја започнува песната за репродукција (опис подолу);
- „Избери песна“ - поставување на бројот на песната што се репродуцира (опис подолу);
- „Dir1 / Dir2“ - избор на звучна шема (опис подолу).

5.2 Започнете со репродукција.

Постојат три начини да започнете репродукција на одредена песна:
- со испраќање голема буква од латиницата преку UART - веднаш започнува репродукцијата на датотеката што ја содржи оваа буква на почетокот на името;
- ако бројот на датотеката е избран со „Избери песна“ (бинарен код 0001=”A”, 0010=”B”, итн. 1- ногата е скратена до земја, 0 - „виси“ во „воздух“), тогаш копчето „Избери / репродуцирај“ ќе ја започне соодветната датотека за репродукција;
- ако ништо не е избрано со „Избери песна“ (0000 - нозете „висат“ во „воздух“), тогаш со притискање на копчето „Избери / репродукција“ одреден број пати, ја започнуваме соодветната песна (1 пат = „А“, 2 пати „Б“ итн.).

5.3 Звучни шеми.

Многу корисна карактеристика е можноста да се избере една од двете звучни шеми. Ова значи дека прекинувачот „Dir1 / Dir2“ ја избира папката на мапата од која ќе се репродуцира песната.

Има многу апликации: пораки на руски и англиски (едукативни играчки), детски и возрасни гласови, звуци од протечена вода и запален оган, мачка/куче, добар и злобен полицаец :), смирувачки/закрепнувачки звуци и куп други слични опции.

На пример, потребен ви е вашиот уред да може да комуницира со машки и женски гласови. Се спроведува вака:
- креирајте две групи пораки, соодветно, во женска и машка верзија;
- нумерирањето на датотеките за двете опции е исто. Не заборавајте дека уредот ја „гледа“ само првата буква во името на датотеката, за да можете самите да ги направите имињата поразбирливи, на пример, „C_Waiting for command_male.wav“ и „C_Waiting for command_female.wav“ се сосема точни ;
- збир на машки пораки се копира во папката „1“, а женски пораки во папката „2“.
Сега, во зависност од состојбата на прекинувачот „Dir1 / Dir2“, истата команда ќе репродуцира песни од папката „машки“ или „женски“.

5.4 Индикација за работа на уредот.

Бидејќи tini2313 има многу малку ногарки, а скоро сите се користат за прекинувачи, морав да жртвувам нормална индикација, а наместо тоа да прикачам нешто НЕ нормално. За да се наведат различни режими на работа, се користи само една нога на микроконтролерот, на која се поврзани две LED диоди - црвена и зелена (добро, или кој и да е најдобро што ви се допаѓа). Различни режими на работа на уредот се прикажуваат со специфичен код за боја:
- црвената ЛЕД трепка - нема SD-картичка или нејзиниот тип не е поддржан од уредот;
- црвената ЛЕД е вклучена - SD-картичката е поддржана и успешно иницијализирана, но картичката не е форматирана во FAT16;
- зелената ЛЕД е вклучена - SD-картичката е успешно иницијализирана, потребната е пронајдена датотечен системи уредот е подготвен да ја репродуцира песната - чекајќи ја командата;
- зелената LED светилка трепка - уредот ја репродуцира песната;
- зеленото е вклучено, црвеното е вклучено кратко време, зеленото е повторно вклучено - патеката не е пронајдена;
- зеленото светло е вклучено, накратко се гаси и зеленото светло повторно се вклучува - се притиска копчето за избор на песна.

5.5 Информации за дебагирање.

За да го олеснам пребарувањето за проблематичните области (во случај уредот да не сака да работи), ја удвоив секоја фаза на иницијализација во програмата со пораки преку UART. По секој успешен чекор, соодветниот знак се испраќа до UART:
- „S“ - (Start) периферијата на микроконтролерот е иницијализирана нормално;
- „C“ - (Card Init) SD-картичката е иницијализирана нормално и поддржана;
- „F“ - (FAT Init) FAT системподдржан;
- „1“ - (No 1 Dir) нема да се чита папката „1“ од root директориумот;
- „2“ - (No 2 Dir) нема да се чита папката „2“ од root директориумот;
- „Р“ - (Подготвен) уредот е целосно подготвен - чека наредба да ја започне патеката;
- Дополнително, секогаш кога се стартува песна, голема буква од името на песната се испраќа до UART.

6 Траки за озвучување на вашите уреди.

6.1 Конвертирање на песни

Ако не е пронајдено ништо соодветно во библиотеката погоре, тогаш можете да ги добиете потребните песни на мрежата (има многу специјални страници за музичари и уредување видео, каде што веќе се собрани големи библиотеки на звуци), во инсталации за игри (често звуците на играта се поделени на песни и преклопени во посебна папка). Можете исто така да исечете звучни ефекти од филмови и музика. Пронајдените траки треба да се конвертираат во формат што го поддржува уредот. Ве потсетувам дека форматот на датотеката мора да биде некомпресиран WAV. 32000Hz, 1ch, 8bit (WAV PCM 8U)
За конвертирање во овој формат, погоден е кој било музички уредник, или ако само треба да ја конвертирате песната без да ја уредувате -

Во многу апарати за домаќинство и уреди за индустриска автоматизација од релативно последниве години, инсталирани се механички броила. Тие се производи на транспортерот, намотки од жица во машините за намотување итн. Во случај на дефект, не е лесно да се најде сличен метар, а невозможно е да се поправи поради недостаток на резервни делови. Авторот предлага да се замени механичкиот бројач со електронски. Електронскиот бројач што се развива за да го замени механичкиот се покажува како премногу комплициран ако е изграден на микроциркули со низок и среден степен на интеграција (на пример, серијата K176, K561). особено ако е потребна обратна сметка. И за да го зачувате резултатот кога напојувањето е исклучено, неопходно е да се обезбеди резервна батеријаисхрана.

Но, можете да изградите бројач на само еден чип - универзален програмабилен микроконтролер, кој има различни периферни уредии може да реши многу широк спектар на проблеми. Многу микроконтролери имаат посебна мемориска област - EEPROM. Податоците напишани во него (вклучително и за време на извршувањето на програмата), како што е резултатот од тековното броење, се задржуваат дури и откако ќе се исклучи напојувањето.

Предложениот метар користи микроконтролер Attiny2313 од семејството Almel AVR. Уредот спроведува обратно броење, излезот на резултатот со откажување на незначителни n

закопчајте на четирицифрен LED индикатор, зачувувајќи го резултатот во EEPROM кога напојувањето е исклучено. Аналогниот компаратор вграден во микроконтролерот се користи за навремено откривање на намалување на напонот на напојување. Бројачот го памети резултатот од броењето кога ќе се исклучи напојувањето, го враќа кога е вклучен и, слично како и механичкиот бројач, е опремен со копче за ресетирање.

Шемата за бројачи е прикажана на сликата. Шест линии на портата B (РВ2-РВ7) и пет линии на портата D (PDO, PD1, PD4-PD6) се користат за организирање на динамичко прикажување на резултатот од броењето на LED индикаторот HL1. Колекторските оптоварувања на фототранзисторите VT1 и VT2 се отпорници вградени во микроконтролерот и вклучени во софтверот, поврзувајќи ги соодветните излези на микроконтролерот со неговото коло за напојување.

Зголемување на резултатот од броење N за еден се јавува во моментот на прекин на оптичката врска помеѓу диодата што емитува VD1 и фототранзисторот VT1, што создава зголемена разлика во нивоата на влезот INT0 на микроконтролерот. Во овој случај, нивото на влезот INT1 мора да биде ниско, т.е. фототранзисторот VT2 мора да биде осветлен од диодата што емитува VD2. Во моментот на растечкиот раб на влезот INT1, со ниско ниво на влезот INT0, резултатот ќе се намали за еден. Другите комбинации на нивоа и нивните разлики на влезовите INT0 и INT1 не го менуваат резултатот од броењето.

Кога ќе се достигне максималната вредност од 9999, броењето продолжува од нула. Со одземање на еден од нултата вредност се добива резултат 9999. Ако одбројувањето не е потребно, можете да ја исклучите диодата што емитува VD2 и фототранзисторот VT2 од бројачот и да го поврзете влезот INT1 на микроконтролерот со заедничка жица. Сметката само ќе оди на зголемување.

Како што веќе беше споменато, аналогниот компаратор вграден во микроконтролерот служи како детектор за пад на напон. Го споредува нестабилизираниот напон на излезот од исправувачот (диоден мост VD3) со стабилизираниот напон на излезот на интегрираниот регулатор DA1. Програмата циклично ја проверува состојбата на компараторот. По исклучувањето на мерачот од мрежата, напонот на кондензаторот на филтерот на исправувачот C1 паѓа, а стабилизираниот напон останува непроменет некое време. Отпорниците R2-R4 се избираат на следниов начин. дека состојбата на компараторот во оваа ситуација е обратна. Откако го откри ова, програмата има време да го запише резултатот од тековното броење на EEPROM на микроконтролерот дури и пред да престане да функционира поради исклучување. Следниот пат кога ќе се вклучи програмата, ќе го прочита бројот напишан во EEPROM и ќе го прикаже на индикаторот. Броењето ќе продолжи од оваа вредност.

Поради ограничениот број на пинови на микроконтролерот, за поврзување на копчето SB1, кое го ресетира бројачот, се користи пин 13, кој служи како инвертен аналоген влез на компараторот (AIM) и во исто време - „дигитален“ влез PB1. Делителот на напонот (отпорници R4, R5) овде го поставува нивото што го перцепира микроконтролерот како високо логично Кога ќе го притиснете копчето SB1, тоа ќе стане ниско. Ова нема да влијае на состојбата на компараторот, бидејќи напонот на влезот AIN0 е сè уште повисок отколку кај AIN1.

Кога ќе се притисне копчето SB1, програмата прикажува знак минус во сите цифри на индикаторот и по отпуштањето почнува да брои од нула. Ако напојувањето на бројачот е исклучено додека е притиснато копчето, тековниот резултат нема да се запише во EEPROM, а вредноста зачувана таму ќе остане иста.

Програмата е дизајнирана на таков начин што е лесно да се прилагоди на метар со други индикатори (на пример, со заеднички катоди), со различни жици печатено колоитн. Мала корекција на програмата ќе биде потребна и при користење кварцен резонатордо фреквенција која се разликува за повеќе од 1 MHz од наведената.

При извор на напон од 15 V, напонот се мери на пиновите 12 и 13 на панелот на микроконтролерот во однос на заедничката жица (игла 10). Првиот мора да биде во опсег од 4 ... 4,5 V, а вториот мора да биде поголем од 3,5 V, но помал од првиот. Тогаш изворниот напон постепено се намалува. Кога ќе падне на 9 ... 10 V, разликата во вредностите на напонот на пиновите 12 и 13 треба да стане нула, а потоа да го смените знакот.

Сега можете да инсталирате програмиран микроконтролер во панелот, да го поврзете трансформаторот и да нанесете мрежен напон на него. По 1,5 ... 2 секунди, треба да го притиснете копчето SB1. Индикаторот за бројач ќе го прикаже бројот 0. Ако ништо не се прикажува на индикаторот, повторно проверете ги вредностите на напонот на влезовите AIN0.AIN1 на микроконтролерот. Првиот мора да биде поголем од вториот.

Кога бројачот е успешно стартуван, останува да се провери точноста на броењето со наизменично засенчување на фототранзисторите со плоча непроѕирна на IR зраци. За поголем контрастпожелно е индикаторите да се затворат со светлосен филтер направен од црвено органско стакло.

Денес се обидуваме да искористиме повеќе едноставен микроконтролер 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 и правилно поставете ги осигурувачите. Бидејќи немаме кварцен резонатор, ги поставуваме осигурувачите на овој начин




Врв