Barkács áramkörök az attiny2313-on. Csatlakoztatjuk a gombot az ATtiny2313 mikrokontrollerhez, egy egyszerű programhoz. A program összeállítása és firmware-e MK-ban

Hogyan állítsunk össze egy egyszerű áramkört, hogyan csatlakoztassunk programozót egy ATtiny2313 mikrokontrollerhez, hogyan írjunk a legegyszerűbb program C nyelven, és hogyan lehet programunkkal flashelni az ATtiny2313 mikrokontrollert, mindezt ebben a cikkben megtalálod.

Először is kell egy programozó, sokféle programozó létezik, melyik programozót válasszuk?
Vannak közönséges programozók, amelyekbe be kell helyezni egy mikrokontrollert, fel kell villantani, ki kell venni a mikrokontrollert, majd be kell helyezni a táblánkba, hogy lássuk az eredményt, és ezt a szekvenciát először több százszor kell elvégezni, ez az opció, az én véleménye szerint nem kényelmes.
A mi mikrokontrollerünk ATtiny2313 Támogatja az ISP (In-System Programming) funkciót az SPI porton keresztül, ez az áramkörön belüli programozási használati eset ISP szerintem a legkényelmesebb és leggyorsabb, mert... nem kell minden firmware-frissítés után eltávolítani a mikrokontrollert az alaplapunkról, több százszor programozhatja a mikrovezérlőt, és azonnal, anélkül, hogy a programozót le kell választani a számítógépről és az alaplapról, a mikrokontroller flashelése után láthatja az eredményt, a hibakeresési folyamatot szoftver az amatőr rádiókészülék felszerelése észrevehetően leegyszerűsödik, és csökken a rá fordított idő.
Csinálhatsz magad is egy in-circuit ISP programozót, sok ilyen van az interneten egyszerű áramkörök hogyan történik ez LPT-n keresztül, COM port, például egy programozó PonyProg Az interneten találsz diagramokat az elkészítéshez.

Ez a cikk a mikrokontrollerek áramköri ISP programozójával való együttműködést tárgyalja AVR (PX-400) COM porton keresztül működik.
Ha nincs COM port a számítógépen, akkor egy adapterre is szüksége lesz USB csatlakozó a COM-porthoz is sokféle ilyen adapter létezik, ajánlom az adaptert, amellyel dolgoztam: UCON-232S USB-soros port átalakító kártya
Fotó a programozóról PX-400, adapter UCON-232S USB , Adatlap ATTiny2313

Nézzük meg részletesebben a rendszer összes részletét:
(Minden esetre megvettem az összes alkatrészt, programozót, adaptert (USB-ról COM portra) a chipdip.ru oldalon)

1 - PBD-20 lap aljzat 2,54mm 2x10 egyenes- Ezt a kényelem kedvéért tettem, hogy megkönnyítsem a mikrokontroller érintkezőiből érkező jelek ellenőrzését, ezt a pontot nem lehetett megtenni.
2 - SCS-20 DIP panel 20 tűs- a panelt a táblához forrasztjuk, hogy szükség esetén lehessen cserélni a táblában lévő mikrokontrollert,
ATtiny2313-20PU, DIP20, MCU, 5V, 1K-Flash, 12MHz- A mikrokontrollert behelyezzük a DIP panelbe.
3 - Kvarckristály 4.000 MHz (csonka) HC-49S- Kvarckristály 4 MHz
4 - Kerámia kondenzátor K10-17B imp. 22pF NPO,5%,0805- Két 22pF-os kerámia kondenzátor
5 - 78M05 (+5V, 0,5A) TO220- Egy 5V-os feszültségstabilizátor +5V-nál nem nagyobb stabilizált teljesítménnyel látja el a mikrokontrollert, jelen esetben 4,4V-ot kaptam, ami elég.
6 - NP-116 tápcsatlakozó 1,3x3,4x9,5 mm MP-331 (7-0026c)- A tápcsatlakozó a régihez volt forrasztva töltő tól től mobiltelefon DC 5,7V/800mA
7 - DS-213 konnektor a fedélzeten- hol van az NP-116 dugó tápegysége az egyszerű tápcsatlakozás érdekében
8 - IDC-10MS (BH-10), egyenes csatlakozó- Dugó az áramkörön belüli ISP programozó csatlakoztatásához
9 - Állandó ellenállás 0,25W 150 Ohm- Három 150 ohmos ellenállás a MISO, SCK, MOSI érintkezőkön
10 - Állandó ellenállás 0,25W 47 Ohm- RESET tűnként egy 47 ohmos ellenállás
11 - Tapintható gomb h=5 mm, TC-0103 (TS-A2PS-130)- Gomb reset RESET, a gomb megnyomása után a mikrokontrollerben elölről indul a program, a gombot nem lehetett létrehozni.
12 - Zöld LED d=3mm, 2.5V, 2mA - Kijelző funkciót lát el, ezt a tételt nem lehetett megtenni.
13 - Állandó ellenállás 0,25 W 110 Ohm- Ellenállás a LED-hez, hogy legyen 2V a LED-en, ez a lépés elhagyható
14 - Két vezeték csatlakozik a LED-hez, a mikrokontroller érintkezőiből érkező jelek ellenőrzéséhez, ezt a lépést nem lehetett végrehajtani
15 - Dip-RM nyomott kenyérlap 100x100mm

