Tee-se-itse-suunnitelmat attiny2313:ssa. Yhdistämme painikkeen ATtiny2313-mikro-ohjaimeen, yksinkertaiseen ohjelmaan. Ohjelman kääntäminen ja vilkkuminen MK:ssa

Kuinka koota yksinkertainen piiri, kuinka liittää ohjelmoija ATtiny2313-mikrokontrolleriin, kuinka kirjoittaa yksinkertaisin ohjelma C-kielellä ja ATtiny2313-mikro-ohjaimen flash-toiminnolla ohjelmallamme, löydät kaiken tämän tästä artikkelista.

Ensinnäkin tarvitsemme ohjelmoijan, ohjelmoijia on monia erilaisia, mikä ohjelmoija valita?
On tavallisia ohjelmoijia, joissa sinun on asetettava mikro-ohjain, välähdyttävä se, poistettava mikro-ohjain ja asetettava se sitten taulullemme nähdäksesi tuloksen, ja tämä sekvenssi on tehtävä aluksi satoja kertoja, tämä vaihtoehto ei ole kätevä mielestäni.
Meidän mikro-ohjain ATtiny2313 tukee ISP (In-System Programming) -toimintoa SPI-portin kautta, tämä käyttötapaus piirin sisäiseen ohjelmointiin ISP mielestäni kätevin ja nopein, koska. mikro-ohjainta levyltämme ei tarvitse poistaa jokaisen laiteohjelmiston jälkeen, voit ohjelmoida mikro-ohjaimen satoja kertoja ja välittömästi irroittamatta ohjelmoijaa tietokoneesta ja levystä, katso tulos mikro-ohjaimen vilkkumisen jälkeen, virheenkorjausprosessi ohjelmisto radioamatöörilaite yksinkertaistuu huomattavasti ja siihen käytetty aika lyhenee.
Voit tehdä Internet-palveluntarjoajan piirin sisäisen ohjelmoijan itse, Internetissä on monia yksinkertaiset piirit miten se tehdään LPT:n kautta, COM-portti esim ohjelmoija PonyProg Internetistä löytyy kaavioita kuinka se tehdään.

Tässä artikkelissa tarkastellaan työskentelyä piirin sisäisen ISP-ohjelmoijan kanssa mikro-ohjaimille AVR (PX-400) se toimii COM-portin kautta.
Jos tietokoneessasi ei ole COM-porttia, tarvitset myös sovittimen USB-portti COM-porttiin, tällaisia ​​sovittimia on myös monia erilaisia, suosittelen sovitinta, jonka kanssa työskentelin: UCON-232S USB-sarjaporttimuunninkortti
Valokuva-ohjelmoija PX-400, sovitin UCON-232S USB , Tietolomake ATTiny2313

Katsotaanpa tarkemmin tämän järjestelmän kaikkia yksityiskohtia:
(Varmuuden vuoksi ostin kaikki yksityiskohdat, ohjelmoijan, sovittimen (USB:sta COM-porttiin) osoitteesta chipdip.ru)

1 - PBD-20-levyn kanta 2,54mm 2x10 suora- Tein tämän mukavuuden vuoksi, jotta olisi helpompi tarkistaa signaalit mikro-ohjaimen nastoista, tätä kohtaa ei voitu tehdä.
2 - SCS-20 DIP-paneeli 20 nastaa- paneeli juotetaan levyyn niin, että kortissa oleva mikroohjain voidaan tarvittaessa vaihtaa
ATtiny2313-20PU, DIP20, MCU, 5V, 1K-Flash, 12MHz- Mikro-ohjain on asetettu DIP-paneeliin.
3 - Kvartsiresonaattori 4.000 MHz (typistetty) HC-49S- Kvartsiresonaattori 4 MHz
4 - Keraaminen kondensaattori K10-17B imp. 22pF NPO, 5 %, 0805- Kaksi 22pF keraamista kondensaattoria
5 - 78M05 (+5V, 0,5A) TO220- Jännitteenvakain 5V, syöttää mikrokontrolleriin stabiloitua tehoa enintään + 5V, tässä tapauksessa sain 4,4V, tämä riittää.
6 - NP-116 virtapistoke 1,3 x 3,4 x 9,5 mm MP-331 (7-0026c)- Virtapistoke juotettu vanhaan laturi alkaen kännykkä DC 5,7V/800mA
7 - DS-213 pistorasia kortilla- Missä on pistorasia NP-116-pistokkeelle, jotta virtaliitäntä on helppoa
8 - IDC-10MS (BH-10), suora pistoke- Pistoke piirin sisäisen ISP-ohjelmoijan liittämiseen
9 - Vastusvakio 0,25W 150 Ohm- Kolme 150 ohmin vastusta MISO, SCK, MOSI nastoihin
10 - Vastusvakio 0,25W 47 Ohm- Yksi 47 ohmin vastus RESET-nastaa kohti
11 - Tact-painike h = 5 mm, TC-0103 (TS-A2PS-130)- Painike RESET, painikkeen painamisen jälkeen mikrokontrollerin ohjelma käynnistyy alusta, painiketta ei voitu tehdä.
12 - LED vihreä d = 3mm, 2.5V, 2mA - Toimii osoittimena, tätä kohtaa ei voitu tehdä.
13 - Vastusvakio 0,25W 110 Ohm- LEDin vastus, jotta LEDissä on 2V, tätä kohtaa ei voitu tehdä
14 - Kaksi johtoa kytkettynä LEDiin, jotta voidaan tarkistaa signaalit mikro-ohjaimen nastoista, tätä kohtaa ei voitu tehdä
15 - Dip-Rm painettu leipälauta 100x100mm

