Naredi sam sheme na attiny2313. Gumb povežemo z mikrokontrolerjem ATtiny2313, preprost program. Prevajanje in utripanje programa v MK

Kako sestaviti preprosto vezje, kako povezati programator z mikrokontrolerjem ATtiny2313, kako napisati najpreprostejši program v jeziku C in kako z našim programom flashati mikrokontroler ATtiny2313, vse to boste našli v tem članku.

Najprej potrebujemo programerja, programerjev je veliko, katerega programerja izbrati?
Obstajajo navadni programatorji, v katere morate vstaviti mikrokrmilnik, ga flashati, odstraniti mikrokrmilnik in ga nato vstaviti v našo ploščo, da vidite rezultat, in to zaporedje bo treba najprej izvesti več stokrat, ta možnost ni po mojem mnenju priročno.
Naš mikrokontroler ATtiny2313 podpira funkcijo ISP (In-System Programming) prek vrat SPI, ta primer uporabe za programiranje v vezju ISP mojem mnenju najugodnejši najhitrejši, saj. mikrokrmilnika iz naše plošče ni treba odstraniti po vsaki vdelani programski opremi, mikrokrmilnik lahko programirate več stokrat in takoj, ne da bi programator odklopili od računalnika in plošče, si oglejte rezultat po utripanju mikrokrmilnika, postopek odpravljanja napak programsko opremo radioamaterska naprava je opazno poenostavljena in čas, porabljen za to, se zmanjša.
ISP programator v vezju lahko naredite sami, na internetu jih je veliko enostavna vezja kako poteka prek LPT, vrata COM programer npr PonyProg Na internetu lahko najdete diagrame, kako to storiti.

Ta članek obravnava delo z vgrajenim programatorjem ISP za mikrokrmilnike AVR (PX-400) deluje preko COM vrat.
Če v računalniku nimate vrat COM, boste potrebovali tudi adapter z vrata USB na vrata COM, obstaja tudi veliko vrst takšnih adapterjev, priporočam adapter, s katerim sem delal: UCON-232S pretvorniška plošča USB v serijska vrata
Foto programer PX-400, adapter UCON-232S USB , Podatkovni list ATTiny2313

Oglejmo si podrobneje vse podrobnosti te sheme:
(Za vsak slučaj sem kupil vse podrobnosti, programator, adapter (od USB do COM vrat) na chipdip.ru)

1 - PBD-20 vtičnica za ploščo 2,54 mm 2x10 ravna- To sem naredil zaradi udobja, da bi bilo lažje preveriti signale iz nožic mikrokrmilnika, tega elementa ni bilo mogoče storiti.
2 - SCS-20 DIP plošča 20 nožic- plošča je prispajkana na ploščo, tako da je možno po potrebi zamenjati mikrokontroler v plošči,
ATtiny2313-20PU, DIP20, MCU, 5V, 1K-Flash, 12MHz- Mikrokrmilnik je vstavljen v DIP ploščo.
3 - Kvarčni resonator 4.000 MHz (okrnjen) HC-49S- Kvarčni resonator 4 MHz
4 - Keramični kondenzator K10-17B imp. 22pF NPO,5%,0805- Dva keramična kondenzatorja 22pF
5 - 78M05 (+5V, 0,5A) TO220- Stabilizator napetosti 5V, napaja stabilizirano napajanje mikrokontrolerja ne več kot + 5V, v tem primeru sem dobil 4,4V, to je povsem dovolj.
6 - NP-116 napajalni vtič 1,3x3,4x9,5 mm MP-331 (7-0026c)- Napajalni vtič prispajkan na starega polnilec od mobilni telefon DC 5,7 V/800 mA
7 - Vtičnica DS-213 na plošči- Kje je napajalna vtičnica za vtič NP-116, za enostavno priključitev na napajanje
8 - IDC-10MS (BH-10), ravni vtič- Vtič za priklop ISP programatorja v vezju
9 - Konstantni upor 0,25 W 150 Ohm- Trije upori 150 Ohm za pine MISO, SCK, MOSI
10 - Konstantni upor 0,25 W 47 Ohm- En 47 ohmski upor na pin RESET
11 - Taktni gumb h=5mm, TC-0103 (TS-A2PS-130)- Gumb PONASTAVITI, po pritisku na gumb se program v mikrokontrolerju zažene od začetka, gumba ni bilo mogoče izvesti.
12 - LED zelena d = 3 mm, 2,5 V, 2 mA - Deluje kot indikator, tega elementa ni bilo mogoče izvesti.
13 - Konstantni upor 0,25 W 110 Ohm- Upor za LED, tako da ima LED 2V, tega elementa ni bilo mogoče narediti
14 - Dve žici, povezani z LED, za preverjanje signalov iz nožic mikrokrmilnika, tega elementa ni bilo mogoče izvesti
15 - Dip-Rm tiskana maketa 100x100 mm