3. és 4. pont Egyetlen egységként működik, mint egy külső órajelgenerátor, ezek a pontok kihagyhatók, ha nem támasztunk magas követelményeket a belső RC oszcillátor pontosságával és stabilitásával szemben, a belső RC oszcillátor hibája kb 10% és a pontosságot befolyásolhatja a hőmérsékletváltozás.

Tehát letöltötte és telepítette Atmel Stúdió :
Indítsuk el Atmel Stúdióés írj egy egyszerű programot C nyelven, villogva egy LED-et:
Kattintson: Új projekt... \ AVR GCC \ C \ C Végrehajtható projekt
Adja meg a mappát, ahová a projektet menteni szeretné, és adja meg a projekt nevét, például Teszt1, majd kattintson az OK gombra.
A listából válassza ki az ATtiny2313 mikrokontrollerünket, és kattintson az OK gombra.
Mindent törölünk, ami az ablakban megjelenik, és beillesztjük a programkódunkat alább:

#define F_CPU 4000000L //Adja meg a 4 MHz-es külső kvarcunk frekvenciáját
#beleértve
#beleértve
int main(üres)
{
//Az összes PORTB érintkező beállítása kimenetként
DDRB=0xFF;//Az információátvitel irányának regisztere (1 kimenet, 0 bemenet)
míg (1)
{
// PORTB adatregiszter (információk kiadására szolgál)
PORTB=0b00000001;//1-et táplálunk az MK PB0 12-es portjára - kapcsolja be a LED-et
PORTB=0b00000000;//Alkalmazzon 0-t az MK PB0 12-es portjára - kapcsolja ki a LED-et
_delay_ms(1000);//Késleltetés 1 mp.
}
}

Menjen a menübe Build\Configuration Manager\Active Solution configuration\
Választ Kiadás, nyomja meg Bezárás
Ezt azért tettük, hogy legyen egy mappánk a projektben Kiadás, amiről alább szólok.

Kattintson F7, kész, alkalmazásunk összeállt!
Az ATtiny2313 mikrokontroller firmware-ének flasheléséhez csak egy fájlra van szükségünk a kiterjesztéssel HEX
A projekt mappánkban található: ...
Kérjük, vegye figyelembe a fájlt Teszt1.hex csak vedd ki a mappából Kiadás !
Ne keverje össze, mert mappát Hibakeresés van egy fájl is Teszt1.hex, de ez a fájl még mindig tartalmazza hibakeresési információkés emiatt nem fog tudni flashelni ezzel a fájllal. általában megtörténik nagy méretűés nem fog beleférni az MK memóriájába.

Megtaláltuk a .hex fájlt, most kell egy program az ATtiny2313 mikrokontroller flasheléséhez, sok ilyen program van, de mi a programot fogjuk használni: Avr-Osp II
Letöltés:

Csatlakoztassuk a programozót az áramkörünkhöz, és ügyeljünk arra, hogy az áramkört tápláljuk!

Indítsa el a programot Avr-Osp II, adja meg a fájl elérési útját a FLASH részben... \Test1\Test1\Release\Test1.hex, jelölje be a jelölőnégyzeteket a programban, és nyomja meg a gombot Program ennyi, mikrokontroller Az ATtiny2313 fel van villantva!

Mi az előnye az in-circuit ISP programozóknak?Most anélkül, hogy a vezetékeket lecsatolnánk az áramkörünkről, változtatásokat hajthatunk végre a programban, és a fent leírtak szerint villogtatjuk a mikrokontrollert és azonnal látjuk az eredményt.

Kérjük, tegye fel kérdéseit és megjegyzéseit fórumunkon

AVR RISC architektúra:

RISC (Reduced Instruction Set Computer). Ez az architektúra rendelkezik nagy készlet utasítások, amelyek többsége 1 gépi ciklusban kerül végrehajtásra. Ebből következik, hogy a korábbi CISC architektúrán alapuló mikrokontrollerekhez (például MCS51) képest a RISC mikrokontrollerek 12-szer gyorsabbak.

Vagy ha egy bizonyos szintű teljesítményt veszünk alapul, akkor teljesíteni ezt az állapotot A RISC (Attiny2313) alapú mikrokontrollerek 12-szer kisebb órajel-frekvenciát igényelnek a generátortól, ami az energiafogyasztás jelentős csökkenéséhez vezet. Ebben a tekintetben lehetővé válik a tervezés különféle eszközök az Attiny2313-on, akkumulátort használva.

Operatív tárolóeszköz (RAM) és adatok és programok nem felejtő memóriája:

  • 2 KB önprogramozható Flash programmemória, amely 10 000 írási/törlési ismétlést tud biztosítani.
  • 128 bájt EEPROM írható adatmemória, amely 100 000 írási/törlési ismétlést biztosít.
  • 128 bájt SRAM memória (csak olvasható RAM).
  • Lehetőség van a funkció használatával a programkód és az EEPROM adatok védelmére.

Perifériás tulajdonságok:

  1. Mikrokontroller Attiny2313 nyolc bites időzítő számlálóval felszerelt, külön telepített előskálázóval, maximum 256 együtthatóval.
  2. Van egy tizenhat bites időzítő számláló is, külön előskálázóval, rögzítő és összehasonlító áramkörrel. Az időzítő órajelen van - a számláló változhat külső forrás jelet, és belsőről.
  3. Két csatorna. Létezik gyors PWM moduláció és fáziskorrekciós PWM üzemmód.
  4. Belső analóg komparátor.
  5. Watchdog időzítő (programozható) belső oszcillátorral.
  6. Soros univerzális interfész (USI).