Vaiheet 3 ja 4 toimivat yksikkönä, ulkoisena kellogeneraattorina, nämä vaiheet voidaan jättää pois, jos et aseta suuria vaatimuksia sisäisen RC-oskillaattorin tarkkuudelle ja vakaudelle, sisäisen RC-oskillaattorin virhe on noin 10% ja lämpötilan muutos voi vaikuttaa tarkkuuteen.

Joten olet ladannut ja asentanut Atmel-studio:
Käynnistämme Atmel-studio ja kirjoita yksinkertainen C-ohjelma LEDin vilkkumiseksi:
Napsauta: Uusi projekti... \ AVR GCC \ C \ C Suoritettava projekti
Määritä kansio, johon projekti tallennetaan, ja projektin nimi, esimerkiksi Test1, ja napsauta OK.
Valitse luettelosta ATtiny2313-mikro-ohjain ja napsauta OK.
Poistamme kaiken ikkunassa näkyvän ja liitämme alla olevan ohjelmakoodimme:

#define F_CPU 4000000L // Määritä ulkoisen kvartsimme taajuus 4 MHz
#sisältää
#sisältää
int main(tyhjä)
{
//Aseta kaikki PORTB-nastat lähdöiksi
DDRB=0xFF;//Tiedonsiirron suuntarekisteri (1-lähtö, 0-tulo)
kun (1)
{
//Tietorekisteri PORTB (käytetään tietojen näyttämiseen)
PORTB=0b00000001;//Syötä 1 MK PB0:n porttiin 12 - kytke LED päälle
PORTB=0b00000000;//Lähetä 0 MK PB0:n porttiin 12 - sammuta LED
_delay_ms(1000);//Viive 1 s.
}
}

Menemme valikkoon Build\Configuration Manager\Active Solution Configuration\
Valita Vapauta, Lehdistö kiinni
Teimme tämän niin, että meillä on kansio projektissa Vapauta, josta keskustelen alla.

Klikkaus F7, valmis, sovelluksemme on koottu!
ATtiny2313-mikro-ohjaimen flash-muistiin tarvitaan vain yksi tiedosto, jonka pääte on HEX
Se sijaitsee projektikansiossamme: ...
Huomioi tiedosto Test1.hex nuno ota se kansiosta Vapauta !
Älä sekoita, koska kansio debug siellä on myös tiedosto Test1.hex, mutta tämä tiedosto sisältää myös virheenkorjaustiedot ja tämän vuoksi et voi flash-tiedostoa. se yleensä tapahtuu iso koko eikä mahdu MK:n muistiin.

.hex-tiedosto löytyi, nyt tarvitsemme ohjelman ATtiny2313-mikro-ohjaimen vilkkumiseen, tällaisia ​​ohjelmia on monia, mutta käytämme ohjelmaa: Avr-Osp II
Ladata:

Yhdistämme ohjelmoijan piiriimme, meidän on syötettävä virtaa piiriin!

Aloitamme ohjelman Avr-Osp II, määritä tiedoston polku FLASH-osiossa... \Testi1\Testi1\Release\Test1.hex, aseta ohjelman valintaruudut ja paina -painiketta ohjelmoida siinä se, mikro-ohjain ATtiny2313 välähti!

Mikä on ISP:n piirin sisäisten ohjelmoijien etu, nyt irrottamatta johtoja piiristämme, voit tehdä muutoksia ohjelmaan ja, kuten edellä on kuvattu, vilkkua mikro-ohjain ja nähdä heti tulos.

Jätä kysymyksiä ja kommentteja foorumillemme

AVR RISC -arkkitehtuuri:

RISC (Reduced Instruction Set Computer). Tällä arkkitehtuurilla on iso setti käskyt, joista suurin osa suoritetaan 1 konejaksossa. Tästä seuraa, että verrattuna aikaisempiin CISC-pohjaisiin mikro-ohjaimiin (esimerkiksi MCS51), RISC-pohjaiset mikro-ohjaimet ovat 12 kertaa nopeampia.

Tai jos otamme tietyn suoritustason perustana, niin suoriutua annettu ehto RISC-pohjaiset mikro-ohjaimet (Attiny2313) tarvitsevat 12 kertaa vähemmän oskillaattorin kellotaajuutta, mikä vähentää merkittävästi virrankulutusta. Tämän seurauksena on mahdollista suunnitella erilaisia ​​laitteita Attiny2313:ssa akkuvirralla.

Käyttömuisti (RAM) ja haihtumaton tieto- ja ohjelmamuisti:

  • 2 kt itseohjelmoitava flash-ohjelmamuisti, joka mahdollistaa 10 000 kirjoitus/tyhjennysyritystä.
  • 128 tavua kirjoitettavaa EEPROM-tietomuistia, joka mahdollistaa 100 000 kirjoitus/tyhjennysyritystä.
  • 128 tavua SRAM-muistia (vain lukumuisti).
  • Toiminnolla on mahdollista suojata ohjelmakoodin ja EEPROMin tiedot.

Oheislaitteet:

  1. mikro-ohjain Attiny2313 varustettu kahdeksannumeroisella ajastinlaskurilla ja erikseen asetettavalla esiskaalaimella, jonka enimmäiskerroin on 256.
  2. Siellä on myös 16-bittinen ajastin/laskuri erillisellä esiskaalaajalla, sieppaus- ja vertailupiirillä. Ajastin on kellotettu - laskuri voi sekä alkaen ulkoinen lähde signaalista ja sisäisestä.
  3. Kaksi kanavaa. On olemassa nopea PWM-modulaatio ja PWM vaihekorjauksella.
  4. Sisäinen analoginen komparaattori.
  5. Watchdog ajastin (ohjelmoitava) sisäisellä oskillaattorilla.
  6. Serial Universal Interface (USI).

