attiny2313 құрылғысындағы DIY схемалары. Біз түймені қарапайым бағдарлама ATtiny2313 микроконтроллеріне қосамыз. МК-да программаның компиляциясы және микробағдарламасы

Қарапайым схеманы қалай құрастыруға болады, бағдарламашыны ATtiny2313 микроконтроллеріне қалай қосу керек, қалай жазу керек ең қарапайым бағдарлама C тілінде және ATtiny2313 микроконтроллерін біздің бағдарламамен қалай жыпылықтау керек, мұның бәрін осы мақаладан таба аласыз.

Бізге ең алдымен программист керек, программисттің түрі көп, қай программист таңдау керек?
Кәдімгі бағдарламашылар бар, оларға микроконтроллерді салып, оны жыпылықтатып, микроконтроллерді алып тастап, нәтижені көру үшін оны біздің тақтаға енгізу керек, және бұл реттілік алдымен жүздеген рет орындалуы керек, бұл опция, менің пікір, қолайлы емес.
Біздің микроконтроллер ATtiny2313 SPI порты арқылы ISP (жүйе ішіндегі бағдарламалау) функциясын қолдайды, бұл схема ішіндегі бағдарламалауды пайдалану жағдайы ISPМенің ойымша, ең ыңғайлы және жылдам, өйткені... микроконтроллерді әрбір микробағдарламаны жаңартқаннан кейін платадан алып тастаудың қажеті жоқ, сіз микроконтроллерді жүздеген рет бағдарламалай аласыз және бағдарламашыны компьютерден және тақтадан ажыратпай-ақ, микроконтроллерді жыпылықтағаннан кейін нәтижені көре аласыз, отладтау процесін бағдарламалық қамтамасыз етуәуесқойлық радиоқұрылғыны орнату айтарлықтай жеңілдетілді және оған жұмсалатын уақыт азаяды.
Схема ішіндегі ISP бағдарламашысын өзіңіз жасай аласыз, Интернетте олардың көпшілігі бар қарапайым тізбектербұл LPT арқылы қалай жасалады, COM порты, мысалы, бағдарламашы PonyProgОны қалай жасау керектігі туралы диаграммаларды Интернеттен таба аласыз.

Бұл мақалада микроконтроллерлерге арналған схема ішіндегі ISP бағдарламашымен жұмыс істеу талқыланады AVR (PX-400)ол COM порты арқылы жұмыс істейді.
Егер сіздің компьютеріңізде COM порты болмаса, сізге адаптер де қажет болады USB порты COM портында мұндай адаптерлердің көптеген түрлері бар, мен жұмыс істеген адаптерді ұсынамын: UCON-232S USB - сериялық порт түрлендіргіш тақтасы
Бағдарламашының суреті PX-400, адаптер UCON-232S USB , ATTiny2313 деректер парағы

Осы схеманың барлық бөлшектерін толығырақ қарастырайық:
(Қандай жағдайда мен барлық бөлшектерді, бағдарламашыны, адаптерді (USB-тен COM портына) chipdip.ru сайтынан сатып алдым)

1 - PBD-20 тақта розетка 2,54мм 2x10 түзу- Мен мұны ыңғайлы болу үшін, микроконтроллер түйреуіштерінен сигналдарды тексеруді жеңілдету үшін жасадым; бұл нүктені орындау мүмкін болмады.
2 - SCS-20 DIP панелі 20 түйреуіш- қажет болған жағдайда тақтадағы микроконтроллерді ауыстыруға болатындай етіп панельді тақтаға дәнекерлейміз,
ATtiny2313-20PU, DIP20, MCU, 5V, 1K-флэш, 12МГц- Біз микроконтроллерді DIP панеліне енгіземіз.
3 - Кварц кристалы 4.000 МГц (кесілген) HC-49S- 4 МГц кварц кристалы
4 - Керамикалық конденсатор K10-17B имп. 22pF NPO,5%,0805- 22pF екі керамикалық конденсатор
5 - 78M05 (+5В, 0,5А) TO220- 5В кернеу тұрақтандырғышы микроконтроллерді тұрақтандырылған қуатпен +5 В-тан аспайды, бұл жағдайда мен 4,4 В алдым, бұл жеткілікті.
6 - NP-116 қуат ашасы 1,3x3,4x9,5 мм MP-331 (7-0026c)- Қуат ашасы ескісіне дәнекерленген зарядтағышбастап ұялы телефонТұрақты ток 5,7 В/800 мА
7 - Борттағы DS-213 қуат розеткасы- NP-116 штепсельдік қосылымының қуат көзі қайда, электр қуатына оңай қосылу үшін
8 - IDC-10MS (BH-10), түзу аша- Тізбек ішіндегі ISP бағдарламашысын қосуға арналған аша
9 - Тұрақты резистор 0,25 Вт 150 Ом- MISO, SCK, MOSI түйреуіштеріндегі үш 150 Ом резисторлар
10 - Тұрақты резистор 0,25 Вт 47 Ом- RESET істікшесіне бір 47 Ом резистор
11 - Әдептілік түймесі h=5мм, TC-0103 (TS-A2PS-130)- Түйме қалпына келтіру RESET, түймені басқаннан кейін микроконтроллердегі бағдарлама басынан басталады, түймені жасау мүмкін болмады.
12 - жасыл жарық диоды d=3мм, 2,5В, 2мА - индикатор функциясын орындайды, бұл тармақты орындау мүмкін болмады.
13 - Тұрақты резистор 0,25 Вт 110 Ом- Жарық диодты шамда 2 В болатындай етіп жарық диоды үшін резистор, бұл қадамды өткізіп жіберуге болады
14 - микроконтроллер түйреуіштерінен сигналдарды тексеру үшін жарық диодты екі сым қосылған, бұл қадамды орындау мүмкін емес
15 - Dip-RM баспа тақтасы 100x100мм