Az Attiny2313 speciális technikai mutatói:


  • Tétlen— Készenléti üzemmód. Ebben az esetben csak a központi processzor áll le. Az üresjárat nem befolyásolja az SPI, analóg komparátor, A/D konverter, számláló időzítő, watchdog vagy megszakítási rendszer működését. Valójában csak a kernel szinkronizálását állítja le központi processzorés flash memória. Az Attiny2313 mikrokontroller készenléti üzemmódból külső vagy belső megszakítással visszatér normál működéséhez.
  • Kikapcsolás— A leggazdaságosabb üzemmód, amelyben az Attiny2313 mikrokontroller ténylegesen le van kapcsolva az energiafogyasztásról. Ebben az állapotban az óragenerátor leáll, és minden periféria kikapcsol. Csak a külső forrásból származó megszakítás feldolgozó modul marad aktív. Ha a rendszer megszakítást észlel, az Attiny2313 mikrokontroller kilép a kikapcsolásból, és visszatér a normál működéshez.
  • Készenlétben lévő– a mikrokontroller ebbe az energiafogyasztási készenléti üzemmódba kapcsol a SLEE paranccsal. Ez hasonló a leállításhoz, az egyetlen különbség az, hogy az óra tovább jár.

Az Attiny2313 mikrokontroller bemeneti-kimeneti portjai:

A mikrokontroller 18 I/O lábbal rendelkezik, amelyek tervezési igények alapján programozhatók konkrét eszköz. Ezen portok kimeneti pufferei viszonylag nagy terhelésnek is ellenállnak.

  • A port (PA2 - PA0) – 3 bit. Kétirányú I/O port programozható felhúzó ellenállásokkal.
  • B port (PB7 - PB0) – 8 bit. Kétirányú I/O port programozható felhúzó ellenállásokkal.
  • D port (PD6 - PD0) – 7 bit. Kétirányú I/O port programozható felhúzó ellenállásokkal.

Tápfeszültség tartomány:

A mikrokontroller sikeresen működik 1,8 és 5,5 V közötti tápfeszültséggel. Az áramfelvétel a vezérlő üzemmódjától függ:

Aktív mód:

  • 20 µA 32 kHz órajelnél és 1,8 V tápfeszültségnél.
  • 300 µA 1 MHz órajelnél és 1,8 V tápfeszültségnél.

Energiatakarékos üzemmód:

  • 0,5 µA 1,8 voltos tápfeszültség mellett.

(3,6 Mb, letöltve: 5 934)

A cikkben szereplő eszköz SD-kártyákkal működik. A téma régi és elég elcsépelt, de az SD kártyák használatáról érdemes még egyszer írni.
Általánosságban elmondható, hogy az SD-kártyáknak (SDC, SD-kártya) számos előnye van, és nagyon egyszerűek és kényelmesek a kis beágyazott projektekben. Ehhez számos tényező hozzájárul:
- nagyon egyszerű interfész a kártyával való interakcióhoz (SPI-n keresztül megvalósítva);
- nagy működési sebesség (a mikrokontroller képes SD kártyáról 10 Mbit/s-hoz közeli adatátvitelre);
- alacsony fogyasztás (szó szerint néhány milliamper - nem több);
- kis méretek;
- elérhetőség és alacsony költség.
Az SD-kártyáknak gyakorlatilag nincs hátránya (talán az inicializálási eljárást kivéve :)).

1. Bemutatkozás.

Az ebben a cikkben leírt eszközt SD-kártyás beszélőeszköznek hívtam. Kicsit tetszetős ;), de a névből egyértelműen kiderül, hogy ez egy beszélő eszköz. A projektek hangoztatására szolgál. Röviden a következőképpen működik: számozott hangfájlokat rögzítenek az SD-kártyára, amelyeket a készülék az Ön parancsára lejátszik. Az alkalmazási terület meglehetősen széles - figyelmeztető rendszerek, játékok, robotok, okos Ház stb. A készülék méretei meglehetősen szerények (lehetne kisebb is, de tudatosan az olcsóbb és könnyebben beszerezhető ATtiny2313 mikrokontrollerre esett a választásom). A fő hangsúlyt az egyszerűségre és a maximális funkcionalitásra próbáltam helyezni.
Ha előre tekintünk, lássuk, mi fog történni a végén:

Hasznos egy ilyen készülék? Akkor gyűjtsünk!

2 Memóriakártya.

A készülék SD memóriakártyát használ. A választás okairól már írtam, csak annyit teszek hozzá, hogy az SD kártyák szinte szabványos memóriakártyává válnak mobil eszközök. Lassan még azok a gyártók is elkezdenek SD kártyákat használni, akik fanatikusan népszerűsítették/támogatják a memóriakártyáikat. Az ilyen népszerűség oka valószínűleg ezeknek a kártyáknak az alacsony ára volt. Az amatőr készülékeknél tulajdonképpen az SD-kártya az egyetlen használatra alkalmas kártya, ennek oka a vele való munkavégzés egyszerű felülete.