Attiny2313:n erikoistiedot:


  • Tyhjäkäynti- Lepotila. Tässä tapauksessa vain keskusprosessori lopettaa toimintansa. Tyhjäkäynti ei vaikuta SPI:n, analogisen vertailijan, analogia-digitaalimuuntimen, ajastimen/laskurin, vahtikoiran ajastimen ja keskeytysjärjestelmän toimintaan. Itse asiassa se vain pysäyttää ytimen synkronoinnin prosessori ja flash-muisti. Palaaminen Attiny2313-mikro-ohjaimen normaaliin toimintatilaan lepotilasta tapahtuu ulkoisen tai sisäisen keskeytyksen avulla.
  • virta pois- Taloudellisin tila, jossa Attiny2313-mikro-ohjain todella sammutetaan virrankulutuksesta. Tässä tilassa kellogeneraattori pysähtyy, kaikki oheislaitteet sammuvat. Vain ulkoisesta lähteestä tuleva keskeytyksenkäsittelymoduuli pysyy aktiivisena. Kun keskeytys havaitaan, Attiny2313-mikro-ohjain poistuu virrankatkaisusta ja palaa normaaliin toimintaan.
  • Valmiina- mikro-ohjain siirtyy tähän virrankulutuksen valmiustilaan SLEE-komennolla. Tämä on samanlainen kuin sammuttaminen, sillä ainoa ero on, että kellogeneraattori jatkaa toimintaansa.

Attiny2313-mikro-ohjaimen I/O-portit:

Mikro-ohjain on varustettu 18 I/O-nastalla, jotka voidaan ohjelmoida suunnittelun aikana esiin tulevien tarpeiden mukaan tietty laite. Porttien lähtötietopuskurit kestävät suhteellisen suuren kuormituksen.

  • Portti A (PA2 - PA0) - 3 bittiä. Kaksisuuntainen I/O-portti ohjelmoitavilla vetovastuksilla.
  • Portti B (PB7 - PB0) - 8 bittiä. Kaksisuuntainen I/O-portti ohjelmoitavilla vetovastuksilla.
  • Portti D (PD6 - PD0) - 7 bittiä. Kaksisuuntainen I/O-portti ohjelmoitavilla vetovastuksilla.

Syöttöjännitealue:

Mikro-ohjain toimii onnistuneesti 1,8 - 5,5 voltin syöttöjännitteellä. Virrankulutus riippuu säätimen toimintatavasta:

Aktiivinen tila:

  • 20 µA kellotaajuudella 32 kHz ja syöttöjännitteellä 1,8 volttia.
  • 300 µA 1 MHz kellolla ja 1,8 voltin syöttöjännitteellä.

Virransäästötila:

  • 0,5 μA 1,8 voltin syöttöjännitteellä.

(3,6 Mt, ladattu: 5 934)

Tämän artikkelin laite toimii SD-korttien kanssa. Aihe on vanha ja melko hakkeroitu, mutta SD-korttien käytöstä kannattaa kirjoittaa uudestaan.
Yleisesti ottaen SD-korteilla (SDC, SD Card) on monia etuja, ja niitä on erittäin helppo ja kätevä käyttää pienissä upotetuissa projekteissa. Useat tekijät vaikuttavat tähän:
- erittäin yksinkertainen käyttöliittymä vuorovaikutukseen kortin kanssa (toteutettu SPI:n kautta);
- suuri nopeus (mikro-ohjain pystyy siirtämään tietoja SD-kortilta nopeudella, joka on lähellä 10 Mbps);
- alhainen virrankulutus (kirjaimellisesti pari milliampeeria - ei enempää);
- pieni koko;
- Saatavuus ja alhaiset kustannukset.
SD-korteilla ei käytännössä ole haittoja (paitsi ehkä niiden alustusmenettelyt :)).

1. Esittely.

Nimesin tässä artikkelissa kuvatun laitteen SD-kortin puhelaitteeksi. Hieman vaatimatonta ;), mutta nimestä selviää, että kyseessä on puhuva laite. Se on tarkoitettu projektiesi esittämiseen. Lyhyesti sanottuna se toimii seuraavasti: numeroidut äänitiedostot tallennetaan SD-kortille, jonka laite toistaa käskystäsi. Käyttöalue on melko laaja - varoitusjärjestelmät, lelut, robotit, älykäs talo jne. Laitteen mitat ovat melko vaatimattomat (se voisi olla pienempi, mutta valitsin tietoisesti ATtiny2313-mikro-ohjaimen, joka on halvempi ja helpompi saada). Yritin keskittyä yksinkertaisuuteen ja maksimaaliseen toimivuuteen.
Katsotaan eteenpäin, katsotaan mitä lopulta tapahtuu:

Toimiiko tällainen laite? Sitten kerätään!

2 Muistikortti.

Laite käyttää SD-muistikorttia. Kirjoitin jo valinnan syistä, lisään vain, että SD-korteista on tulossa melkein standardi muistikorteille mobiililaitteet. Jopa valmistajat, jotka ovat fanaattisesti mainostaneet/edistäneet omia muistikorttityyppejä, alkavat pikkuhiljaa käyttää SD-kortteja. Syynä suosioon oli luultavasti näiden korttien alhainen hinta. Amatöörilaitteille SD-kortti on itse asiassa ainoa käyttökelpoinen kortti, ja syynä on yksinkertainen käyttöliittymä sen kanssa työskentelemiseen.