3 және 4 нүктелер Сыртқы сағат генераторы сияқты бір блок ретінде жұмыс істеңіз, егер сіз ішкі RC осцилляторының дәлдігі мен тұрақтылығына жоғары талаптар қоймасаңыз, бұл нүктелерді алып тастауға болады, ішкі RC осцилляторында шамамен 10% қате бар және дәлдікке температураның өзгеруі әсер етуі мүмкін.

Осылайша сіз жүктеп алып, орнаттыңыз Atmel студиясы :
Іске кірісейік Atmel студиясыжәне жарық диодты жыпылықтай отырып, Си тілінде қарапайым бағдарламаны жазыңыз:
Басыңыз: Жаңа жоба... \ AVR GCC \ C \ C Орындалатын жоба
Жоба сақталатын қалтаны және жоба атын көрсетіңіз, мысалы, Test1 және OK түймесін басыңыз.
Тізімнен ATtiny2313 микроконтроллерін таңдап, OK түймесін басыңыз.
Терезеде пайда болғанның барлығын өшіріп, төмендегі бағдарлама кодын қоямыз:

#define F_CPU 4000000L //Сыртқы кварц 4 МГц жиілігін көрсетіңіз
#қосу
#қосу
int негізгі(жарамсыз)
{
//Барлық PORTB түйреуіштерін шығыс ретінде орнатыңыз
DDRB=0xFF;//Ақпаратты тасымалдау бағытының регистрі (1-шығыс, 0-кіріс)
while(1)
{
// PORTB деректер регистрі (ақпаратты шығару үшін пайдаланылады)
PORTB=0b00000001;//12 МК PB0 портына 1 жеткіземіз - жарық диодты қосыңыз
PORTB=0b00000000;//MK PB0 12 портына 0 қолдану - жарық диодты өшіру
_delay_ms(1000);//Кідіріс 1 сек.
}
}

Мәзірге өтіңіз Құрастыру\Конфигурация менеджері\Белсенді шешім конфигурациясы\
Таңдау Шығару, түймесін басыңыз Жабық
Біз мұны жобада қалта болуы үшін жасадық Шығару, ол туралы мен төменде айтатын боламын.

басыңыз F7, дайын, біздің қосымшамыз құрастырылды!
ATtiny2313 микроконтроллерінің микробағдарламасын жыпылықтау үшін бізге кеңейтімі бар бір ғана файл қажет HEX
Ол біздің жоба қалтасында орналасқан: ...
Файлға назар аударыңыз Test1.hexжай ғана қалтадан алыңыз Шығару !
Шатастыруға болмайды, өйткені қалта Түзетуфайлы да бар Test1.hex, бірақ бұл файл әлі де бар жөндеу ақпаратыжәне осыған байланысты сіз бұл файлмен жыпылықтай алмайсыз. әдетте болады үлкен өлшемжәне МК-ның жадына сыймайды.

Біз .hex файлын таптық, енді бізге ATtiny2313 микроконтроллерін жыпылықтау үшін бағдарлама қажет, мұндай бағдарламалар көп, бірақ біз бағдарламаны қолданамыз: Авр-Осп II
Жүктеп алу:

Біз бағдарламашыны схемаға қосамыз және схемаға қуат беруді ұмытпаңыз!

Бағдарламаны іске қосыңыз Авр-Осп II, FLASH бөлімінде файлға жолды көрсетіңіз... \Test1\Test1\Release\Test1.hex, бағдарламадағы ұяшықтарды белгілеп, түймесін басыңыз Бағдарламаміне, микроконтроллер ATtiny2313 жыпылықтайды!

Схема ішіндегі ISP программалаушыларының артықшылығы неде?Енді біздің схемадан сымдарды ажыратпай, бағдарламаға өзгертулер енгізіп, жоғарыда сипатталғандай микроконтроллерді жыпылықтатып, нәтижені бірден көруге болады.

Біздің форумда сұрақтарыңыз бен пікірлеріңізді қалдырыңыз

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

RISC (Reduced Instruction Set Computer). Бұл архитектура бар үлкен жиынтықнұсқаулар, олардың көпшілігі 1 машиналық циклде орындалады. Бұдан шығатыны, CISC архитектурасына негізделген алдыңғы микроконтроллерлермен салыстырғанда (мысалы, MCS51) RISC микроконтроллерлері 12 есе жылдамырақ.

Немесе орындаудың белгілі бір деңгейін негізге алсақ, онда орындау бұл шарт RISC (Attiny2313) негізіндегі микроконтроллерлер генератордың тактілік жиілігін 12 есе аз талап етеді, бұл қуат тұтынудың айтарлықтай төмендеуіне әкеледі. Осыған байланысты дизайн жасауға болады әртүрлі құрылғылар Attiny2313 құрылғысында батарея қуатын пайдалану.

Операциялық сақтау құрылғысы (RAM) және деректер мен бағдарламалардың тұрақты жады:

  • 10 000 жазу/өшіру қайталауын қамтамасыз ете алатын өздігінен бағдарламаланатын 2 КБ Flash бағдарламасы жады.
  • 100 000 жазу/өшіру қайталануын қамтамасыз ете алатын 128 байт EEPROM жазылатын деректер жады.
  • 128 байт SRAM жады (тек оқуға арналған жедел жады).
  • Бағдарлама кодын және EEPROM деректерін қорғау үшін функцияны пайдалануға болады.