Az SD-kártya hosszú utat tett meg az evolúcióban, és számos megvalósítási lehetőség kínálkozik (MMC - SD-kártya opcióként, SD ver1, SD ver2, SDHC, SDXC). A kártyával való kommunikáció folyamata egyszerű és univerzális minden típusú kártya esetében, de az üzembe helyezés (a kártya inicializálása) meglehetősen kétértelmű és zavaros folyamat, a kártya rituális „rángatásával”, üres „dummy” parancsok küldésével. és egyéb érthetetlen dolgok (egyszóval tamburával táncolni kell:)). Maga az SDC protokoll specifikációja elég részletesen leírja az inicializálási folyamatot, ami érthető, rengeteg kártyagyártó létezik, mindegyik saját hardverrel, saját jellemzőkkel... Mire gondolok? - Igyekeztem minél univerzálisabbá tenni az inicializálási eljárást, de készülj fel arra, hogy egyes kártyák nem fognak működni. Ezért, ha valami nem megy jól a készülékkel, próbáljon ki egy másik memóriakártyát – ez lehet az oka.

Ez a készülék legfeljebb 2 GB méretű SD-kártyákat támogat. Minden magasabb (SDHC és SDXC) nem támogatott.
Az eszköz szempontjából nem mindegy, hogy milyen formátumú a kártya (SD, MiniSD vagy MicroSD), de helyesen kell csatlakoztatni, a kártya kivezetésének megfelelően.

3 Fájlrendszer.

A készülék FAT16 fájlrendszerű kártyákat használ. Ez a rendszer ideális az olyan eszközökhöz, mint a miénk, mivel egyszerű és könnyen kivitelezhető (a FAT12 és FAT32 elvileg szintén nem bonyolult, de ez nem praktikus a FAT16-hoz képest előnyök hiánya miatt).

A kártya formázására nincs különösebb követelmény – bármilyen rendelkezésre álló eszközzel formázható. Alapértelmezett ablakok formázása nagyon alkalmas ezekre a célokra.

Az eszköz megfelelő működéséhez az SD-kártyán található hangfájloknak meg kell felelniük bizonyos követelményeknek:
a) A fájlformátumnak tömörítetlen WAV-nak kell lennie.
A fájl paraméterei a következők:
- Bitráta - mintavételi frekvencia (Frequency) - 32000 Hz;
- Csatornák száma (Csatornák) - 1 (mono);
- Mintaméret - 8 bit.
Egy másik lehetséges csökkentés a WAV PCM 8U

b) A fájlt speciális módon kell elnevezni. Annak érdekében, hogy az eszköz tudja, melyik fájl az első, második, harmadik stb. A fájlnév első karakterének a latin ábécé nagybetűjének kell lennie (a név többi részét, akárcsak a fájlkiterjesztést, figyelmen kívül kell hagyni).
Például a következő fájlnevek lennének helyesek:
A_Lai_dog.wav - első szám
B-Ez a második track.wav – a második szám
Figyelmeztetéssel! Hiba!.wav – harmadik szám

c) Az eszköz további funkcióinak használatához a fájlok két „1” és „2” nevű mappában helyezkedhetnek el. A készülék rendelkezik egy kapcsolóval az aktív mappa kiválasztásához, vagyis ugyanazzal a lejátszás indító paranccsal lehet lejátszani az „1” vagy „2” mappából származó számokat, a kapcsolási bemenet szintjétől függően (a hangséma egyfajta kiválasztása - nagyon hasznos dolog!) Ha az egyik mappa (vagy mindkettő) nem létezik, a fájlok a gyökérkönyvtárból kerülnek lejátszásra.

Bármilyen más fájlt is tárolhat a hangsávokkal együtt, feltéve, hogy nem okoznak ütközést a nevükkel (jobb, ha külön könyvtárba helyezi őket, akkor nem kell figyelnie, hogyan nevezik őket ott).

d) Az ATtiny2313 kis mennyiségű SRAM-ja miatt nem lehet puffert létrehozni az adatok előzetes olvasásához, így a fájlból származó adatok közvetlenül lejátszásra kerülnek. Ennek megfelelően nincs mód (nincs elég idő) fájltöredékek keresésére a FAT tábla segítségével. Más szóval, a kártyára írt fájlok nem lehetnek töredezettek.

Valójában ez nem nagy probléma, hiszen bármelyik operációs rendszer mindig egy egészként próbálja megírni a fájlt, és amíg van hely a kártyán, a fájlokkal végzett műveletek (törlés, másolás, átnevezés) nem befolyásolják azok integritását. Ha nagyon kicsi kártyája van, vagy ha egy nagy kártyát töltött meg a kapacitásig, akkor a fájlok sértetlenségének biztosítása érdekében egyszerűen másolja át őket a HDD számítógépre, formázza meg a kártyát, és szerezze vissza a fájlokat.

4 Séma. Nyomtatott áramkör.