SD-kortti on kehittynyt pitkän matkan ja siinä on useita vaihtoehtoja sen toteuttamiseen (MMC - SD-kortin muunnelmana, SD ver1, SD ver2, SDHC, SDXC). Kortin kanssa kommunikointimenettely on yksinkertainen ja universaali kaikentyyppisille korteille, mutta käynnistäminen (kortin alustus) on melko moniselitteinen ja hämmentävä prosessi, johon kuuluu rituaalista kortin "jongleerausta", tyhjien "dummy"-komentojen lähettämistä ja muuta käsittämätöntä. asioita (lyhyesti sanottuna vaaditaan tanssiminen tamburiinien kanssa:)). SDC-protokollan spesifikaatio itsessään kuvaa alustusprosessia melko laajasti, se on ymmärrettävää, korttivalmistajia on paljon, jokaisella on oma laitteistonsa, omilla ominaisuuksillaan ... Mistä minä puhun? - Yritin tehdä alustusmenettelystä mahdollisimman yleismaailmallisen, mutta varaudu siihen, että jotkut kortit eivät toimi. Siksi, jos jokin menee pieleen laitteessasi, kokeile toista muistikorttia - tämä voi olla syy.

SISÄÄN Tämä laite SD-kortteja jopa 2 Gt asti tuetaan. Mitään yllä olevaa (SDHC ja SDXC) ei tueta.
Laitteelle ei ole eroa siinä, missä muodossa kortti on (SD, MiniSD tai MicroSD), mutta se on kytkettävä oikein kortin liittimen mukaan.

3 Tiedostojärjestelmä.

Laite toimii korteilla, joissa on FAT16-tiedostojärjestelmä. Tämä järjestelmä sopii parhaiten meidän kaltaisille laitteille, koska se on yksinkertainen ja helppo toteuttaa (FAT12 ja FAT32 periaatteessa eivät myöskään ole vaikeita toteuttaa, mutta tämä on epäkäytännöllistä, koska sillä ei ole etuja FAT16:een verrattuna) .

Kortille ei ole erityisiä muotoiluvaatimuksia - se voidaan alustaa millä tahansa saatavilla olevalla laitteella. Vakio Windowsin muotoilu ihan sopiva näihin tarkoituksiin.

Jotta laite toimisi oikein, SD-kortilla olevien äänitiedostojen on täytettävä tietyt vaatimukset:
a) Tiedostomuodon on oltava - pakkaamaton WAV.
Tiedoston parametrit ovat seuraavat:
- Bittinopeus - näytteenottotaajuus (Frequency) - 32000 Hz;
- Kanavien lukumäärä (Channels) - 1 (mono);
- Mitta (näytteen koko) - 8 bittiä.
Tällainen lyhenne on myös mahdollinen - WAV PCM 8U

b) Tiedosto on nimettävä erityisellä tavalla. Jotta laite tietää, mikä tiedosto on ensimmäinen, toinen, kolmas jne. tiedostonimen ensimmäisen merkin on oltava latinalaisten aakkosten iso kirjain (muut nimi ja tiedostopääte jätetään huomiotta).
Esimerkiksi seuraavat tiedostojen nimet olisivat oikein:
A_Lay_dogs.wav - ensimmäinen kappale
B-Tämä on toinen track.wav - toinen kappale
Varoituksen kanssa! Error!.wav - kolmas kappale

c) Laitteen lisäominaisuuksien käyttämiseksi tiedostot voivat sijaita kahdessa kansiossa nimeltä "1" ja "2". Laitteessa on kytkin aktiivisen kansion valitsemiseksi, eli sama toiston aloituskomento voi aloittaa kappaleita kansiosta "1" tai "2", riippuen kytkentätulon tasosta (eräänlainen äänimallin valinta on erittäin hyödyllinen asia!). Jos yhtä kansioista (tai molempia) ei ole, tiedostot toistetaan juurihakemistosta.

Voit tallentaa ääniraitojen ohella mitä tahansa muita tiedostoja, jos ne eivät aiheuta ristiriitoja nimiensä kanssa (on parempi laittaa ne erilliseen hakemistoon, jolloin sinun ei tarvitse kiinnittää huomiota siihen, miten ne on nimetty siellä).

d) Koska ATtiny2313:ssa on vähän SRAM-muistia, on mahdotonta luoda puskuria esilukudatalle, joten tiedoston tiedot lähetetään suoraan toistoa varten. Näin ollen ei ole mahdollista (ei tarpeeksi aikaa) etsiä tiedostoosia FAT-taulukosta. Toisin sanoen kortille kirjoitetut tiedostot eivät saa olla pirstoutuneita.

Itse asiassa tämä ei ole suuri ongelma, koska mikä tahansa käyttöjärjestelmä yrittää aina kirjoittaa tiedoston kokonaisena kappaleena ja niin kauan kuin sinulla on tilaa kartalla, tiedostoilla tehdyt toimet (poisto, kopiointi, uudelleennimeäminen) eivät vaikuta niiden eheyteen. Jos sinulla on hyvin pieni kartta tai olet täyttänyt suuren kartan kapasiteettiin, voit olla varma tiedostojen eheydestä kopioimalla ne HDD alusta kortti ja palauta tiedostot.

4 Kaava. Painettu piirilevy.