Перифериялық қасиеттері:

  1. Микроконтроллер Attiny2313максималды коэффициенті 256 бөлек орнатылған алдын ала таратқышы бар сегіз разрядты таймер-санауышпен жабдықталған.
  2. Сондай-ақ бөлек алдын ала масштабтауыш, түсіру және салыстыру схемасы бар он алты разрядты таймер-санауыш бар. Таймердің сағаты бар - есептегіш әртүрлі болуы мүмкін сыртқы көзсигнал, және ішкі.
  3. Екі арна. Жылдам PWM модуляциясының және фазалық түзетуі бар PWM жұмыс режимі бар.
  4. Ішкі аналогтық компаратор.
  5. Ішкі осцилляторы бар күзетші таймері (бағдарламаланатын).
  6. Сериялық әмбебап интерфейс (USI).

Attiny2313 арнайы техникалық көрсеткіштері:


  • Жұмыс істемейтін— Күту режимі. Бұл жағдайда тек орталық процессор жұмысын тоқтатады. Күту SPI, аналогтық компаратор, A/D түрлендіргіш, санауыш таймер, бақылаушы немесе үзу жүйесінің жұмысына әсер етпейді. Шын мәнінде, ол тек ядро ​​синхрондауды тоқтатады орталық процессоржәне флэш-жад. Attiny2313 микроконтроллері сыртқы немесе ішкі үзу арқылы Күту режимінен қалыпты жұмыс режиміне оралады.
  • Өшіру— Ең үнемді режим, онда Attiny2313 микроконтроллері шын мәнінде қуат тұтынудан өшіріледі. Бұл күйде сағат генераторы тоқтап, барлық перифериялық құрылғылар өшіріледі. Сыртқы көзден үзу өңдеу модулі ғана белсенді болып қалады. Үзіліс анықталған кезде, Attiny2313 микроконтроллері Қуатты өшіруден шығып, қалыпты жұмысына оралады.
  • Қал– микроконтроллер SLEE пәрмені арқылы осы қуат тұтынудың күту режиміне ауысады. Бұл өшіруге ұқсас, жалғыз айырмашылығы сағаттың жұмысын жалғастыруда.

Attiny2313 микроконтроллерінің кіріс-шығыс порттары:

Микроконтроллерде 18 енгізу/шығару түйреуіштері бар, оларды дизайн қажеттіліктеріне қарай бағдарламалауға болады арнайы құрылғы. Бұл порттардың шығыс буферлері салыстырмалы түрде жоғары жүктемеге төтеп бере алады.

  • A порты (PA2 - PA0) – 3 бит. Бағдарламаланатын тартылатын резисторлары бар екі бағытты енгізу/шығару порты.
  • B порты (PB7 - PB0) – 8 бит. Бағдарламаланатын тартылатын резисторлары бар екі бағытты енгізу/шығару порты.
  • D порты (PD6 - PD0) – 7 бит. Бағдарламаланатын тартылатын резисторлары бар екі бағытты енгізу/шығару порты.

Қоректендіру кернеуінің диапазоны:

Микроконтроллер 1,8-ден 5,5 вольтке дейінгі қоректену кернеуімен сәтті жұмыс істейді. Ағымдағы тұтыну контроллердің жұмыс режиміне байланысты:

Белсенді режим:

  • 32 кГц тактілік жиілікте 20 мкА және қоректену кернеуі 1,8 вольт.
  • 1 МГц тактілік жиілікте және 1,8 вольт қоректендіру кернеуінде 300 мкА.

Қуатты үнемдеу режимі:

  • 1,8 вольт қоректену кернеуінде 0,5 мкА.

(3,6 Мб, жүктелген: 5 934)

Осы мақаланың құрылғысы SD карталарымен жұмыс істейді. Тақырып ескі және өте күрделі, бірақ SD карталарын пайдалану бұл туралы қайтадан жазуға тұрарлық.
Жалпы алғанда, SD карталарының (SDC, SD Card) көптеген артықшылықтары бар және олар өте қарапайым және шағын ендірілген жобаларда қолдануға ыңғайлы. Бұған бірқатар факторлар ықпал етеді:
- картамен әрекеттесу үшін өте қарапайым интерфейс (SPI арқылы жүзеге асырылады);
- жоғары жұмыс жылдамдығы (микроконтроллер SD картасынан деректерді 10 Мбит/с жуық жылдамдықпен тасымалдауға қабілетті);
- төмен қуат тұтыну (сөзбе-сөз бірнеше миллиампер - артық емес);
- шағын өлшемдер;
- қолжетімділік және төмен баға.
SD карталарында іс жүзінде ешқандай кемшіліктер жоқ (мүмкін, оларды инициализациялау процедурасынан басқа :)).

1. Кіріспе.

Мен осы мақалада сипатталған құрылғыны SD картасымен сөйлесетін құрылғы деп атадым. Кішкене претенциалды ;), бірақ аты бұл сөйлейтін құрылғы екенін анық көрсетеді. Ол сіздің жобаларыңызды көрсетуге арналған. Қысқаша айтқанда, ол келесідей жұмыс істейді: нөмірленген дыбыс файлдары SD картасына жазылады, оны құрылғы сіздің командаңыз бойынша ойнатады. Қолдану аясы өте кең - ескерту жүйелері, ойыншықтар, роботтар, ақылды үйжәне т.б. Құрылғының өлшемдері өте қарапайым (ол кішірек болуы мүмкін, бірақ мен әдейі ATtiny2313 микроконтроллерін таңдадым, ол арзанырақ және алуға оңай). Мен қарапайымдылық пен максималды функционалдылыққа басты назар аударуға тырыстым.
Алға қарап, соңында не болатынын көрейік:

Мұндай құрылғы пайдалы ма? Олай болса жинаймыз!

2 Жад картасы.