Az eszközdiagram a lehető legegyszerűbb. Valójában magán a mikrokontrolleren és az SD kártyán kívül nincs benne semmi. Magamnak készítettem egy pecsétet az SMD alkatrészekhez, mivel ezt a készüléket korlátozott méretű helyen tervezem használni. Ha a méretek nem kritikusak az Ön számára, akkor az áramkört a DIP változatban egy kenyérsütőlapra szerelheti össze. Kenyérlemez esetén a készülék összeszerelése legfeljebb 15 percet vesz igénybe. Az SD-kártya megengedett tápfeszültsége 2,7 és 3,6 volt között van. Ebben az intervallumban a mikrokontroller is normálisan működik, így nincs szükség megfelelő komponensek használatára. Ellenőriztem a teljes eszköz működését és 5 voltos tápegységgel - minden rendben működött, de nem javaslom ezt állandó bázis, mivel a különböző kártyák eltérően reagálhatnak a túlfeszültségre. MicroSD kártyatartóként adaptert használtam, közvetlenül az érintkezőire forrasztva. Ha kisebb méretekre van szüksége, jobb, ha valódi kártyatartót használ a microSD-hez.

A mikrokontroller firmware-ének villogásához ugyanazt a csatlakozót használják, mint az SD-kártyához, ezért gondolkodnia kell, hogyan csatlakoztathatja a programozót (speciálisan adaptert készítettem).

A tábla forrasztása után villoghat a mikrokontroller.

Egy kis galéria a kész készülékről:




Egy kis árnyalat a sémával kapcsolatban.
Az SD-kártya kártyatartóba való beszerelésekor (a kártya áramforráshoz csatlakoztatásakor) áramlökés keletkezik, és ennek megfelelően feszültségesés az áramkörben (úgy tűnik, hogy a kártya jelentős kapacitásokat tölt fel). A lehívás olyan jelentős, hogy a mikrokontroller visszaáll. Ezzel elindítom a kártya inicializálási eljárását (a kártya telepítése újraindítja a mikrokontrollert, és a firmware először megkeresi és inicializálja a kártyát). Ha nem állítja vissza a mikrovezérlőt kártya (erőteljes tápegység vagy nagy simítókondenzátorok) telepítésekor, akkor gondoskodnia kell a reset gombról az áramkörben a mikrokontroller kézi alaphelyzetbe állításához (ez akkor van, ha „meleget” tervez kártyát váltani).

5 A készülék működése.

Ahogy fentebb is írtam, az eszközzel nagyon egyszerű a munka: a helyesen elnevezett sávokat másold az SD kártyára, helyezd be a kártyát a kártyatartóba, a készülék automatikusan megkeresi a kártyát, bekapcsolja a zöld LED-et - ez az, a készülék készen áll a számok lejátszására. Most már csak ki kell választania és el kell kezdenie a számot az Önnek legmegfelelőbb módon játszani.

5.1 A készülék gombjai és működésük.

Igyekeztem a lehető legfunkcionálisabbá tenni a készüléket, így sok mikrokontroller lábat használnak az üzemmód kapcsolókhoz (ettől a készülék egy sündisznóra hasonlít :)). Ha nincs szüksége semmilyen funkcióra, hagyja a lábát "lógni" a "levegőben".
Váltási művelet:
- „Monster” - lehetővé teszi, hogy lelassítsa (2-szer) a zeneszám lejátszását - halk hanghatást keltve. A kapcsoló „menet közben” működik - a sebesség váltáskor változik;
- "Hélium" - felgyorsítja a szám lejátszását (1/3-al) - magas hanghatást kelt. A kapcsoló menet közben működik;
- „Ismétlés”, ha ez a kapcsoló testzárlatos, a kiválasztott szám végtelenségig fog szólni (amíg a kapcsolót ki nem nyitják). Ez hasznos lehet például, ha egy bizonyos hanghátteret kell létrehoznia - eső hangja, égő tűz, patak zúgása...;
- „Select / Play” gomb, amely elindítja a szám lejátszását (leírás lent);
- „Select track” – a lejátszott műsorszám számának beállítása (leírás lent);
- „Dir1 / Dir2” - válasszon hangsémát (leírás lent).

5.2 Indítsa el a lejátszást.

Egy adott szám lejátszásának három módja van:
- az UART-on keresztül a latin ábécé nagybetűjének elküldésével azonnal megkezdődik a név elején ezt a betűt tartalmazó fájl lejátszása;
- ha a „Select track” funkciót használja, a fájlszám kerül kiválasztásra (bináris kód: 0001=”A”, 0010=”B” stb. 1 - a láb a földhöz van zárva, 0 - a „levegőben lóg”), majd a „Select / Play” gomb elindítja a megfelelő fájl lejátszását;
- ha a „Select track” (0000 - a lábak „lelógnak” a „levegőben”) funkcióval semmi sincs kiválasztva, akkor a „Select / Play” gomb bizonyos számú megnyomásával elindítjuk a megfelelő műsorszámot (1 alkalom = „A”, 2-szer = „B” stb.).

5.3 Hangsémák.

Nagyon hasznos funkció a két hangséma közül az egyik kiválasztása. Ez azt jelenti, hogy a „Dir1 / Dir2” kapcsoló kiválasztja azt a mappát a kártyán, amelyről a műsorszám lejátszásra kerül.

Rengeteg alkalmazás létezik: orosz és angol nyelvű üzenetek (oktatójátékok), gyerek és felnőtt hangok, folyó víz és égő tűz zajai, macska/kutya, jó és gonosz rendőr :), nyugtató/élénkítő hangok és egy csomó egyéb hasonló lehetőségeket.