Laitteen kaavio on mahdollisimman yksinkertainen. Itse asiassa itse mikro-ohjaimen ja SD-kortin lisäksi siinä ei ole mitään. Itselleni tein sinetin SMD-komponentteihin, koska tätä laitetta on tarkoitus käyttää rajoitetun kokoisessa paikassa. Jos mitat eivät ole sinulle kriittisiä, voit koota piirin DIP-versiossa koepalevylle. Leipälaudan tapauksessa laitteen kokoaminen vie korkeintaan 15 minuuttia. SD-kortin sallittu syöttöjännite on 2,7 - 3,6 volttia. Tällä aikavälillä mikro-ohjain toimii myös normaalisti, joten vastaavia komponentteja ei tarvitse käyttää. Tarkistin koko laitteen toiminnan ja 5 voltin virtalähteellä - kaikki toimi hyvin, mutta en suosittele tämän tekemistä pysyvä perusta, koska eri kortit voivat reagoida eri tavalla ylijännitteeseen. MicroSD-kortin pidikkeenä käytin adapteria, joka juotettiin suoraan sen koskettimiin. Jos tarvitset pienempiä mittoja, on parempi käyttää oikeaa microSD-korttipidikettä.

Mikrokontrollerin vilkkumiseen käytetään samaa liitintä kuin SD-kortille, joten sinun on mietittävä, kuinka ohjelmoija liitetään siihen (tein sovittimen tarkoituksella).

Kun levy on juotettu, voit vilkkua mikro-ohjaimella.

Pieni galleria valmiista laitteesta:




Pieni vivahde kaavassa.
Kun SD-kortti asetetaan kortinpitimeen (kortti on kytketty virtalähteeseen), syntyy virtapiikki ja vastaavasti jännitehäviö piirissä (näyttää siltä, ​​että kortissa latautuu tällä hetkellä merkittäviä kapasiteettia ). Veto on niin merkittävä, että mikro-ohjain nollataan. Käytän tätä kortin alustusmenettelyn käynnistämiseen (kortin asentaminen käynnistää mikro-ohjaimen uudelleen ja laiteohjelmiston ensimmäinen asia on etsiä ja alustaa kortti). Jos et nollaa MC:tä korttia asentaessasi (tehokas virtalähde tai suuret tasoituskapasitanssit), sinun on huolehdittava piirissä olevasta nollauspainikkeesta mikro-ohjaimen manuaalista nollausta varten (tämä on jos aiot "kuuma" vaihtaa korttia).

5 Laitteen toiminta.

Kuten yllä kirjoitin, laitteen kanssa työskentely on hyvin yksinkertaista: kopioi oikein nimetyt kappaleet SD-kortille, aseta kortti korttikoteloon, laite löytää automaattisesti kortin, vihreä LED syttyy - siinä se, laite on valmis soittamaan kappaleita. Nyt sinun tarvitsee vain valita ja aloittaa raita toistoa varten sinulle parhaiten sopivalla tavalla.

5.1 Laitteen painikkeet, niiden toiminta.

Yritin tehdä laitteesta mahdollisimman toimivan, joten tilakytkimiin on käytetty paljon mikrokontrollerin jalkoja (tämä laite näyttää siililtä :)). Jos et tarvitse mitään toimintoa - jätä jalkasi "roikkumaan" "ilmaan".
Vaihtotoiminto:
- "Monster" - voit hidastaa (2 kertaa) kappaleen toistoa - luo matalan äänen vaikutuksen. Kytkin toimii "lennossa" - nopeus muuttuu kytkettäessä;
- "Helium" - nopeuttaa kappaleen toistoa (1/3) - luo korkean äänen vaikutuksen. Kytkin toimii "lennossa";
- "Repeat", jos tämä kytkin on kiinni maassa, valittua kappaletta toistetaan loputtomasti (kunnes kytkin avataan). Tästä voi olla hyötyä esimerkiksi, jos haluat luoda tietyn äänitaustan - sateen äänen, tulen palamisen, virran huminaa ...;
- "Select / Play" -painike, joka aloittaa kappaleen toiston (kuvaus alla);
- "Valitse raita" - toistettavan raidan numeron asettaminen (kuvaus alla);
- "Dir1 / Dir2" - äänimallin valinta (kuvaus alla).

5.2 Aloita toisto.

On kolme tapaa aloittaa tietyn raidan toisto:
- lähettämällä latinalaisten aakkosten iso kirjain UART:n kautta - tämän kirjaimen nimen alussa sisältävän tiedoston toisto alkaa välittömästi;
- jos tiedostonumero on valittu "Select track" -toiminnolla (binäärikoodi 0001="A", 0010="B" jne. 1- jalka on oikosulussa maahan, 0 - "roikkuu" "ilmassa"), sitten "Valitse / Toista" -painike käynnistää vastaavan tiedoston toistoa varten;
- jos mitään ei ole valittu "Select track" -toiminnolla (0000 - jalat "roikkuvat" "ilmassa"), aloitamme vastaavan kappaleen painamalla "Select / Play" -painiketta tietyn määrän kertoja (1 kerta = "A", 2 kertaa ="B" jne.).

5.3 Äänimallit.

Erittäin hyödyllinen ominaisuus on mahdollisuus valita toinen kahdesta äänijärjestelmästä. Tämä tarkoittaa, että “Dir1 / Dir2”-kytkin valitsee kartalta kansion, josta kappale toistetaan.

Sovelluksia on paljon: viestejä venäjäksi ja englanniksi (opetuslelut), lasten ja aikuisten äänet, virtaavan veden ja palavan tulen äänet, kissa/koira, hyvä ja paha poliisi :), rauhoittavat / virkistävät äänet ja joukko muita vaihtoehtoja.