Құрылғы SD жад картасын пайдаланады. Мен таңдаудың себептері туралы бұрыннан жазғанмын, тек SD карталары стандартты жад картасына айналатынын ғана қосамын. мобильді құрылғылар. Тіпті жад карталарының түрін фанатикалық түрде насихаттайтын/ілгерілететін өндірушілер SD карталарын баяу пайдалана бастайды. Мұндай танымалдыққа осы карталардың төмен бағасы себеп болған шығар. Әуесқойлық құрылғылар үшін SD картасы, шын мәнінде, пайдалануға жарамды жалғыз карта және мұның себебі - онымен жұмыс істеудің қарапайым интерфейсі.

SD картасы эволюцияда ұзақ жолдан өтті және оны жүзеге асырудың бірнеше нұсқасы бар (MMC - SD картасының опциясы ретінде, SD ver1, SD ver2, SDHC, SDXC). Карточкамен байланысу процедурасы карталардың барлық түрлері үшін қарапайым және әмбебап, бірақ оны іске қосу (картаны инициализациялау) картаны ритуалды «серпілдету», бос «жалған» командаларды жіберу арқылы өте түсініксіз және түсініксіз процесс. және басқа да түсініксіз нәрселер (қысқасы, бубенмен билеу керек :)). SDC хаттамасының спецификациясының өзі инициализациялау процесін біршама егжей-тегжейлі сипаттайды, бұл түсінікті, әрқайсының өз аппараттық құралдары бар, өз сипаттамалары бар көптеген карталар өндірушілері бар... Мен нені түсінемін? - Мен инициализация процедурасын мүмкіндігінше әмбебап етуге тырыстым, бірақ кейбір карталар жұмыс істемейтініне дайын болыңыз. Сондықтан, құрылғыңызда бірдеңе дұрыс болмаса, басқа жад картасын қолданып көріңіз - бұл себеп болуы мүмкін.

IN бұл құрылғыӨлшемі 2 ГБ дейінгі SD карталарына қолдау көрсетіледі. Жоғарырақ (SDHC және SDXC) барлығына қолдау көрсетілмейді.
Құрылғы үшін картаның қандай пішін факторы (SD, MiniSD немесе MicroSD) екені маңызды емес, бірақ картаның түйіспелі ұясына сәйкес оны дұрыс қосу керек.

3 Файлдық жүйе.

Құрылғы FAT16 файлдық жүйесі бар карталарды пайдаланады. Бұл жүйе біздікі сияқты құрылғылар үшін өте қолайлы, өйткені ол қарапайым және іске асырылуы оңай (FAT12 және FAT32, негізінен, іске асыру қиын емес, бірақ FAT16-мен салыстырғанда ешқандай артықшылықтардың болмауына байланысты бұл мүмкін емес).

Картаны пішімдеу үшін арнайы талаптар жоқ - оны кез келген қолжетімді құрылғыда пішімдеуге болады. Стандартты терезелерді пішімдеуосы мақсаттарға өте қолайлы.

Құрылғы дұрыс жұмыс істеуі үшін SD картасында орналасқан дыбыс файлдары белгілі талаптарға сай болуы керек:
a) Файл пішімі қысылмаған WAV болуы керек.
Файл параметрлері келесідей:
- Битрейт - дискретизация жиілігі (Жиілік) - 32000 Гц;
- Арналар саны (Арналар) - 1 (моно);
- Үлгі өлшемі - 8 бит.
Басқа ықтимал азайту - WAV PCM 8U

б) Файлға арнайы ат қою керек. Құрылғы қай файлдың бірінші, екінші, үшінші және т.б. екенін білу үшін. Файл атауының бірінші таңбасы латын әліпбиінің бас әріпі болуы керек (файл кеңейтімі сияқты атаудың қалған бөлігі еленбейді).
Мысалы, келесі файл атаулары дұрыс болады:
A_Lai_dog.wav - бірінші трек
B-Бұл екінші трек.wav - екінші трек
Ескертумен! Қате!.wav – үшінші трек

c) Құрылғының қосымша мүмкіндіктерін пайдалану үшін файлдарды «1» және «2» деп аталатын екі қалтада орналастыруға болады. Құрылғыда белсенді қалтаны таңдауға арналған қосқыш бар, яғни ойнатуды бастау пәрмені ауысу кірісіндегі деңгейге байланысты «1» немесе «2» қалтасынан тректерді ойната алады (дыбыс схемасын таңдау түрі). - өте пайдалы нәрсе!). Қалталардың біреуі (немесе екеуі де) жоқ болса, файлдар түбірлік каталогтан ойнатылады.

Сіз кез келген басқа файлдарды аудио тректермен бірге сақтай аласыз, егер олар өз атауларымен қайшылықтар тудырмаса (оларды бөлек каталогқа қойған дұрыс, сонда олардың қалай аталғанына назар аударудың қажеті жоқ).

d) ATtiny2313 құрылғысындағы SRAM көлемі аз болғандықтан, деректерді алдын ала оқу үшін буфер жасау мүмкін емес, сондықтан файлдан деректер ойнату үшін тікелей шығарылады. Тиісінше, FAT кестесін пайдаланып файл фрагменттерін іздеуге ешқандай мүмкіндік жоқ (уақыт жеткіліксіз). Басқаша айтқанда, картаға жазылған файлдар фрагменттелмеуі керек.

Шын мәнінде, бұл үлкен мәселе емес, өйткені кез келген операциялық жүйеәрқашан файлды тұтас бөлік ретінде жазуға тырысады және картада бос орын болғанша, файлдармен кез келген әрекеттер (жою, көшіру, атын өзгерту) олардың тұтастығына әсер етпейді. Егер сізде өте кішкентай карта болса немесе үлкен картаны сыйымдылыққа дейін толтырған болсаңыз, файлдардың тұтастығына сенімді болу үшін оларды жай ғана мына жерге көшіріңіз. қатты дисккомпьютерде картаны пішімдеп, файлдарды қайтарыңыз.