Koraka 3 in 4 delujeta kot enota, kot zunanji taktni generator, te korake lahko izpustite, če ne postavljate visokih zahtev glede natančnosti in stabilnosti notranjega RC oscilatorja, notranji RC oscilator ima napako približno 10 % in na natančnost lahko vpliva sprememba temperature.

Torej ste prenesli in namestili Atmel Studio:
Zaženemo Atmel Studio in napišite preprost program C za utripanje LED:
Kliknite: Nov projekt ... \ AVR GCC \ C \ C Izvedljiv projekt
Določite mapo, kamor želite shraniti projekt, in ime projekta, na primer Test1, in kliknite V redu.
Na seznamu izberite naš mikrokrmilnik ATtiny2313 in kliknite OK.
Izbrišemo vse, kar se je pojavilo v oknu in prilepimo našo programsko kodo, ki je spodaj:

#define F_CPU 4000000L // Določite frekvenco našega zunanjega kvarca 4 MHz
#vključi
#vključi
int main(void)
{
//Nastavi vse zatiče PORTB kot izhode
DDRB=0xFF;//Register smeri prenosa informacij (1-izhod, 0-vhod)
medtem ko (1)
{
//Register podatkov PORTB (uporablja se za prikaz informacij)
PORTB=0b00000001;//Napajanje 1 v vrata 12 MK PB0 - vklopite LED
PORTB=0b00000000;//Pošlji 0 na vrata 12 MK PB0 - izklopi LED
_delay_ms(1000);//Zakasnitev 1 s.
}
}

Gremo v meni Build\Configuration manager\Active solution configuration\
Izberite Sprostitev, pritisnite blizu
To smo naredili zato, da imamo mapo v projektu Sprostitev, o čemer bom razpravljal v nadaljevanju.

Kliknite F7, končano, naša aplikacija je sestavljena!
Za flash mikrokontrolerja ATtiny2313 potrebujemo samo eno datoteko s pripono HEX
Nahaja se v mapi našega projekta: ...
Upoštevajte datoteko Test1.hex nuno vzemi iz mape Sprostitev !
Ne zamenjujte, ker mapo razhroščevanje obstaja tudi datoteka Test1.hex, vendar ta datoteka vsebuje tudi informacije o odpravljanju napak in zaradi tega ne boste mogli bliskati te datoteke. običajno se zgodi velika številka in ne bo ustrezal pomnilniku MK.

Datoteka .hex je bila najdena, zdaj potrebujemo program za flashanje mikrokontrolerja ATtiny2313, takih programov je veliko, vendar bomo uporabili program: Avr-Osp II
Prenesi:

Programator priključimo na naše vezje, vezju moramo napajati!

Zaženemo program Avr-Osp II, podajte pot do datoteke v razdelku FLASH ... \Test1\Test1\Release\Test1.hex, nastavite potrditvena polja v programu in pritisnite gumb program to je to, mikrokrmilnik ATtiny2313 je zablestel!

Kakšna je prednost programatorjev v vezju ISP, lahko zdaj brez odklopa žic iz našega vezja spremenite program in, kot je opisano zgoraj, utripate mikrokrmilnik in takoj vidite rezultat.

Vprašanja in komentarje pustite na našem forumu

Arhitektura AVR RISC:

RISC (računalnik z zmanjšanim naborom ukazov). Ta arhitektura ima velik komplet navodil, ki se večinoma izvedejo v 1 strojnem ciklu. Iz tega sledi, da so v primerjavi s prejšnjimi mikrokontrolerji na osnovi CISC (na primer MCS51) mikrokrmilniki na osnovi RISC 12-krat hitrejši.

Ali če za osnovo vzamemo določeno stopnjo uspešnosti, potem nastopiti danem stanju Mikrokontrolerji, ki temeljijo na RISC (Attiny2313), potrebujejo 12-krat nižjo taktno frekvenco oscilatorja, kar ima za posledico znatno zmanjšanje porabe energije. Posledično postane mogoče oblikovati razne naprave na Attiny2313 z uporabo baterije.

Operativni pomnilnik (RAM) ter obstojni podatkovni in programski pomnilnik:

  • 2 kB samoprogramabilnega flash programskega pomnilnika, ki lahko zagotovi 10.000 ponovnih poskusov pisanja/brisanja.
  • 128 bajtov zapisljivega podatkovnega pomnilnika EEPROM, ki lahko zagotovi 100.000 ponovnih poskusov pisanja/brisanja.
  • 128 bajtov pomnilnika SRAM (pomnilnik samo za branje).
  • Možna je uporaba funkcije za zaščito podatkov programske kode in EEPROM-a.

Periferne lastnosti:

  1. mikrokrmilnik Attiny2313 opremljen z osemmestnim časovnikom-števcem z ločeno nastavljivim preddelilnikom z maksimalnim faktorjem 256.
  2. Obstaja tudi 16-bitni časovnik/števec z ločenim preddelilnikom, vezjem za zajemanje in primerjavo. Časovnik je nastavljen na uro - števec lahko oba iz zunanji vir signala, in iz notranjega.
  3. Dva kanala. Obstaja način delovanja hitre PWM modulacije in PWM s fazno korekcijo.
  4. Notranji analogni primerjalnik.
  5. Watchdog timer (programabilen) z notranjim oscilatorjem.
  6. Serijski univerzalni vmesnik (USI).