Tarvitset esimerkiksi laitteesi voidakseen kommunikoida mies- ja naisäänien kanssa. Se toteutetaan näin:
- luoda kaksi viestisarjaa, vastaavasti, nais- ja miesversioissa;
- kummankin vaihtoehdon tiedostonumerointi on sama. Älä unohda, että laite "näkee" vain tiedostonimen ensimmäisen kirjaimen, joten voit tehdä nimistä itsellesi ymmärrettävämpiä, esimerkiksi "C_Waiting for command_male.wav" ja "C_Waiting for command_female.wav" ovat melko oikeita. ;
- joukko miesten viestejä kopioidaan kansioon "1" ja naisten viestit kansioon "2".
Nyt, "Dir1 / Dir2"-kytkimen tilasta riippuen, sama komento toistaa kappaleita "male"- tai "female"-kansiosta.

5.4 Laitteen toiminnan ilmaisu.

Koska tini2313:ssa on hyvin vähän jalkoja ja melkein kaikkia niitä käytetään kytkimiin, jouduin uhraamaan normaalin indikaattorin ja kiinnittämään sen sijaan jotain EI normaalia. Eri toimintatilojen ilmaisemiseksi käytetään vain mikro-ohjaimen yhtä jalkaa, johon on kytketty kaksi LED-valoa - punainen ja vihreä (no, tai kumpi haluat parhaiten). Laitteen eri toimintatilat näytetään tietyllä värikoodilla:
- punainen LED vilkkuu - SD-korttia ei ole tai laite ei tue sen tyyppiä;
- punainen LED palaa - SD-kortti on tuettu ja alustettu onnistuneesti, mutta korttia ei ole alustettu FAT16-muotoon;
- vihreä LED palaa - SD-kortti on alustettu onnistuneesti, tarvittava on löydetty tiedostojärjestelmä ja laite on valmis toistamaan kappaleen - odottaa komentoa;
- vihreä LED vilkkuu - laite toistaa kappaletta;
- vihreä palaa, punainen palaa hetken, vihreä palaa taas - raitaa ei löydy;
- vihreä valo palaa, se sammuu hetkeksi ja vihreä valo syttyy uudelleen - kappaleen valintanäppäintä painetaan.

5.5 Virheenkorjaustiedot.

Ongelma-alueiden etsimisen helpottamiseksi (jos laite ei halua toimia), kopioin ohjelman jokaisen alustusvaiheen UART-viestillä. Jokaisen onnistuneen vaiheen jälkeen sopiva merkki lähetetään UART:lle:
- "S" - (Käynnistä) mikro-ohjaimen oheislaite alustetaan normaalisti;
- "C" - (Card Init) SD-kortti alustettu normaalisti ja tuettu;
- "F" - (FAT Init) FAT-järjestelmä tuettu;
- "1" - (No 1 Dir) mitään kansiota "1" ei lueta juurihakemistosta;
- "2" - (No 2 Dir) mitään kansiota "2" ei lueta juurihakemistosta;
- "R" - (Valmis) laite on täysin valmis - se odottaa komentoa raidan aloittamiseksi;
- Lisäksi aina kun raita käynnistetään, raidan nimen iso kirjain lähetetään UART:lle.

6 raitaa laitteidesi äänittämiseen.

6.1 Raitojen muuntaminen

Jos yllä olevasta kirjastosta ei löytynyt mitään sopivaa, voit saada tarvittavat kappaleet verkosta (muusikoille ja videoeditointiin on monia erityisiä sivustoja, joille on jo koottu suuria äänikirjastoja), peliasennuksiin (usein ääniä pelattavuus on jaettu kappaleisiin ja taitettu erilliseen kansioon). Voit myös leikata äänitehosteita elokuvista ja musiikista. Löydetyt kappaleet on muunnettava laitteen tukemaan muotoon. Muistutan, että tiedostomuodon on oltava pakkaamaton WAV. 32000 Hz, 1-kanavainen, 8-bittinen (WAV PCM 8U)
Jos haluat muuntaa tähän muotoon, mikä tahansa musiikkieditori sopii tai jos haluat vain muuntaa kappaleen muokkaamatta sitä -

Moniin suhteellisen viime vuosien kodinkoneisiin ja teollisuusautomaatiolaitteisiin asennetaan mekaanisia mittareita. Ne ovat tuotteita kuljettimella, lankakeloja käämityskoneissa jne. Vian sattuessa ei ole helppoa löytää vastaavaa mittaria, ja sitä ei voida korjata varaosien puutteen vuoksi. Kirjoittaja ehdottaa mekaanisen laskurin korvaamista elektronisella. Mekaanisen tilalle kehitettävä elektroninen laskuri osoittautuu liian monimutkaiseksi, jos se on rakennettu matalan ja keskisuuren integrointiasteen mikropiireihin (esimerkiksi K176, K561-sarja). varsinkin jos käänteinen tili on tarpeen. Ja tuloksen tallentamiseksi, kun virta on katkaistu, on tarpeen tarjota vara-akku ravitsemus.

Mutta voit rakentaa laskurin vain yhdelle sirulle - yleiskäyttöiselle ohjelmoitavalle mikro-ohjaimelle, jossa on useita erilaisia oheislaitteet ja pystyy ratkaisemaan hyvin monenlaisia ​​ongelmia. Monilla mikro-ohjaimilla on erityinen muistialue - EEPROM. Siihen kirjoitetut tiedot (mukaan lukien ohjelman suorittamisen aikana), kuten nykyinen laskentatulos, säilyvät myös virran katkaisemisen jälkeen.

Ehdotettu mittari käyttää Attiny2313-mikro-ohjainta Almel AVR -perheestä. Laite toteuttaa käänteisen laskennan, tuloksen ulostulon mitätöimällä merkityksettömän n