4 Схема. Баспа төлем.

Құрылғының схемасы мүмкіндігінше қарапайым. Шын мәнінде, микроконтроллердің өзі мен SD картасынан басқа, онда ештеңе жоқ. Мен өзім үшін SMD компоненттеріне белгі жасадым, өйткені мен бұл құрылғыны өлшемдері шектеулі жерде пайдалануды жоспарлап отырмын. Егер өлшемдер сіз үшін маңызды болмаса, схеманы DIP нұсқасында нан тақтасында жинауға болады. Нан тақтасы жағдайында құрылғыны жинау сізге ең көбі 15 минутты алады. SD картасы үшін рұқсат етілген қуат кернеуі 2,7-ден 3,6 вольтке дейін. Микроконтроллер де осы аралықта қалыпты жұмыс істейді, сондықтан сәйкес келетін компоненттерді пайдаланудың қажеті жоқ. Мен бүкіл құрылғының жұмысын және 5 вольт қуат көзімен тексердім - бәрі жақсы жұмыс істеді, бірақ мен мұны істеуді ұсынбаймын тұрақты негіз, өйткені әртүрлі карталар асқын кернеуге әртүрлі әрекет етуі мүмкін. Мен адаптерді microSD картасының ұстаушысы ретінде пайдаландым, оны тікелей контактілеріне дәнекерлеп қойдым. Егер сізге кішірек өлшемдер қажет болса, microSD үшін нақты карта ұстаушыны қолданған дұрыс.

Микроконтроллердің микробағдарламасын жыпылықтау үшін SD картасымен бірдей қосқыш пайдаланылады, сондықтан оған бағдарламашыны қалай қосу керектігі туралы ойлану керек (мен арнайы адаптер жасадым).

Тақта дәнекерленгеннен кейін микроконтроллерді жыпылықтауға болады.

Дайын құрылғының шағын галереясы:




Схемаға қатысты шағын нюанс.
SD картасын карта ұстаушысына орнату кезінде (картаны қуат көзіне қосу) ток кернеуі пайда болады және сәйкесінше тізбектегі кернеудің төмендеуі (қазіргі уақытта картада айтарлықтай қуаттар зарядталып жатқан сияқты). Шығарудың маңыздылығы сонша, микроконтроллер қалпына келтіріледі. Мен мұны картаны инициализациялау процедурасын бастау үшін қолданамын (картаны орнату микроконтроллерді қайта іске қосады және микробағдарлама жасайтын бірінші нәрсе - картаны іздеу және инициализациялау). Егер сіз картаны (қуатты қуат көзі немесе үлкен тегістейтін конденсаторлар) орнатқан кезде микроконтроллерді бастапқы қалпына келтірмесеңіз, микроконтроллерді қолмен қалпына келтіру үшін тізбектегі қалпына келтіру түймешігін қадағалауыңыз керек (егер сіз «ыстық» режимін жоспарласаңыз). карталарды ауыстыру).

5 Құрылғының жұмысы.

Жоғарыда жазғанымдай, құрылғымен жұмыс істеу өте қарапайым: SD картасына дұрыс аталған тректерді көшіріңіз, картаны карта ұстаушысына салыңыз, құрылғы картаны автоматты түрде табады, жасыл жарық диодты шамды қосады - міне, бұл құрылғы тректерді ойнауға дайын. Енді сізге тек өзіңізге қолайлы жолды таңдап, ойнатуды бастау керек.

5.1 Құрылғы түймелері және олардың әрекеттері.

Мен құрылғыны мүмкіндігінше функционалды етуге тырыстым, сондықтан жұмыс режимінің қосқыштары үшін микроконтроллердің көптеген аяқтары пайдаланылады (бұл құрылғыны кірпіге ұқсатады :)). Егер сізге ешқандай функция қажет болмаса, аяғыңызды «ауада» «ілулі» қалдырыңыз.
Ауыстыру әрекеті:
- «Монстр» - тректі ойнатуды баяулатуға (2 есе) мүмкіндік береді - төмен дауыс әсерін жасайды. Коммутатор «жүзде» жұмыс істейді - ауысу кезінде жылдамдық өзгереді;
- «Гелий» - жолды ойнатуды жылдамдатады (1/3) - жоғары дыбыс әсерін жасайды. Коммутатор жылдам жұмыс істейді;
- «Қайталау» егер бұл қосқыш жерге тұйықталса, таңдалған жол шексіз ойнайды (қосқыш ашылғанша). Бұл пайдалы болуы мүмкін, мысалы, белгілі бір дыбыстық фон жасау қажет болса - жаңбырдың дыбысы, жанып жатқан от, ағыстың шуы...;
- Ойнату үшін жолды бастайтын «Таңдау / Ойнату» түймесі (төмендегі сипаттама);
- «Тректі таңдау» - ойнатылатын жолдың нөмірін орнату (төмендегі сипаттама);
- «Dir1 / Dir2» - дыбыс схемасын таңдаңыз (төмендегі сипаттама).

5.2 Ойнатуды бастау.

Белгілі бір жолды ойнатуды бастаудың үш жолы бар:
- латын әліпбиінің бас әрпін UART арқылы жіберу арқылы атау басында осы әріпті қамтитын файлды ойнату дереу басталады;
- егер «Тректі таңдау» қолданылса, файл нөмірі таңдалады (екілік код 0001=”A”, 0010=”B”, т.б. 1 - аяқ жерге жабылған, 0 - “ауада” “ілулі”), содан кейін «Таңдау / Ойнату» түймесі ойнату үшін сәйкес файлды бастайды;
- егер «Тректі таңдау» (0000 - аяқтары «ауада» «ілулі») арқылы ештеңе таңдалмаса, онда «Таңдау / Ойнату» түймесін бірнеше рет басу арқылы біз сәйкес тректі іске қосамыз (1 рет = “A”, 2 есе =”B”, т.б.).