Posebne specifikacije Attiny2313:


  • Nedejaven- Način mirovanja. V tem primeru preneha delovati le centralni procesor. Nedejavnost ne vpliva na delovanje SPI, analognega primerjalnika, analogno-digitalnega pretvornika, časovnika/števca, nadzornega časovnika in sistema prekinitev. Pravzaprav ustavi le sinhronizacijo jedra procesor in bliskovni pomnilnik. Vrnitev v običajni način delovanja mikrokrmilnika Attiny2313 iz stanja mirovanja se zgodi z zunanjo ali notranjo prekinitvijo.
  • izklop- Najbolj varčen način, v katerem je mikrokrmilnik Attiny2313 dejansko izključen iz porabe energije. V tem stanju se taktni generator ustavi, vse zunanje naprave so izklopljene. Aktiven ostane le modul za obdelavo prekinitev iz zunanjega vira. Ko je zaznana prekinitev, mikrokrmilnik Attiny2313 prekine izklop in se vrne v normalno delovanje.
  • Ostani v pripravljenosti- mikrokrmilnik preklopi v ta način pripravljenosti porabe energije z ukazom SLEE. To je podobno izklopu, z edino razliko, da taktni generator še naprej deluje.

V/I vrata mikrokontrolerja Attiny2313:

Mikrokrmilnik je opremljen z 18 I/O zatiči, ki jih je mogoče programirati glede na potrebe, ki se pojavijo med načrtovanjem. določeno napravo. Medpomnilniki izhodnih podatkov vrat lahko prenesejo razmeroma veliko obremenitev.

  • Vrata A (PA2 - PA0) - 3 bita. Dvosmerna V/I vrata s programabilnimi vlečnimi upori.
  • Vrata B (PB7 - PB0) - 8 bitov. Dvosmerna V/I vrata s programabilnimi vlečnimi upori.
  • Vrata D (PD6 - PD0) - 7 bitov. Dvosmerna V/I vrata s programabilnimi vlečnimi upori.

Razpon napajalne napetosti:

Mikrokrmilnik uspešno deluje pri napajalni napetosti od 1,8 do 5,5 voltov. Poraba toka je odvisna od načina delovanja regulatorja:

Aktivni način:

  • 20 µA pri urni frekvenci 32 kHz in napajalni napetosti 1,8 voltov.
  • 300 µA pri taktu 1 MHz in napajalni napetosti 1,8 V.

Način varčevanja z energijo:

  • 0,5 μA pri napajalni napetosti 1,8 voltov.

(3,6 Mb, preneseno: 5 934)

Naprava tega članka deluje s karticami SD. Tema je sicer stara in že pošteno zabita, a o uporabi SD kartic se splača še enkrat pisati.
Na splošno imajo kartice SD (SDC, SD Card) veliko prednosti in so zelo enostavne in priročne za uporabo v majhnih vgrajenih projektih. K temu prispeva več dejavnikov:
- zelo preprost vmesnik za interakcijo s kartico (implementiran preko SPI);
- visoka hitrost (mikrokrmilnik lahko prenaša podatke s SD kartice s hitrostjo blizu 10 Mbps);
- nizka poraba energije (dobesedno nekaj miliamperov - nič več);
- majhna velikost;
- Razpoložljivost in nizki stroški.
Kartice SD praktično nimajo nobenih pomanjkljivosti (razen morda postopkov inicializacije :)).

1. Uvod.

Napravo, opisano v tem članku, sem poimenoval Govoreča naprava za kartico SD. Malce pretenciozno;), a že po imenu je jasno, da gre za govorečo napravo. Namenjen je ozvočevanju vaših projektov. Na kratko, deluje takole: na SD kartico se posnamejo oštevilčene zvočne datoteke, ki jih naprava predvaja na vaš ukaz. Področje uporabe je precej široko - opozorilni sistemi, igrače, roboti, pametna hiša itd. Mere naprave so precej skromne (lahko bi bila manjša, a sem namenoma izbral mikrokontroler ATtiny2313, ki je cenejši in lažje dostopen). Poskušal sem se osredotočiti na preprostost in maksimalno funkcionalnost.
Če pogledamo naprej, poglejmo, kaj naj bi se zgodilo na koncu:

Bi taka naprava delovala? Potem zbiramo!

2 Pomnilniška kartica.

Naprava uporablja pomnilniško kartico SD. O razlogih za izbiro sem že pisal, dodal bom le, da SD kartice postajajo skoraj standard za pomnilniške kartice za mobilne naprave. Tudi proizvajalci, ki so fanatično promovirali/promovirajo svoj tip spominskih kartic, počasi začenjajo uporabljati SD kartice. Razlog za tako priljubljenost je bila verjetno nizka cena teh kartic. Za amaterske naprave je SD kartica dejansko edina uporabna kartica, razlog pa je preprost vmesnik za delo z njo.