Nelinumeroinen LED-merkkivalo tallentaa tuloksen EEPROM-muistiin, kun virta on katkaistu. Mikrokontrolleriin sisäänrakennettua analogista komparaattoria käytetään syöttöjännitteen laskun oikea-aikaiseen havaitsemiseen. Laskuri muistaa laskennan tuloksen, kun virta katkaistaan, palauttaa sen päälle kytkettäessä ja on mekaanisen laskurin tapaan varustettu nollauspainikkeella.

Laskurikaavio on esitetty kuvassa. Kuusi riviä porttia B (РВ2-РВ7) ja viittä riviä porttia D (PDO, PD1, PD4-PD6) käytetään järjestämään dynaamista laskentatuloksen näyttöä LED-merkkivalolla HL1. Valotransistorien VT1 ja VT2 kollektorikuormat ovat mikrokontrolleriin sisäänrakennettuja ja ohjelmistoon sisältyviä vastuksia, jotka yhdistävät mikro-ohjaimen vastaavat lähdöt sen virtapiiriin.

N laskentatuloksen kasvu yhdellä kertaa emittoivan diodin VD1 ja fototransistorin VT1 välisen optisen yhteyden katkeamishetkellä, mikä luo kasvavan tasoeron mikro-ohjaimen tuloon INT0. Tässä tapauksessa tulon INT1 tason on oltava matala, eli fototransistori VT2 on valaistava emittoivalla diodilla VD2. Nousevan reunan hetkellä INT1-tulossa ja matalalla tasolla INT0-tulossa tulos pienenee yhdellä. Muut tasojen yhdistelmät ja niiden erot tuloissa INT0 ja INT1 eivät muuta laskentatulosta.

Kun maksimiarvo 9999 saavutetaan, laskenta jatkuu nollasta. Nolla-arvosta yhden vähentäminen antaa tulokseksi 9999. Jos lähtölaskentaa ei tarvita, voit jättää laskurin pois emittoivan diodin VD2 ja fototransistorin VT2 ja kytkeä mikro-ohjaimen INT1-tulon yhteiseen johtoon. Tili vain kasvaa.

Kuten jo mainittiin, mikrokontrolleriin sisäänrakennettu analoginen komparaattori toimii jännitehäviön ilmaisimena. Se vertaa tasasuuntaajan lähdön (diodisilta VD3) epävakaa jännitettä integroidun säätimen DA1 lähdön stabiloituun jännitteeseen. Ohjelma tarkistaa syklisesti vertailijan tilan. Kun mittari on irrotettu verkosta, tasasuuntaajan C1 suodatinkondensaattorin jännite laskee ja stabiloitu jännite pysyy muuttumattomana jonkin aikaa. Vastukset R2-R4 valitaan seuraavasti. että vertailijan tila tässä tilanteessa on päinvastainen. Tämän havaittuaan ohjelma ehtii kirjoittaa virranlaskennan tuloksen mikro-ohjaimen EEPROM-muistiin jo ennen kuin se lakkaa toimimasta virran katkaisun vuoksi. Kun ohjelma käynnistetään seuraavan kerran, se lukee EEPROM-muistiin kirjoitetun numeron ja näyttää sen ilmaisimessa. Lasku jatkuu tästä arvosta.

Mikro-ohjaimen rajallisen nastamäärän vuoksi laskurin nollaavan SB1-painikkeen kytkemiseen käytetään nastaa 13, joka toimii vertailijan (AIM) invertoivana analogisena tulona ja samalla - "digitaalisena" tulo PB1. Jännitteenjakaja (vastukset R4, R5) asettaa tässä mikrokontrollerin havaitseman korkean loogisen tason Kun painat SB1-painiketta, se laskee alhaiseksi. Tämä ei vaikuta vertailijan tilaan, koska AIN0-tulon jännite on edelleen korkeampi kuin AIN1-tulossa.

Kun SB1-painiketta painetaan, ohjelma näyttää miinusmerkin kaikissa ilmaisimen numeroissa, ja vapauttamisen jälkeen se alkaa laskea nollasta. Jos laskurin virta katkaistaan, kun painiketta painetaan, nykyistä tulosta ei kirjoiteta EEPROMiin ja sinne tallennettu arvo pysyy samana.

Ohjelma on suunniteltu siten, että se on helppo mukauttaa mittariin muilla indikaattoreilla (esimerkiksi yleisillä katodeilla), eri johdotuksilla painettu piirilevy jne. Ohjelmaa on myös korjattava hieman käytön aikana kvartsi resonaattori taajuudelle, joka eroaa yli 1 MHz määritetystä taajuudesta.

Lähdejännitteellä 15 V jännite mitataan mikro-ohjainpaneelin nastoista 12 ja 13 suhteessa yhteiseen johtimeen (nasta 10). Ensimmäisen on oltava välillä 4 ... 4,5 V, ja toisen on oltava suurempi kuin 3,5 V, mutta pienempi kuin ensimmäinen. Sitten lähdejännitettä pienennetään vähitellen. Kun se putoaa 9...10 V:iin, nastojen 12 ja 13 jännitearvojen eron tulee muuttua nollaan ja vaihtaa sitten etumerkkiä.

Nyt voit asentaa ohjelmoidun mikro-ohjaimen paneeliin, kytkeä muuntajan ja kytkeä siihen verkkojännitteen. 1,5 ... 2 sekunnin kuluttua sinun on painettava SB1-painiketta. Laskurin ilmaisimessa näkyy numero 0. Jos ilmaisimessa ei näy mitään, tarkista mikro-ohjaimen tulojen AIN0.AIN1 jännitearvot uudelleen. Ensimmäisen on oltava suurempi kuin toinen.