5.3 Дыбыс схемалары.

Өте пайдалы функция - екі дыбыс схемасының біреуін таңдау функциясы. Бұл «Dir1 / Dir2» қосқышы трек ойнатылатын картадағы қалтаны таңдайтынын білдіреді.

Қолданбалар өте көп: орыс және ағылшын тілдеріндегі хабарламалар (оқу ойыншықтары), балалар мен ересектердің дауыстары, ағып жатқан су мен жанып жатқан оттың шуы, мысық/ит, жақсылық пен зұлымдық полицей :), тыныштандыратын/жігерлендіретін дыбыстар және басқалар. ұқсас опциялар.

Мысалы, ерлер мен әйелдердің дауысымен сөйлесе алу үшін сізге құрылғы қажет. Ол келесідей жүзеге асырылады:
- әйел және ер нұсқасында сәйкесінше екі хабарламалар жинағын жасау;
- екі опция үшін де файл нөмірленуі бірдей. Құрылғы файл атауындағы бірінші әріпті ғана «көретінін» ұмытпаңыз, осылайша сіз атауларды өзіңізге түсінікті ете аласыз, мысалы, «S_Waiting for command_male.wav» және «S_Waiting for command_female.wav» өте жақсы. дұрыс;
- ерлер хабарламаларының жинағын «1» қалтасына, ал әйелдер хабарламаларын «2» қалтасына көшіріңіз.
Енді «Dir1 / Dir2» қосқышының күйіне байланысты сол пәрмен «ер» немесе «әйел» қалтасындағы тректерді ойнатады.

5.4 Құрылғының жұмысының көрсеткіші.

Teeny2313-тің аяқтары өте аз болғандықтан және олардың барлығы дерлік қосқыштар үшін пайдаланылғандықтан, мен қалыпты көрсеткішті құрбан етіп, орнына қалыпты ЕМЕС нәрсені қосуға тура келді. Әртүрлі жұмыс режимдерін көрсету үшін микроконтроллердің тек бір аяғы пайдаланылады, оған екі жарық диоды қосылған - қызыл және жасыл (немесе қайсысын қаласаңыз). Құрылғының әртүрлі жұмыс режимдері белгілі бір түс коды арқылы көрсетіледі:
- қызыл жарық диоды жыпылықтайды - SD картасы жоқ немесе оның түріне құрылғы қолдау көрсетпейді;
- қызыл жарық диоды қосулы - SD картасына қолдау көрсетіледі және сәтті іске қосылды, бірақ карта FAT16 форматында пішімделмеген;
- жасыл жарық диоды қосулы - SD картасы сәтті іске қосылды, қажеттісі табылды файлдық жүйежәне құрылғы тректі ойнауға дайын - пәрменді күтуде;
- жасыл жарық диоды жыпылықтайды - құрылғы трек ойнап жатыр;
- жасыл жанады, қызыл жанады қысқа, жасыл қайтадан жанады - трек табылмады;
- жасыл жанады, қысқа уақытқа сөнеді және қайтадан жасылға айналады - трек таңдау пернесі басылады.

5.5 Түзету ақпараты.

Проблемалық аймақтарды табуды жеңілдету үшін (егер құрылғы жұмыс істегісі келмесе) мен бағдарламадағы әрбір инициализация кезеңін UART арқылы хабарламалармен көшірдім. Әрбір сәтті қадамнан кейін сәйкес таңба UART-қа жіберіледі:
- “S” - (Бастау) микроконтроллердің перифериялық құрылғылары қалыпты түрде инициализацияланған;
- “C” - (Card Init) SD картасы қалыпты түрде инициализацияланған және оған қолдау көрсетіледі;
- “F” - (FAT Init) FAT жүйесіқолдау көрсетіледі;
- «1» - (No 1 Dir) қалта жоқ «1» оқу түбірлік каталогтан орындалады;
- «2» - (No 2 Dir) қалта жоқ «2» оқу түбірлік каталогтан орындалады;
- «R» - (Дайын) құрылғы толығымен дайын - жолды бастау пәрменін күтуде;
- Сонымен қатар, трек басталған сайын трек атауының бас әріпі UART-қа жіберіледі.

6 Құрылғыларды дубляждауға арналған тректер.

6.1 Жолдарды түрлендіру

Егер сіз жоғарыдағы кітапханада қолайлы ештеңе таппасаңыз, онда сіз Интернетте қажетті тректерді ала аласыз (музыканттарға және бейне өңдеуге арналған көптеген арнайы сайттар бар, онда үлкен дыбыс кітапханалары жиналған), ойын қондырғыларында ( жиі геймплей дыбыстары жолдарға бөлініп, бөлек қалтаға салынады). Сондай-ақ фильмдер мен музыкалық шығармалардан дыбыс әсерлерін қиюға болады. Табылған жолдарды құрылғы қолдайтын пішімге түрлендіру қажет. Естеріңізге сала кетейін, файл пішімі сығымдалмаған WAV болуы керек. 32000 Гц, 1 арна, 8 бит (WAV PCM 8U)
Кез келген музыкалық редактор осы пішімге түрлендіруге жарамды немесе, егер сізге оны өңдемей-ақ тректі түрлендіру қажет болса -