SD kartica je prehodila dolgo pot evolucije in ima več možnosti za implementacijo (MMC - kot različica SD kartice, SD ver1, SD ver2, SDHC, SDXC). Postopek komuniciranja s kartico je preprost in univerzalen za vse vrste kartic, zagon (inicializacija kartice) pa je precej dvoumen in zmeden proces z obrednim "žongliranjem" s kartico, pošiljanjem praznih "dummy" ukazov in drugimi nerazumljivimi. stvari (skratka ples s tamburaši obvezen:)). Sama specifikacija za SDC protokol precej obširno opisuje postopek inicializacije, je razumljivo, proizvajalcev kartic je veliko, vsak ima svojo strojno opremo, s svojimi značilnostmi ... O čem govorim? - Poskušal sem narediti postopek inicializacije čim bolj univerzalen, vendar bodite pripravljeni na dejstvo, da nekatere kartice ne bodo delovale. Zato, če gre kaj narobe z vašo napravo, poskusite z drugo pomnilniško kartico - to je lahko razlog.

IN to napravo Podprte so kartice SD do vključno 2 GB. Vse zgoraj (SDHC in SDXC) ni podprto.
Za napravo ni razlike v obliki faktorja kartice (SD, MiniSD ali MicroSD), vendar jo morate pravilno povezati, glede na pinout kartice.

3 Datotečni sistem.

Naprava deluje s karticami, ki imajo datotečni sistem FAT16. Ta sistem je najbolj primeren za naprave, kot je naša, saj je preprost in enostaven za implementacijo (FAT12 in FAT32 načeloma tudi nista zahtevna za implementacijo, vendar je to neizvedljivo, zaradi pomanjkanja kakršnih koli prednosti v primerjavi s FAT16) .

Za kartico ni posebnih zahtev glede formatiranja - formatirate jo lahko v kateri koli razpoložljivi napravi. Standardno Windows formatiranje zelo primeren za te namene.

Za pravilno delovanje naprave morajo zvočne datoteke na kartici SD izpolnjevati določene zahteve:
a) Format datoteke mora biti - nestisnjen WAV.
Parametri datoteke so naslednji:
- Bitrate - frekvenca vzorčenja (frekvenca) - 32000 Hz;
- Število kanalov (Channels) - 1 (mono);
- Dimenzija (velikost vzorca) - 8 bitov.
Možna je tudi takšna okrajšava - WAV PCM 8U

b) Datoteka mora biti poimenovana na poseben način. Da bi naprava vedela, katera datoteka je prva, druga, tretja itd. prvi znak imena datoteke mora biti velika črka latinske abecede (ostali del imena in končnica datoteke se ne upošteva).
Pravilna bi bila na primer naslednja imena datotek:
A_Lay_dogs.wav - prva skladba
B-To je druga skladba.wav - druga skladba
Z opozorilom! Napaka!.wav - tretja skladba

c) Za uporabo dodatnih funkcij naprave se lahko datoteke nahajajo v dveh mapah z imenom "1" in "2". Naprava ima stikalo za izbiro aktivne mape, to pomeni, da lahko isti ukaz za začetek predvajanja zažene skladbe iz mape "1" ali "2", odvisno od nivoja na preklopnem vhodu (neke vrste izbira zvočne sheme je zelo uporabna zadeva!). Če ena od map (ali obe) ne obstaja, se datoteke predvajajo iz korenskega imenika.

Skupaj z zvočnimi posnetki lahko shranite katere koli druge datoteke, pod pogojem, da ne povzročajo konfliktov s svojimi imeni (bolje jih postavite v ločen imenik, potem vam ne bo treba paziti, kako so tam poimenovani).

d) Zaradi majhne količine SRAM-a v ATtiny2313 ni mogoče ustvariti medpomnilnika za predhodno branje podatkov, zato so podatki iz datoteke neposredno izhodni za predvajanje. V skladu s tem ni možnosti (ni dovolj časa) za iskanje fragmentov datoteke v tabeli FAT. Z drugimi besedami, datoteke, zapisane na kartico, ne smejo biti fragmentirane.

Pravzaprav to ni velika težava, saj nobena operacijski sistem vedno poskuša zapisati datoteko kot celoto in dokler imate prostor na zemljevidu, nobena dejanja z datotekami (brisanje, kopiranje, preimenovanje) ne bodo vplivala na njihovo celovitost. Če imate zelo majhen zemljevid ali ste do konca napolnili velik zemljevid, jih preprosto kopirajte v HDD računalniku, formatirajte kartico in vrnite datoteke nazaj.

4 Shema. Tiskano vezje.