Például szüksége van az eszközre ahhoz, hogy férfi és női hangon tudjon kommunikálni. A megvalósítás a következőképpen történik:
- hozzon létre két üzenetcsoportot, női és férfi változatban;
- mindkét opció fájlszámozása azonos. Ne felejtse el, hogy a készülék csak az első betűt „látja” a fájlnévben, így érthetőbbé teheti a neveket, például az „S_Waiting for command_male.wav” és „S_Waiting for command_female.wav” meglehetősen jó helyes;
- másolja a férfi üzeneteket az „1” mappába, a női üzeneteket pedig a „2” mappába.
Most, a „Dir1 / Dir2” kapcsoló állapotától függően, ugyanaz a parancs fogja lejátszani a „male” vagy „female” mappából származó számokat.

5.4 A készülék működésének jelzése.

Mivel a Teeny2313-nak nagyon kevés lába van, és szinte mindegyiket kapcsolóra használják, ezért fel kellett áldoznom egy normál jelzést, és cserébe valami NEM normálisat csatolni. A különböző működési módok jelzésére a mikrokontrollernek csak az egyik lábát használják, amelyhez két LED csatlakozik - piros és zöld (vagy amelyik tetszik). A készülék különböző üzemmódjait egy adott színkód jelzi:
- piros LED villog - nincs SD-kártya, vagy annak típusát nem támogatja a készülék;
- a piros LED világít - az SD-kártya támogatott és sikeresen inicializálva, de a kártya nincs FAT16-ban formázva;
- zöld LED világít - az SD kártya inicializálása sikeresen megtörtént, a kívánt kártya megtalálható fájlrendszerés a készülék készen áll a szám lejátszására - parancsra vár;
- zöld LED villog - a készülék egy számot játszik le;
- zöld világít, piros rövid ideig világít, zöld újra világít - zeneszám nem található;
- zöld világít, rövid időre kialszik, majd ismét zöldre vált - a számválasztó gombot megnyomja.

5.5 Hibakeresési információk.

A problémás területek könnyebb megtalálása érdekében (ha az eszköz nem akar működni) a programban minden inicializálási szakaszt megkettőztem üzenetekkel UART-on keresztül. Minden sikeres lépés után a megfelelő karakter elküldésre kerül az UART-nak:
- "S" - (Start) a mikrokontroller perifériái normál módon inicializálva vannak;
- "C" - (Card Init) Az SD-kártya normál módon inicializálva van, és támogatott;
- "F" - (FAT Init) FAT rendszer támogatott;
- "1" - (No 1 Dir) nincs mappa. Az "1" olvasás a gyökérkönyvtárból történik;
- "2" - (No 2 Dir) nincs mappa A "2" olvasás a gyökérkönyvtárból történik;
- "R" - (Kész) a készülék teljesen készen áll - várja a sáv indítására vonatkozó parancsot;
- Ezenkívül minden egyes sáv indításakor a sáv nevének nagybetűje továbbítódik az UART-hoz.

6 sáv az eszközök másolásához.

6.1 Sávok konvertálása

Ha a fenti könyvtárban nem talált megfelelőt, akkor a szükséges számokat beszerezheti az interneten (sok speciális oldal van zenészeknek és videószerkesztőknek, ahol már nagy hangkönyvtárakat gyűjtöttek össze), játéktelepítésekben ( gyakran a játékmenet hangjait sávokra osztják és külön mappába helyezik). Hangeffektusokat is kivághat filmekből és zenei kompozíciókból. A talált számokat az eszköz által támogatott formátumba kell konvertálni. Hadd emlékeztesselek arra, hogy a fájlformátumnak tömörítetlen WAV-nak kell lennie. 32000 Hz, 1 csatornás, 8 bites (WAV PCM 8U)
Bármely zeneszerkesztő alkalmas arra, hogy ebbe a formátumba konvertáljon, vagy ha csak egy számot kell konvertálnia szerkesztés nélkül -

Sok háztartási gép és ipari automatizálási eszköz, amely viszonylag közelmúltbeli gyártási évet gyártott, mechanikus számlálóval rendelkezik. Ezek szállítószalagon lévő termékek, tekercselőgépek huzalfordulatai stb. Meghibásodás esetén nem könnyű hasonló mérőt találni, és pótalkatrészek hiánya miatt nem is lehet javítani. A szerző azt javasolja, hogy a mechanikus számlálót elektronikusra cseréljék. A mechanikus helyettesítésére kifejlesztett elektronikus számláló túl bonyolultnak bizonyul, ha alacsony és közepes integrációs fokú mikroáramkörökre épül (például a K176, K561 sorozat). különösen, ha fordított számlára van szükség. És annak érdekében, hogy az eredményt a tápellátás kikapcsolásakor megmentse, biztosítani kell tartalék akkumulátor táplálás.

De számlálót csak egyetlen chipre építhet - egy univerzális programozható mikrokontrollerre, amely számos különféle elemet tartalmaz perifériákés nagyon sokféle probléma megoldására képes. Sok mikrokontroller rendelkezik egy speciális memóriaterülettel - EEPROM. A beleírt adatok (beleértve a programvégrehajtás során is), például az aktuális számlálási eredmény a kikapcsolás után is mentésre kerülnek.

A javasolt számláló az Almel AVR családjának Attiny2313 mikrokontrollerét használja. A készülék fordított számlálást valósít meg, az eredményt a jelentéktelen törlésével jeleníti meg