Салыстырмалы түрде соңғы өндіріс жылдарындағы көптеген тұрмыстық техника мен өнеркәсіптік автоматтандыру құрылғыларында механикалық есептегіштер орнатылған. Олар конвейердегі бұйымдар, орау машиналарындағы сым бұрылыстары және т.б.. Ақау болған жағдайда ұқсас есептегішті табу оңай емес, қосалқы бөлшектердің жоқтығынан жөндеу мүмкін емес. Автор механикалық есептегішті электрондыға ауыстыруды ұсынады. Механикалық санауды ауыстыру үшін жасалған электронды есептегіш, егер ол интеграцияның төмен және орташа дәрежесі бар микросхемаларға салынған болса (мысалы, K176, K561 сериялары) тым күрделі болып шығады. әсіресе кері есептік жазба қажет болса. Ал қуат өшірілгенде нәтижені сақтау үшін қамтамасыз ету қажет резервтік батареятамақтану.

Бірақ сіз тек бір чипте есептегішті құра аласыз - әмбебап бағдарламаланатын микроконтроллер, оның құрамына әртүрлі перифериялық құрылғыларжәне өте кең ауқымды мәселелерді шешуге қабілетті. Көптеген микроконтроллерлерде арнайы жад аймағы бар - EEPROM. Оған жазылған деректер (соның ішінде бағдарламаны орындау кезінде), мысалы, ағымдағы санау нәтижесі қуат өшірілгеннен кейін де сақталады.

Ұсынылған есептегіш Almel компаниясының AVR отбасынан Attiny2313 микроконтроллерін пайдаланады. Құрылғы кері санауды жүзеге асырады, нәтижені шамалы жоюмен көрсетеді

қуат өшірілгенде нәтижені EEPROM жүйесінде сақтайтын төрт таңбалы жарық диоды индикаторында ұяшықты қосыңыз. Микроконтроллерге орнатылған аналогтық компаратор қоректену кернеуінің төмендеуін уақтылы анықтау үшін қолданылады. Есептегіш қуат өшірілгенде санау нәтижесін есте сақтайды, оны қосу кезінде қалпына келтіреді және механикалық есептегіш сияқты, қалпына келтіру түймешігімен жабдықталған.

Есептегіш схема суретте көрсетілген. В портының алты жолы (РВ2-РВ7) және D портының бес жолы (PDO, PD1, PD4-PD6) HL1 LED индикаторында санау нәтижесінің динамикалық индикациясын ұйымдастыру үшін пайдаланылады. VT1 және VT2 фототранзисторларының коллекторлық жүктемелері микроконтроллерге орнатылған резисторлар болып табылады және микроконтроллердің сәйкес түйреуіштерін оның қоректендіру тізбегіне қосатын бағдарламалық қамтамасыз ету арқылы іске қосылады.

N санау нәтижесінің бір ұлғаюы VD1 эмитенттік диод пен VT1 фототранзисторы арасындағы оптикалық байланыс үзілген сәтте орын алады, бұл микроконтроллердің INT0 кірісінде өсу деңгейінің айырмашылығын тудырады. Бұл жағдайда INT1 кірісіндегі деңгей төмен болуы керек, яғни VT2 фототранзисторы VD2 сәулелену диодымен жарықтандырылуы керек. INT1 кірісіндегі дифференциалдың жоғарылауы және INT0 кірісіндегі төмен деңгейінің сәтінде нәтиже бір төмендейді. Деңгейлердің басқа комбинациялары және олардың INT0 және INT1 кірістеріндегі айырмашылықтары санау нәтижесін өзгертпейді.

9999 максималды мәніне жеткенде, санау нөлден жалғасады. Нөлдік мәннен біреуін алып тастау 9999 нәтижесін береді. Егер кері санау қажет болмаса, VD2 сәулелену диодын және VT2 фототранзисторын есептегіштен шығарып, микроконтроллердің INT1 кірісін жалпы сымға қосуға болады. Саны тек ұлғая береді.

Жоғарыда айтылғандай, қоректендіру кернеуінің төмендеуі детекторы микроконтроллерге орнатылған аналогтық компаратор болып табылады. Ол түзеткіштің шығысындағы тұрақсызданған кернеуді (диодтық көпір VD3) біріктірілген тұрақтандырғыш DA1 шығысындағы тұрақтандырылған кернеумен салыстырады. Бағдарлама компаратордың күйін циклдік түрде тексереді. Есептегішті желіден ажыратқаннан кейін түзеткіш сүзгінің C1 конденсаторындағы кернеу төмендейді, ал тұрақтандырылған кернеу біраз уақытқа дейін өзгеріссіз қалады. R2-R4 резисторлары келесідей таңдалады. бұл жағдайдағы компаратордың күйі кері болатынын. Мұны анықтаған бағдарлама токтың өшірілуіне байланысты жұмысын тоқтатқанға дейін микроконтроллердің EEPROM-ға ағымдағы есептеу нәтижесін жаза алады. Оны келесі рет қосқанда бағдарлама EERROM-да жазылған санды оқып, оны индикаторда көрсетеді. Осы мәннен санау жалғасады.

Микроконтроллер түйреуіштерінің шектеулі санына байланысты есептегішті қалпына келтіретін SB1 түймешігін қосу үшін компаратордың (AIM) инвертивті аналогтық кірісі ретінде және бір уақытта «цифрлық» кіріс ретінде қызмет ететін 13 істікшесі пайдаланылды. PB1. Кернеу бөлгіш (резисторлар R4, R5) мұнда микроконтроллер қабылдайтын деңгейді жоғары логикалық деп белгілейді.SB1 түймесін басқан кезде ол төмен болады. Бұл компаратордың күйіне әсер етпейді, өйткені AIN0 кірісіндегі кернеу әлі де AIN1 кернеуінен жоғары.