Shema naprave je čim preprostejša. Pravzaprav razen samega mikrokontrolerja in kartice SD v njem ni ničesar. Zase sem naredil tesnilo za komponente SMD, saj je načrtovana uporaba te naprave na mestu, omejenem po velikosti. Če dimenzije za vas niso kritične, lahko vezje sestavite na testni plošči v različici DIP. V primeru makete vam bo sestavljanje naprave vzelo največ 15 minut. Dovoljena napajalna napetost za kartico SD je od 2,7 do 3,6 voltov. V tem intervalu tudi mikrokrmilnik deluje normalno, zato ni potrebe po uporabi ustreznih komponent. Preveril sem delovanje celotne naprave in z napajanjem 5 voltov - vse je delovalo v redu, vendar tega ne priporočam na trajna osnova, saj se lahko različne kartice različno odzovejo na prenapetost. Kot nosilec kartice za microSD sem uporabil adapter, prispajan neposredno na njegove kontakte. Če potrebujete manjše dimenzije, je bolje uporabiti pravo držalo za kartico microSD.

Za flash mikrokontrolerja se uporablja isti konektor kot za SD kartico, zato morate razmisliti, kako priključiti programator nanj (namenoma sem naredil adapter).

Ko je plošča spajkana, lahko utripate mikrokrmilnik.

Majhna galerija končane naprave:




Majhen odtenek v shemi.
Ko je kartica SD vstavljena v nosilec kartice (kartica je priključena na vir napajanja), se ustvari tokovni udar in s tem padec napetosti v tokokrogu (zdi se, da se v tem trenutku na kartici polnijo znatne zmogljivosti ). Zmanjšanje je tako pomembno, da se mikrokrmilnik ponastavi. To uporabljam za začetek postopka inicializacije kartice (namestitev kartice znova zažene mikrokrmilnik in prva stvar, ki jo naredi vdelana programska oprema, je iskanje in inicializacija kartice). Če pri namestitvi kartice ne ponastavite MC (močan napajalnik ali velike gladilne kapacitivnosti), potem morate poskrbeti za gumb za ponastavitev v vezju za ročno ponastavitev mikrokrmilnika (to je, če nameravate "vroče" menjava kart).

5 Delovanje naprave.

Kot sem napisal zgoraj, je delo z napravo zelo preprosto: pravilno poimenovane skladbe kopirajte na kartico SD, kartico vstavite v nosilec kartice, naprava bo samodejno poiskala kartico, zasvetila bo zelena LED - to je to, naprava je pripravljen za predvajanje skladb. Sedaj morate le izbrati - začeti skladbo za predvajanje, na način, ki vam najbolj ustreza.

5.1 Gumbi naprave, njihovo delovanje.

Napravo sem poskušal narediti čim bolj funkcionalno, zato je za preklop načinov uporabljenih veliko mikrokrmilniških nog (zaradi tega naprava izgleda kot jež :)). Če ne potrebujete nobene funkcije - pustite nogo "viseti" v "zraku".
Dejanje stikala:
- "Monster" - omogoča upočasnitev (2-krat) predvajanja skladbe - ustvarjanje učinka nizkega glasu. Stikalo deluje "on the fly" - hitrost se spreminja ob preklopu;
- "Helij" - pospeši predvajanje skladbe (za 1/3) - ustvarja učinek visokega glasu. Stikalo deluje "na mah";
- »Ponovi«, če je to stikalo zaprto na maso, se bo izbrana skladba predvajala neomejeno dolgo (dokler se stikalo ne odpre). To je lahko koristno na primer, če morate ustvariti določeno zvočno ozadje - zvok dežja, gorenje ognja, žuborenje potoka ...;
- Gumb »Izberi / Predvajaj«, ki začne predvajati skladbo (opis spodaj);
- “Izberi skladbo” - nastavitev številke predvajane skladbe (opis spodaj);
- “Dir1 / Dir2” - izbira zvočne sheme (opis spodaj).

5.2 Začnite predvajanje.

Obstajajo trije načini za začetek predvajanja določene skladbe:
- s pošiljanjem velike črke latinice preko UART - takoj se začne predvajanje datoteke, ki vsebuje to črko na začetku imena;
- če je številka datoteke izbrana z “Izberi skladbo” (binarna koda 0001=”A”, 0010=”B” itd. 1- noga je v kratkem stiku s tlemi, 0 - “visi” v “zraku”), potem bo gumb “Izberi / Predvajaj” začel predvajati ustrezno datoteko;
- če ni izbrano nič z "Izberi skladbo" (0000 - noge "visijo" v "zraku"), potem z določenim številom pritiskov na gumb "Izberi / predvajaj" zaženemo ustrezno skladbo (1-krat = "A", 2-krat "B" itd.).

5.3 Zvočne sheme.

Zelo uporabna funkcija je možnost izbire ene od dveh zvočnih shem. To pomeni, da stikalo “Dir1 / Dir2” izbere mapo na zemljevidu, iz katere bo skladba predvajana.

Obstaja veliko aplikacij: sporočila v ruščini in angleščini (poučne igrače), otroški in odrasli glasovi, zvoki tekoče vode in gorečega ognja, mačka / pes, dober in zlobni policist :), pomirjujoči / poživljajoči zvoki in kup drugih opcije.