kaptár egy négyjegyű LED kijelzőn, amely az eredményt az EEPROM-ban tárolja, amikor a tápellátást kikapcsolják. A mikrokontrollerbe épített analóg komparátort használnak a tápfeszültség csökkenésének időben történő észlelésére. A számláló megjegyzi a számlálás eredményét az áramellátás kikapcsolásakor, visszaállítja azt bekapcsoláskor, és hasonlóan a mechanikus számlálóhoz, reset gombbal van ellátva.

A számláló áramkör az ábrán látható. A B port hat sora (РВ2-РВ7) és a D port öt sora (PDO, PD1, PD4-PD6) szolgál a számlálási eredmény dinamikus jelzésének megszervezésére a HL1 LED-jelzőn. A VT1 és VT2 fototranzisztorok kollektorterhelései a mikrokontrollerbe épített ellenállások, amelyeket olyan szoftver engedélyez, amely a mikrokontroller megfelelő érintkezőit a tápáramköréhez köti.

Az N számlálási eredmény eggyel növekszik a VD1 emittáló dióda és a VT1 fototranzisztor közötti optikai kapcsolat megszakadásakor, ami növekvő szintkülönbséget hoz létre a mikrokontroller INT0 bemenetén. Ebben az esetben az INT1 bemenet szintjének alacsonynak kell lennie, azaz a VT2 fototranzisztort a VD2 emittáló diódával kell megvilágítani. Abban a pillanatban, amikor az INT1 bemeneten emelkedik a differenciál, az INT0 bemeneten pedig alacsony szint lesz, az eredmény eggyel csökken. A szintek egyéb kombinációi és azok különbségei az INT0 és INT1 bemeneteken nem változtatják meg a számlálás eredményét.

A 9999-es maximális érték elérése után a számlálás nullától folytatódik. A nulla értékből egyet levonva 9999 az eredmény. Ha nincs szükség visszaszámlálásra, akkor a VD2 emittáló diódát és a VT2 fototranzisztort kizárhatja a számlálóból, és a mikrokontroller INT1 bemenetét a közös vezetékre csatlakoztathatja. A szám csak tovább fog növekedni.

Mint már említettük, a tápfeszültség csökkenésének érzékelője a mikrokontrollerbe épített analóg komparátor. Összehasonlítja az egyenirányító kimenetén lévő nem stabilizált feszültséget (VD3 diódahíd) a beépített DA1 stabilizátor kimenetén lévő stabilizált feszültséggel. A program ciklikusan ellenőrzi a komparátor állapotát. Miután a mérőt leválasztják a hálózatról, az egyenirányító szűrőkondenzátorának C1 feszültsége leesik, és a stabilizált feszültség egy ideig változatlan marad. Az R2-R4 ellenállások a következők szerint vannak kiválasztva. hogy a komparátor állapota ebben a helyzetben fordított. Ezt észlelve a program még azelőtt kiírja az aktuális számlálás eredményét a mikrokontroller EEPROM-jába, mielőtt az áramszünet miatt leállna. A következő bekapcsoláskor a program beolvassa az EERROM-ban írt számot és megjeleníti a jelzőn. A számolás ettől az értéktől folytatódik.

A mikrokontroller tűinek korlátozott száma miatt a számlálót nullázó SB1 gomb csatlakoztatásához a 13-as érintkezőt használták, amely a komparátor (AIM) invertáló analóg bemeneteként és egyúttal „digitális” bemeneteként is szolgál. PB1. A feszültségosztó (R4, R5 ellenállások) itt logikailag magasra állítja a mikrokontroller által érzékelt szintet, amely az SB1 gomb megnyomására alacsony lesz. Ez nem befolyásolja a komparátor állapotát, mivel az AIN0 bemenet feszültsége még mindig nagyobb, mint az AIN1.

Az SB1 gomb megnyomásakor a program az indikátor minden számjegyében mínuszjelet jelenít meg, majd elengedése után nullától kezdi a számolást. Ha a gomb lenyomása közben lekapcsolja a mérőműszert, az aktuális eredmény nem kerül az EEPROM-ba, és az ott tárolt érték változatlan marad.

A program úgy van megtervezve, hogy könnyen illeszthető más mutatókkal (például közös katódokkal), különböző vezetékekkel rendelkező mérőhöz nyomtatott áramkör stb. Használatkor a program enyhe korrekciójára lesz szükség kvarc rezonátor olyan frekvenciára, amely több mint 1 MHz-el eltér a megadott frekvenciától.

Ha a forrásfeszültség 15 V, mérje meg a feszültséget a mikrovezérlő panel 12. és 13. érintkezőjén a közös vezetékhez (10. érintkező) viszonyítva. Az elsőnek a 4...4,5 V tartományban kell lennie, a másodiknak pedig több, mint 3,5 V, de kisebb, mint az első. Ezután a forrás feszültsége fokozatosan csökken. Amikor 9 ... 10 V-ra csökken, a 12-es és 13-as érintkezőknél a feszültségértékek különbségének nullává kell válnia, majd előjelet kell váltania.

Most már telepítheti a programozott mikrokontrollert a panelbe, csatlakoztathatja a transzformátort és rákapcsolhatja a hálózati feszültséget. 1,5...2 mp után meg kell nyomni az SB1 gombot. A számláló kijelzőjén a 0 szám jelenik meg. Ha semmi nem jelenik meg a kijelzőn, ellenőrizze újra a feszültségértékeket a mikrokontroller AIN0.AIN1 bemenetein. Az elsőnek nagyobbnak kell lennie, mint a másodiknak.