SB1 түймесі басылғанда, бағдарлама индикатордың барлық сандарында минус белгісін көрсетеді және оны жібергеннен кейін ол нөлден бастап санауды бастайды. Түймешікті басқан кезде есептегіштің қуатын өшірсеңіз, ағымдағы нәтиже EEPROM-ға жазылмайды және онда сақталған мән өзгеріссіз қалады.

Бағдарлама оны басқа көрсеткіштермен (мысалы, жалпы катодтармен), әртүрлі сымдармен есептегішке оңай бейімдеуге болатындай етіп жасалған. баспа схемасыт.б. пайдалану кезінде бағдарламаны аздап түзету қажет болады кварц резонаторыкөрсетілгеннен 1 МГц артық жиілікке.

Көз кернеуі 15 В болғанда, жалпы сымға қатысты микроконтроллер панелінің 12 және 13 түйреуіштеріндегі кернеуді өлшеңіз (10-шы істікше). Біріншісі 4...4,5 В диапазонында, ал екіншісі 3,5 В жоғары, бірақ біріншіден аз болуы керек. Әрі қарай, көз кернеуі біртіндеп төмендейді. Ол 9 ... 10 В дейін төмендеген кезде 12 және 13 түйреуіштердегі кернеу мәндерінің айырмашылығы нөлге тең болуы керек, содан кейін белгіні өзгерту керек.

Енді бағдарламаланған микроконтроллерді панельге орнатуға, трансформаторды қосуға және оған желілік кернеуді қолдануға болады. 1,5...2 секундтан кейін SB1 түймесін басу керек. Есептегіш индикатор 0 санын көрсетеді. Егер индикаторда ештеңе көрсетілмесе, микроконтроллердің AIN0.AIN1 кірістеріндегі кернеу мәндерін қайтадан тексеріңіз. Біріншісі екіншісінен үлкен болуы керек.

Есептегіш сәтті іске қосылғанда, фототранзисторларды ИК сәулелеріне мөлдір емес пластинамен кезек-кезек көлеңкелеу арқылы санаудың дұрыстығын тексеру ғана қалады. Үшін үлкен контрастИндикаторларды қызыл органикалық шыны сүзгімен жауып қойған жөн.

Бүгін біз көбірек мүмкіндіктерді пайдалануға тырысамыз қарапайым микроконтроллер ATtiny2313және оған символдық қосу СКД дисплей, құрамында 16 таңбадан тұратын екі жол.

Біз дисплейді қосамыз стандартты түрде 4-биттік жол.

Алдымен, әрине, микроконтроллерден бастайық, өйткені біз алдыңғы сабақтардағы дисплеймен жақсы таныспыз.

Контроллердің деректер кестесін ашайық ATtiny2313және оның түйреуіштерін көрейік

Біз мұны көреміз бұл контроллерістердің екі түрі бар, бірақ ол менің қолыма DIP ісінде түскендіктен, біз істің осы нақты нұсқасын қарастырамыз және негізінен олар сыртқы түрінен басқаша ерекшеленбейді, өйткені аяқтардың саны бірдей - 20-да.

ATMega8 контроллерінің 28 аяғымен салыстырғанда 20 аяқ болғандықтан, біз онымен бұрыннан жұмыс істеп келеміз және жұмыс істеуді жалғастырамыз, сәйкесінше, мүмкіндіктер де аз болады.

Негізінде, 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 аяқтарын қолданамыз, яғни олар Atmega8 қосылымымен салыстырғанда 1 ұпайға жылжиды, сондықтан біз файлдағы бір нәрсені түзетеміз. lcd.cфункцияда жарты байт жіберу

PORTD&=0б 1 0000 111; // DB4-DB7 кірістеріндегі ақпаратты өшіріңіз, қалғанын жалғыз қалдырыңыз

Бірақ бұл бәрі емес. Біз бұрын жіберілген деректерді 4-ке жылжыттық, бірақ енді жоғарыда көрсетілген өзгерістерге байланысты оны тек 3-ке ауыстыруға тура келеді. Сондықтан дәл сол функцияда біз бірінші жолды да түзетеміз.

в<<=3 ;

Барлық өзгерістер осы. Келісіңіз, олар соншалықты керемет емес! Бұған біз әрқашан әмбебап кодты жазуға тырысатынымыз және макрос алмастыруларды қолданатынымыз арқылы қол жеткізіледі. Егер біз бұған бір уақытта уақыт жұмсамағанымызда, кітапханамыздың барлық дерлік функцияларындағы кодты түзетуге тура келетін еді.

Негізгі модульде D портының инициализациясына қол тигізбейміз, 12-сабақтағыдай барлық модуль шығыс күйіне өтсін.

Жобаны жинап көрейік және алдымен Proteus-те нәтижені көрейік, өйткені мен оған жоба жасадым, ол Atmel Studio жобасымен қоса мұрағатта болады.

Барлығы біз үшін тамаша жұмыс істейді! Осылайша бір контроллер үшін жобаны екіншісіне жылдам қайта жасауға болады.

Proteus өте жақсы, бірақ нақты мәліметтерді қарау әрқашан жақсы. Бүкіл схема нан тақтасында жиналды, өйткені мен бұл контроллерге жөндеу тақтасын жасамадым немесе жинамадым. Біз бағдарламашыны стандартты қосқыш арқылы қосамыз

Міне, бүкіл диаграмма

Мұнда бәрі стандартты. RESET үшін тартылатын резистор және т.б.

Енді, avrdude-де контроллерді жыпылықтамас бұрын, контроллерді таңдап, оның флэш жадын оқу керек

Содан кейін САҚТАНДЫРУЛАР қойындысына өтіп, сақтандырғыштарды дұрыс орнатыңыз. Бізде кварц резонаторы болмағандықтан, сақтандырғыштарды осылай орнатамыз




Жоғарғы