Na primer, potrebujete svojo napravo, da lahko komunicira z moškimi in ženskimi glasovi. Izvaja se takole:
- ustvarite dva niza sporočil, v ženski in moški različici;
- oštevilčenje datotek za obe možnosti je enako. Ne pozabite, da naprava "vidi" samo prvo črko v imenu datoteke, tako da lahko naredite imena bolj razumljiva zase, na primer "C_Waiting for command_male.wav" in "C_Waiting for command_female.wav" sta povsem pravilna ;
- nabor moških sporočil se kopira v mapo "1", ženskih sporočil pa v mapo "2".
Zdaj bo isti ukaz, odvisno od stanja stikala »Dir1 / Dir2«, predvajal skladbe iz mape »male« ali »female«.

5.4 Prikaz delovanja naprave.

Ker ima tini2313 zelo malo nog in se skoraj vse uporabljajo za stikala, sem moral žrtvovati normalno indikacijo in namesto tega pritrditi nekaj NI običajnega. Za označevanje različnih načinov delovanja se uporablja samo ena noga mikrokontrolerja, na katero sta povezani dve LED diodi - rdeča in zelena (no, ali katera vam je najbolj všeč). Različni načini delovanja naprave so prikazani z določeno barvno kodo:
- rdeča LED utripa - ni kartice SD ali naprava ne podpira njene vrste;
- sveti rdeča LED - kartica SD je podprta in uspešno inicializirana, vendar kartica ni formatirana v FAT16;
- zelena LED sveti - SD kartica je bila uspešno inicializirana, zahtevana je bila najdena datotečni sistem in naprava je pripravljena za predvajanje skladbe - čaka na ukaz;
- zelena LED lučka utripa - naprava predvaja skladbo;
- sveti zelena, kratek čas sveti rdeča, spet sveti zelena - sledi ni mogoče najti;
- zelena lučka sveti, za kratek čas ugasne in spet zasveti zelena lučka - pritisnjena je tipka za izbiro skladbe.

5.5 Informacije o odpravljanju napak.

Da bi olajšal iskanje problematičnih področij (v primeru, da naprava ne želi delovati), sem podvojil vsako stopnjo inicializacije v programu s sporočili prek UART. Po vsakem uspešnem koraku se UART pošlje ustrezen znak:
- “S” - (Start) periferija mikrokontrolerja je normalno inicializirana;
- “C” - (Card Init) kartica SD je normalno inicializirana in podprta;
- “F” - (FAT Init) FAT sistem podprto;
- “1” - (No 1 Dir) nobena mapa “1” ne bo prebrana iz korenskega imenika;
- “2” - (No 2 Dir) nobena mapa “2” ne bo prebrana iz korenskega imenika;
- “R” - (Ready) naprava je popolnoma pripravljena - čaka na ukaz za začetek proge;
- Poleg tega se ob vsakem zagonu skladbe v UART pošlje velika črka imena skladbe.

6 skladb za ozvočenje vaših naprav.

6.1 Pretvarjanje skladb

Če v zgornji knjižnici ni bilo najdenega nič primernega, lahko potrebne skladbe dobite v omrežju (obstaja veliko posebnih mest za glasbenike in urejanje videa, kjer so že zbrane velike knjižnice zvokov), v namestitvah iger (pogosto zvoki igranja so razdeljena na skladbe in zložena v ločeno mapo). Prav tako lahko izrežete zvočne učinke iz filmov in glasbe. Najdene skladbe je treba pretvoriti v format, ki ga naprava podpira. Opozarjam vas, da mora biti format datoteke nestisnjen WAV. 32000 Hz, 1 kanal, 8 bitov (WAV PCM 8U)
Za pretvorbo v to obliko je primeren kateri koli urejevalnik glasbe ali če morate samo pretvoriti skladbo brez urejanja -

V številnih gospodinjskih aparatih in napravah za industrijsko avtomatizacijo relativno zadnjih let so nameščeni mehanski števci. To so izdelki na tekočem traku, zvitki žice v strojih za navijanje itd. V primeru okvare podobnega števca ni enostavno najti, zaradi pomanjkanja rezervnih delov pa ga ni mogoče popraviti. Avtor predlaga zamenjavo mehanskega števca z elektronskim. Elektronski števec, ki se razvija za zamenjavo mehanskega, se izkaže za preveč zapletenega, če je zgrajen na mikrovezjih nizke in srednje stopnje integracije (na primer serije K176, K561). še posebej, če je potreben obratni račun. In da bi shranili rezultat, ko je napajanje izklopljeno, je potrebno zagotoviti rezervno baterijo prehrana.

Lahko pa sestavite števec na samo enem čipu - univerzalnem programabilnem mikrokrmilniku, ki ima različne periferne naprave in lahko reši zelo širok spekter problemov. Številni mikrokrmilniki imajo posebno pomnilniško področje - EEPROM. Vanj zapisani podatki (tudi med izvajanjem programa), kot je trenutni rezultat štetja, se ohranijo tudi po izklopu napajanja.