Ha a számláló sikeresen elindult, már csak a számlálás helyességét kell ellenőrizni oly módon, hogy a fototranzisztorokat váltakozva árnyékoljuk egy IR-sugarak számára átláthatatlan lemezzel. Mert nagyobb kontraszt Az indikátorokat célszerű piros szerves üvegszűrővel letakarni.

Ma igyekszünk többet kihasználni egyszerű mikrokontroller ATtiny2313és kapcsoljunk hozzá egy szimbolikusat LCD kijelzö, amely két 16 karakteres sort tartalmaz.

Csatlakoztatjuk a kijelzőt szabványos módon 4 bites mód.

Először is kezdjük természetesen a mikrokontrollerrel, hiszen a kijelzőt már nagyon jól ismerjük az előző leckékből.

Nyissuk meg a vezérlő adatlapot ATtiny2313és lássuk a kivezetését

Ezt látjuk ezt a vezérlőt kétféle tokban létezik, de mivel egy DIP tokban került a kezembe, ezért a toknak ezt a változatát fogjuk figyelembe venni, és elvileg nem sokban térnek el egymástól, kivéve a megjelenést, hiszen a lábak száma a ugyanaz - 20-ban.

Mivel az ATMega8 vezérlő 28 lábához képest 20 láb van, amin mindvégig dolgoztunk és a továbbiakban is fogunk dolgozni, így ennek megfelelően a lehetőség is kevesebb lesz.

Elvileg itt van minden, ami az ATmega8-ban volt, csak az a baj, hogy kevesebb a porta köröm. De mivel az előttünk álló feladat az, hogy az SPI buszon keresztül próbáljuk meg összekapcsolni egy másik vezérlővel, ez nem nagyon nyomaszt bennünket.

Vannak más eltérések is, de ezek csekélyek, és szükség szerint megismerjük őket.

Állítsunk össze egy ilyen áramkört (a képre kattintva a kép nagyítható)

A kijelző a D port érintkezőihez csatlakozik. A PD1 és PD2 a vezérlő bemenetekhez, a többi pedig a D4-D7 kijelző modul érintkezőihez csatlakozik.

Hozzunk létre egy projektet TINY2313_LCD néven, vigyünk át bele mindent, kivéve a projekt fő modulját, amely a kijelzőt Atmega8-hoz köti.

Természetesen néhány dolgot át kell alakítani. Ehhez alaposan meg kell tanulmányoznia, hogy melyik láb melyikhez kapcsolódik. A kijelző E busza a PD2-re, az RS busz pedig a PD1-re csatlakozik, így módosítsuk a fájlt lcd.h

#definee1PORTD|=0b0000 01 00 // állítsa az E sort 1-re

#definee0PORTD&=0b1111 10 11 // állítsa az E sort 0-ra

#definers1PORTD|=0b00000 01 0 // az RS sort 1-re állítja (adatok)

#definers0PORTD&=0b11111 10 1 // az RS sort állítsa 0-ra (parancs)

Ahogy a válogatásból is láthatjuk kiemelten, nálunk nem történt ilyen drasztikus változás.

Most információbevitel. Itt a PD3-PD6 lábakat használjuk, azaz 1 ponttal eltolódnak az Atmega8-hoz képest, tehát valamit javítunk is a fájlban lcd.c funkcióban Sendhalfbyte

PORTD&=0b 1 0000 111; // törli az információkat a DB4-DB7 bemenetekről, a többit hagyja békén

De ez még nem minden. Korábban 4-gyel eltoltuk a továbbított adatokat, de most a fenti változtatások miatt csak 3-mal kell eltolni. Ezért ugyanabban a függvényben a legelső sort is javítjuk

c<<=3 ;

Ennyi a változás. Egyetértek, nem olyan nagyszerűek! Ezt úgy érjük el, hogy mindig igyekszünk univerzális kódot írni, és makróhelyettesítéseket alkalmazunk. Ha nem fordítottunk volna erre egyszerre időt, akkor könyvtárunk szinte minden funkciójában ki kellett volna javítanunk a kódot.

A fő modulban nem érintjük a D port inicializálását, hagyjuk, hogy az egész modul kimeneti állapotba kerüljön, mint a 12. leckében.

Próbáljuk meg összerakni a projektet, és először a Proteusban lássuk az eredményt, mivel én is készítettem hozzá egy projektet, ami szintén a mellékelt archívumban lesz az Atmel Studio projektjével

Nálunk minden remekül működik! Így készíthet gyorsan egy projektet az egyik vezérlőhöz a másikhoz.

A Proteus nagyon jó, de mindig jobb a valódi részleteket nézni. Az egész áramkört egy kenyérlapra szerelték össze, mivel ehhez a vezérlőhöz nem készítettem és nem állítottam össze hibakereső kártyát. A programozót egy ilyen szabványos csatlakozón keresztül csatlakoztatjuk

Itt a teljes diagram

Itt minden szabvány. Felhúzó ellenállás RESET-hez stb.

Most, mielőtt a vezérlőt avrdude-ban villogtatnánk, ki kell választanunk a vezérlőt és be kell olvasnunk a flash memóriáját

Ezután lépjen a BIZTOSÍTÉKOK fülre, és állítsa be megfelelően a biztosítékokat. Mivel nincs kvarc rezonátorunk, a biztosítékokat így szereljük be




Top