Kun laskuri on käynnistetty onnistuneesti, on vielä tarkistettava laskurin oikeellisuus varjostamalla valotransistorit vuorotellen IR-säteitä läpäisemättömällä levyllä. varten suurempi kontrasti on toivottavaa sulkea indikaattorit valosuodattimella, joka on valmistettu punaisesta orgaanisesta lasista.

Tänään yritämme hyödyntää enemmän yksinkertainen mikro-ohjain ATtiny2313 ja liity siihen symbolisesti LCD-näyttö A sisältää kaksi 16 merkin riviä.

Näyttö, jonka yhdistämme tavallisella tavalla 4-bittinen tapa.

Ensin aloitetaan tietysti mikro-ohjaimesta, koska olemme jo hyvin tuttuja näyttöön aikaisemmista oppitunneista.

Avaa ohjaimen tietolehti ATtiny2313 ja nähdä sen kärki

Näemme sen annettu ohjain on olemassa kahdentyyppisissä tapauksissa, mutta koska se joutui käsiini DIP-kotelossa, harkitsemme tätä kotelon nimenomaista versiota, ja periaatteessa ne eivät eroa paljon, paitsi ulkonäöltään, koska jalkojen lukumäärä on sama - 20:n mukaan.

Koska jalkaa on 20 verrattuna ATMega8-ohjaimen 28 jalkaan, joiden parissa olemme työstäneet koko ajan ja jatkamme tekemistä, niin mahdollisuuksia on myös vähemmän.

Periaatteessa kaikki, mitä ATmega8:lla oli, oli täällä, ainoa asia on, että portteja on vähemmän. Mutta koska edessämme oleva tehtävä on yrittää yhdistää se SPI-väylän kautta toiseen ohjaimeen, tämä ei masenna meitä paljon.

Joitakin muita eroja on, mutta ne ovat pieniä ja tutustumme niihin tarvittaessa.

Kootaanpa tällainen kaavio tähän (klikkaa kuvaa suurentaaksesi kuvan)

Näyttö on kytketty portin D nastoihin. PD1 ja PD2 on kytketty ohjaustuloihin ja loput näyttömoduulin D4-D7 nastoihin.

Luomme projektin nimellä TINY2313_LCD, siirrämme siihen kaiken paitsi projektin päämoduulin näytön liittämiseksi Atmega8:aan.

Tietysti joitain asioita pitää tehdä uusiksi. Tätä varten sinun on tutkittava huolellisesti, mikä jalka on kytketty mihin. Näytön E-väylä on kytketty PD2:een ja RS-väylä PD1:een, joten tehdään muutoksia tiedostoon lcd.h

#määritelläe1PORTD|=0b0000 01 00 // aseta rivi E arvoon 1

#määritelläe0PORTD&=0b1111 10 11 // aseta rivin E arvoksi 0

#määritellärs1PORTD|=0b00000 01 0 // aseta RS-riville 1 (data)

#määritellärs0PORTD&=0b11111 10 1 // aseta RS-riville 0 (komento)

Kuten valikoimasta huomaamme lihavoituna, niin radikaaleja muutoksia ei ole tapahtunut.

Nyt tiedot syötetään. Tässä käytetään jalkoja PD3-PD6, eli niitä on siirretty 1 pisteellä verrattuna Atmega8:aan yhdistämiseen, joten korjaamme myös jotain tiedostossa lcd.c toiminnassa lähettää puolitavua

PORTD&=0b 1 0000 111; //poistamme tiedot tuloista DB4-DB7, emme koske muihin

Mutta siinä ei vielä kaikki. Ennen siirrettiin lähetettyä dataa 4:llä, ja nyt joudumme edellä olevien muutosten vuoksi siirtämään niitä vain kolmella. Siksi samassa funktiossa korjaamme myös aivan ensimmäisen rivin

c<<=3 ;

Siinä kaikki muutokset. Samaa mieltä, ne eivät ole niin mahtavia! Tämä saavutetaan sillä, että yritämme aina kirjoittaa universaalia koodia ja käyttää täsmälleen makrokorvauksia. Jos emme olisi käyttäneet aikaa tähän, meidän olisi korjattava koodi lähes kaikissa kirjastomme toiminnoissa.

Päämoduulissa emme kosketa portin D alustusta, vaan annamme koko päästä poistumistilaan, kuten oppitunnissa 12.

Kokeillaan koota projektia ja nähdään ensin tulos Proteuksessa, koska tein sille myös projektin, joka tulee olemaan myös liitteenä olevassa arkistossa Atmel Studion projektin kanssa

Meillä kaikki toimii loistavasti! Näin voit, osoittautuu, että projekti tehdään nopeasti uudelleen yhdelle ohjaimelle toisen alle.

Proteus on erittäin hyvä, mutta oikeita osia on aina miellyttävämpi katsella. Koko piiri koottiin leipälevylle, koska en tehnyt enkä kokonnut debug-korttia tälle ohjaimelle. Yhdistämme ohjelmoijan tällaisen vakioliittimen kautta

Tässä on koko kaavio

Täällä kaikki on vakiona. Vetovastus RESETille jne.

Nyt ennen ohjaimen vilkkumista avrdudessa meidän on valittava ohjain ja luettava sen flash-muisti

Siirry sitten SULAKKEET-välilehdille ja aseta sulakkeet oikein. Koska meillä ei ole kvartsiresonaattoria, asetamme sulakkeet tällä tavalla




Yläosa