Predlagani merilnik uporablja mikrokrmilnik Attiny2313 iz družine Almel AVR. Naprava izvaja obratno štetje, izhod rezultata s preklicem nepomembnih n

panj na štirimestnem LED indikatorju, ki shrani rezultat v EEPROM, ko je napajanje izklopljeno. Za pravočasno zaznavanje padca napajalne napetosti služi analogni primerjalnik, vgrajen v mikrokrmilnik. Števec si zapomni rezultat štetja ob izklopu in ga obnovi ob vklopu ter je podobno kot mehanski števec opremljen z gumbom za ponastavitev.

Shema števca je prikazana na sliki. Šest vrstic vrat B (РВ2-РВ7) in pet vrstic vrat D (PDO, PD1, PD4-PD6) se uporabljajo za organizacijo dinamične indikacije rezultata štetja na LED indikatorju HL1. Kolektorske obremenitve fototranzistorjev VT1 in VT2 so upori, vgrajeni v mikrokrmilnik in vključeni v programsko opremo, ki povezujejo ustrezne izhode mikrokrmilnika z njegovim napajalnim krogom.

Povečanje rezultata štetja N za eno se zgodi v trenutku prekinitve optične povezave med oddajno diodo VD1 in fototranzistorjem VT1, kar ustvarja naraščajočo razliko nivojev na vhodu INT0 mikrokontrolerja. V tem primeru mora biti nivo na vhodu INT1 nizek, to pomeni, da mora biti fototranzistor VT2 osvetljen z oddajno diodo VD2. V času naraščajočega roba na vhodu INT1, z nizko stopnjo na vhodu INT0, se bo rezultat zmanjšal za eno. Druge kombinacije nivojev in njihove razlike na vhodih INT0 in INT1 ne spremenijo rezultata štetja.

Ko je dosežena največja vrednost 9999, se štetje nadaljuje od nič. Če od ničelne vrednosti odštejemo eno, dobimo rezultat 9999. Če odštevanje ni potrebno, lahko iz števca izločimo oddajno diodo VD2 in fototranzistor VT2 ter priključimo vhod INT1 mikrokontrolerja na skupno žico. Račun se bo samo povečeval.

Kot že rečeno, analogni primerjalnik, vgrajen v mikrokrmilnik, služi kot detektor padca napetosti. Primerja nestabilizirano napetost na izhodu usmernika (diodni most VD3) s stabilizirano napetostjo na izhodu integriranega regulatorja DA1. Program ciklično preverja stanje primerjalnika. Po izklopu števca iz omrežja napetost na filtrirnem kondenzatorju usmernika C1 pade, stabilizirana napetost pa ostane nekaj časa nespremenjena. Upori R2-R4 so izbrani na naslednji način. da je stanje primerjalnika v tej situaciji obrnjeno. Ko to odkrije, ima program čas, da zapiše trenutni rezultat štetja v EEPROM mikrokontrolerja, še preden preneha delovati zaradi izklopa. Ob naslednjem vklopu bo program prebral številko, zapisano v EEPROM-u, in jo prikazal na indikatorju. Štetje se bo nadaljevalo od te vrednosti.

Zaradi omejenega števila pinov mikrokontrolerja se za priklop gumba SB1, ki ponastavi števec, uporablja pin 13, ki služi kot invertni analogni vhod primerjalnika (AIM) in hkrati - "digitalni" vhod PB1. Delilnik napetosti (upori R4, R5) tukaj nastavi raven, ki jo mikrokrmilnik zazna kot visoko logično Ko pritisnete gumb SB1, postane nizka. To ne bo vplivalo na stanje primerjalnika, saj je napetost na vhodu AIN0 še vedno višja kot na AIN1.

Ob pritisku na tipko SB1 program prikaže znak minus v vseh številkah indikatorja, po sprostitvi pa začne šteti od nič. Če je napajanje števca izklopljeno, medtem ko je gumb pritisnjen, trenutni rezultat ne bo zapisan v EEPROM in tam shranjena vrednost bo ostala enaka.

Program je zasnovan tako, da ga je enostavno prilagoditi merilniku z drugimi indikatorji (na primer s skupnimi katodami), z drugačnim ožičenjem tiskano vezje itd. Pri uporabi bo potreben tudi rahel popravek programa kvarčni resonator na frekvenco, ki se od navedene razlikuje za več kot 1 MHz.

Pri napetosti vira 15 V se napetost meri na nožicah 12 in 13 plošče mikrokrmilnika glede na skupno žico (pin 10). Prvi mora biti v območju 4 ... 4,5 V, drugi pa večji od 3,5 V, vendar manjši od prvega. Nato se napetost vira postopoma zmanjša. Ko pade na 9 ... 10 V, mora razlika v vrednostih napetosti na nožicah 12 in 13 postati nič in nato spremeniti znak.

Zdaj lahko v ploščo namestite programiran mikrokrmilnik, priključite transformator in nanj priključite omrežno napetost. Po 1,5 ... 2 s morate pritisniti gumb SB1. Indikator števca bo prikazal številko 0. Če se na indikatorju ne prikaže nič, znova preverite vrednosti napetosti na vhodih AIN0.AIN1 mikrokontrolerja. Prvi mora biti večji od drugega.

Ko se števec uspešno zažene, ostane še preveriti pravilnost štetja z izmeničnim senčenjem fototranzistorjev s ploščo, neprozorno za IR žarke. Za večji kontrast zaželeno je zapreti indikatorje s svetlobnim filtrom iz rdečega organskega stekla.

Danes poskušamo izkoristiti več preprost mikrokontroler ATtiny2313 in se z njim simbolično poveže LCD zaslon A vsebuje dve vrstici po 16 znakov.

Zaslon, ki ga bomo povezali na standarden način 4 bitni način.

Najprej začnimo seveda z mikrokontrolerjem, saj smo z zaslonom že dobro seznanjeni iz prejšnjih lekcij.

Odpri podatkovni list krmilnika ATtiny2313 in si oglejte njegov pinout

To vidimo dani krmilnik obstaja v dveh vrstah ohišij, a ker mi je v roke prišla v DIP ohišju, bomo obravnavali ravno to različico ohišja in načeloma se ne razlikujeta veliko, razen po videzu, saj je število nog enako - glede na 20.

Ker je nog 20 v primerjavi z 28 nogami krmilnika ATMega8, na katerih smo ves čas delali in jih še bomo, bo temu primerno tudi manj priložnosti.

Načeloma je bilo tukaj vse, kar je imel ATmega8, edino portov je manj. A ker je pred nami naloga, da ga poskusimo povezati preko vodila SPI z drugim krmilnikom, nas to ne potrka preveč.

Obstaja še nekaj drugih razlik, ki pa so majhne in jih bomo spoznali po potrebi.

Tukaj sestavimo takšno shemo (kliknite na sliko za povečavo)

Zaslon je priključen na pine priključka D. PD1 in PD2 sta povezana na krmilne vhode, ostali pa na pine prikazovalnega modula D4-D7.

Ustvarili bomo projekt z imenom TINY2313_LCD, vanj prenesli vse razen glavnega modula iz projekta za povezavo zaslona z Atmega8.

Seveda bo treba nekatere stvari predelati. Če želite to narediti, morate natančno preučiti, katera noga je povezana s čim. Vodilo E zaslona je povezano s PD2, vodilo RS pa s PD1, zato naredimo spremembe v datoteki lcd.h

#definiraje1PORTD|=0b0000 01 00 // nastavi vrstico E na 1

#definiraje0PORTD&=0b1111 10 11 // nastavi vrstico E na 0

#definirajrs1PORTD|=0b00000 01 0 // nastavi RS vrstico na 1 (podatki)

#definirajrs0PORTD&=0b11111 10 1 // nastavi vrstico RS na 0 (ukaz)

Kot lahko vidimo iz izbora v krepkem tisku, ni prišlo do tako drastičnih sprememb.

Zdaj pa vnosi informacij. Tukaj uporabljamo noge PD3-PD6, torej so premaknjene za 1 točko v primerjavi s povezavo na Atmega8, tako da bomo tudi v datoteki nekaj popravili lcd.c v funkciji pošlji polbajta

PORTD&=0b 1 0000 111; //izbrišemo podatke na vhodih DB4-DB7, ostalih se ne dotikamo

A to še ni vse. Prej smo prenašane podatke zamaknili za 4, sedaj pa jih bomo zaradi zgornjih sprememb morali zamakniti samo za 3. Zato bomo v isti funkciji popravili tudi čisto prvo vrstico

c<<=3 ;

To so vse spremembe. Strinjam se, niso tako super! To dosežemo tako, da vedno poskušamo pisati univerzalno kodo in uporabljamo natančne makro substitucije. Če ne bi porabili časa za to, bi morali popraviti kodo v skoraj vseh funkcijah naše knjižnice.

V glavnem modulu se ne dotikamo inicializacije vrat D, naj celota preide v izhodno stanje, kot v lekciji 12.

Poskusimo sestaviti projekt in najprej videti rezultat v proteusu, saj sem naredil tudi projekt zanj, ki bo tudi v priloženem arhivu s projektom za Atmel Studio

Pri nas vse deluje super! Evo, kako lahko, se izkaže, da hitro predelate projekt za en krmilnik pod drugim.

Proteus je zelo dober, vendar so pravi deli vedno prijetnejši na pogled. Celotno vezje je bilo sestavljeno na testni plošči, saj nisem naredil in nisem sestavil plošče za odpravljanje napak za ta krmilnik. Programator bomo povezali preko standardnega konektorja, kot je ta

Tukaj je celoten diagram

Tukaj je vse standardno. Pull-up upor za RESET itd.

Zdaj, preden utripamo krmilnik v avrdude, moramo izbrati krmilnik in prebrati njegov bliskovni pomnilnik

Nato pojdite na zavihke VAROVALKE in pravilno nastavite varovalke. Ker nimamo kvarčnega resonatorja, smo varovalke nastavili tako




Vrh