“Dari pats” shēmas vietnē attiny2313. Mēs savienojam pogu ar ATtiny2313 mikrokontrolleru, vienkāršu programmu. Programmas kompilēšana un mirgošana MK

Kā salikt vienkāršu shēmu, kā savienot programmētāju ar ATtiny2313 mikrokontrolleru, kā rakstīt vienkāršākā programma C valodā un kā mirgot ATtiny2313 mikrokontrolleri ar mūsu programmu, to visu atradīsit šajā rakstā.

Pirmkārt, mums ir nepieciešams programmētājs, programmētāju ir daudz veidu, kuru programmētāju izvēlēties?
Ir parastie programmētāji, kuros jāievieto mikrokontrolleris, jāzibina tas, jānoņem mikrokontrolleris un pēc tam jāievieto mūsu platē, lai redzētu rezultātu, un šī secība sākumā būs jāveic simtiem reižu, šī opcija nav ērti, manuprāt.
Mūsu mikrokontrolleris ATtiny2313 atbalsta ISP (Sistēmas programmēšanas) funkciju, izmantojot SPI portu, šis lietošanas gadījums programmēšanai ķēdē ISP manuprāt ērtākais un ātrākais, jo. mikrokontrolleris no mūsu plates nav jāizņem pēc katras programmaparatūras, jūs varat programmēt mikrokontrolleri simtiem reižu un nekavējoties, neatvienojot programmētāju no datora un plates, redzēt rezultātu pēc mikrokontrollera mirgošanas, atkļūdošanas process programmatūra radioamatieru ierīce ir ievērojami vienkāršota, un tam tiek patērēts laiks.
ISP in-ķēdes programmētāju varat izveidot pats, internetā ir daudz vienkāršas shēmas kā tas tiek darīts, izmantojot LPT, COM ports piemēram, programmētājs PonyProg Internetā var atrast diagrammas, kā to izdarīt.

Šajā rakstā tiks apskatīts darbs ar mikrokontrolleru ISP programmētāju ķēdē AVR (PX-400) tas darbojas caur COM portu.
Ja jūsu datorā nav COM porta, jums būs nepieciešams arī adapteris ar USB ports uz COM portu, ir arī daudz šādu adapteru šķirņu, es iesaku adapteri, ar kuru es strādāju: UCON-232S USB uz seriālo portu pārveidotāja plate
Foto programmētājs PX-400, adapteris UCON-232S USB , Datu lapa ATTiny2313

Sīkāk apskatīsim visas šīs shēmas detaļas:
(Tikai gadījumā, es nopirku visas detaļas, programmētāju, adapteri (no USB uz COM portu) vietnē chipdip.ru)

1 - PBD-20 dēļa ligzda 2,54mm 2x10 taisna- Es to izdarīju ērtības labad, lai būtu vieglāk pārbaudīt signālus no mikrokontrollera tapām, šo vienumu nevarēja izdarīt.
2 - SCS-20 DIP panelis 20 tapas- panelis ir pielodēts pie plates, lai nepieciešamības gadījumā būtu iespējams nomainīt mikrokontrolleri plāksnē,
ATtiny2313-20PU, DIP20, MCU, 5V, 1K-Flash, 12MHz- Mikrokontrolleris ir ievietots DIP panelī.
3 - Kvarca rezonators 4.000 MHz (saīsināts) HC-49S- Kvarca rezonators 4 MHz
4 - Keramikas kondensators K10-17B imp. 22pF NPO,5%,0805- Divi 22pF keramiskie kondensatori
5 - 78M05 (+5V, 0,5A) TO220- Sprieguma stabilizators 5V, piegādā mikrokontrolleram stabilizētu strāvu ne vairāk kā + 5V, šajā gadījumā es saņēmu 4,4 V, tas ir pilnīgi pietiekami.
6 - NP-116 barošanas spraudnis 1,3 x 3,4 x 9,5 mm MP-331 (7-0026c)- Strāvas spraudnis pielodēts pie vecā lādētājs no Mobilais telefons DC 5,7V/800mA
7 - DS-213 barošanas ligzda uz tāfeles- Kur ir kontaktligzda NP-116 spraudnim, lai to varētu viegli pievienot
8 - IDC-10MS (BH-10), taisns spraudnis- Spraudnis ISP programmētāja pievienošanai ķēdē
9 - Rezistoru konstante 0,25W 150Omi- Trīs 150 omu rezistori MISO, SCK, MOSI tapām
10 - Rezistoru konstante 0,25W 47 Ohm- Viens 47 omu rezistors uz katru RESET tapu
11 - Tact poga h=5mm, TC-0103 (TS-A2PS-130)- Poga RESET, pēc pogas nospiešanas programma mikrokontrollerī sākas no sākuma, pogu nevarēja izdarīt.
12 - LED zaļš d = 3mm, 2.5V, 2mA - darbojas kā indikators, šo vienumu nevarēja izdarīt.
13 - Rezistoru konstante 0,25W 110Omi- LED rezistors, lai LED būtu 2V, šo vienumu nevarēja izdarīt
14 - divi vadi, kas savienoti ar LED, lai pārbaudītu signālus no mikrokontrollera tapām, šo vienumu nevarēja izdarīt
15 - Dip-Rm apdrukāts maizes dēlis 100x100mm

3. un 4. darbība darbojas kā vienība, kā ārējais pulksteņa ģenerators, šīs darbības var izlaist, ja neizvirziet augstas prasības iekšējā RC oscilatora precizitātei un stabilitātei, iekšējā RC oscilatora kļūda ir aptuveni 10% un precizitāti var ietekmēt temperatūras maiņa.

Tātad esat lejupielādējis un instalējis Atmel studija:
Mēs palaižam Atmel studija un uzrakstiet vienkāršu C programmu, lai mirgotu LED:
Noklikšķiniet: Jauns projekts... \ AVR GCC \ C \ C Izpildāmais projekts
Norādiet mapi, kurā saglabāt projektu, un projekta nosaukumu, piemēram, Test1, un noklikšķiniet uz Labi.
Sarakstā atlasiet mūsu mikrokontrolleri ATtiny2313 un noklikšķiniet uz Labi.
Mēs izdzēšam visu, kas parādījās logā, un ielīmējam mūsu programmas kodu, kas ir zemāk:

#define F_CPU 4000000L // Norādiet mūsu ārējā kvarca 4 MHz frekvenci
#iekļauts
#iekļauts
int galvenais (neesošs)
{
//Iestatiet visas PORTB tapas kā izejas
DDRB=0xFF;//Informācijas pārsūtīšanas virzienu reģistrs (1-izeja, 0-ieeja)
kamēr (1)
{
//Datu reģistrs PORTB (izmanto informācijas parādīšanai)
PORTB=0b00000001;//Pievadiet 1. pieslēgvietu MK PB0 12. portam — ieslēdziet LED.
PORTB=0b00000000;//Iesniedziet 0 MK PB0 12. portam - izslēdziet LED
_delay_ms(1000);//Aizkave 1 sek.
}
}

Mēs ejam uz izvēlni Būvējums\Konfigurācijas pārvaldnieks\Aktīvā risinājuma konfigurācija\
Izvēlieties Atbrīvot, nospiediet aizveriet
Mēs to darījām, lai projektā būtu mape Atbrīvot, ko es apspriedīšu tālāk.

Klikšķis F7, izdarīts, mūsu pieteikums ir apkopots!
Lai mirgotu mikrokontrolleri ATtiny2313, mums ir nepieciešams tikai viens fails ar paplašinājumu HEX
Tas atrodas mūsu projektu mapē: ...
Lūdzu, ņemiet vērā failu Test1.hex nuno paņem to no mapes Atbrīvot !
Nejauciet, jo mapi Atkļūdošana ir arī fails Test1.hex, bet šajā failā ir arī atkļūdošanas informācija un šī iemesla dēļ jūs nevarēsit flash šo failu. tas parasti notiek liels izmērs un MK atmiņā neiederēsies.

.hex fails tika atrasts, tagad mums ir nepieciešama programma ATtiny2313 mikrokontrollera mirgošanai, šādu programmu ir daudz, bet mēs izmantosim programmu: Avr-Osp II
Lejupielādēt:

Mēs savienojam programmētāju ar mūsu ķēdi, mums jāpiegādā strāva ķēdei!

Mēs sākam programmu Avr-Osp II, norādiet ceļu uz failu sadaļā FLASH ... \Test1\Test1\Release\Test1.hex, iestatiet programmā izvēles rūtiņas un nospiediet pogu programma tas arī viss, mikrokontrolleris ATtiny2313 mirgoja!

Kādas ir ISP in-ķēdes programmētāju priekšrocības, tagad, neatvienojot vadus no mūsu ķēdes, varat veikt izmaiņas programmā un, kā aprakstīts iepriekš, mirgot mikrokontrolleri un nekavējoties redzēt rezultātu.

Jautājumus un komentārus, lūdzu, atstājiet mūsu forumā

AVR RISC arhitektūra:

RISC (Reduced Instruction Set Computer). Šai arhitektūrai ir liels komplekts instrukcijas, no kurām lielākā daļa tiek izpildīta 1 mašīnas ciklā. No tā izriet, ka, salīdzinot ar iepriekšējiem CISC bāzes mikrokontrolleriem (piemēram, MCS51), RISC bāzes mikrokontrolleri ir 12 reizes ātrāki.

Vai arī, ja par pamatu ņemam noteiktu veiktspējas līmeni, tad uzstāties dots nosacījums Uz RISC balstītiem mikrokontrolleriem (Attiny2313) ir nepieciešama 12 reizes mazāka oscilatora pulksteņa frekvence, kā rezultātā ievērojami samazinās enerģijas patēriņš. Tā rezultātā kļūst iespējams projektēt dažādas ierīces Attiny2313, izmantojot akumulatora enerģiju.

Operatīvā atmiņa (RAM) un nemainīga datu un programmu atmiņa:

  • 2 kB pašprogrammējama zibatmiņas programma, kas var nodrošināt 10 000 ierakstīšanas/dzēšanas atkārtojumu.
  • 128 baiti EEPROM ierakstāmas datu atmiņas, kas var nodrošināt 100 000 ierakstīšanas/dzēšanas atkārtojumu.
  • 128 baiti SRAM atmiņa (tikai lasāmatmiņa).
  • Funkciju iespējams izmantot programmas koda un EEPROM datu aizsardzībai.

Perifērijas īpašības:

  1. mikrokontrolleris Attiny2313 aprīkots ar astoņu ciparu taimera skaitītāju ar atsevišķi iestatāmu priekšskalotāju ar maksimālo koeficientu 256.
  2. Ir arī 16 bitu taimeris/skaitītājs ar atsevišķu priekšskalotāju, uztveršanas un salīdzināšanas shēmu. Taimeris ir pulkstenis - skaitītājs var gan no ārējais avots signāls, un no iekšējā.
  3. Divi kanāli. Ir ātrās PWM modulācijas un PWM darbības režīms ar fāzes korekciju.
  4. Iekšējais analogais komparators.
  5. Watchdog taimeris (programmējams) ar iekšējo oscilatoru.
  6. Serial Universal Interface (USI).

Attiny2313 īpašās specifikācijas:


  • Dīkstāvē- Gaidīšanas režīms. Šajā gadījumā tikai centrālais procesors pārtrauc savu darbu. Dīkstāve neietekmē SPI, analogā salīdzinājuma, analogā-digitālā pārveidotāja, taimera/skaitītāja, sargsuņa taimera un pārtraukumu sistēmas darbību. Faktiski tas tikai aptur kodola sinhronizāciju Procesors un zibatmiņu. Atgriešanās normālā Attiny2313 mikrokontrollera darbības režīmā no dīkstāves režīma notiek ar ārēju vai iekšēju pārtraukumu.
  • izslēgt- Ekonomiskākais režīms, kurā Attiny2313 mikrokontrolleris faktiski tiek izslēgts no enerģijas patēriņa. Šajā stāvoklī pulksteņa ģenerators apstājas, visas perifērijas ierīces tiek izslēgtas. Aktīvs paliek tikai pārtraukumu apstrādes modulis no ārēja avota. Kad tiek atklāts pārtraukums, mikrokontrolleris Attiny2313 izslēdz izslēgšanu un atgriežas normālā darbībā.
  • Stāvēt- mikrokontrolleris ar komandu SLEE pārslēdzas uz šo enerģijas patēriņa gaidīšanas režīmu. Tas ir līdzīgi izslēgšanai, ar vienīgo atšķirību, ka pulksteņa ģenerators turpina darboties.

Mikrokontrollera Attiny2313 I/O porti:

Mikrokontrolleris ir apveltīts ar 18 I/O tapām, kuras var ieprogrammēt atbilstoši vajadzībām, kas rodas projektēšanas laikā konkrēta ierīce. Portu izejas datu buferi var izturēt salīdzinoši lielu slodzi.

  • Ports A (PA2 - PA0) - 3 biti. Divvirzienu I/O ports ar programmējamiem uzvilkšanas rezistoriem.
  • Ports B (PB7 - PB0) - 8 biti. Divvirzienu I/O ports ar programmējamiem uzvilkšanas rezistoriem.
  • Ports D (PD6 - PD0) - 7 biti. Divvirzienu I/O ports ar programmējamiem uzvilkšanas rezistoriem.

Barošanas sprieguma diapazons:

Mikrokontrolleris veiksmīgi darbojas ar barošanas spriegumu no 1,8 līdz 5,5 voltiem. Pašreizējais patēriņš ir atkarīgs no regulatora darbības režīma:

Aktīvais režīms:

  • 20 µA ar takts frekvenci 32 kHz un barošanas spriegumu 1,8 volti.
  • 300 µA pie 1 MHz takts frekvences un 1,8 voltu barošanas sprieguma.

Enerģijas taupīšanas režīms:

  • 0,5 μA pie 1,8 voltu barošanas sprieguma.

(3,6 Mb, lejupielādēts: 5 934)

Šī raksta ierīce darbojas ar SD kartēm. Tēma ir veca un diezgan sagrauta, bet par SD karšu izmantošanu ir vērts par to vēlreiz uzrakstīt.
Kopumā SD kartēm (SDC, SD Card) ir daudz priekšrocību, un tās ir ļoti viegli un ērti lietojamas mazos iegultos projektos. To veicina vairāki faktori:
- ļoti vienkāršs interfeiss mijiedarbībai ar karti (īstenots, izmantojot SPI);
- liels ātrums (mikrokontrolleris spēj pārsūtīt datus no SD kartes ar ātrumu tuvu 10 Mbps);
- zems enerģijas patēriņš (burtiski pāris miliampēri - ne vairāk);
- mazs izmērs;
- Pieejamība un zemas izmaksas.
SD kartēm praktiski nav nekādu trūkumu (izņemot, iespējams, to inicializācijas procedūras :)).

1. Ievads.

Šajā rakstā aprakstīto ierīci nosaucu par SD kartes sarunu ierīci. Mazliet pretenciozi;), bet pēc nosaukuma ir skaidrs, ka šī ir runājoša ierīce. Tas ir paredzēts jūsu projektu izteikšanai. Īsāk sakot, tas darbojas šādi: numurēti skaņas faili tiek ierakstīti SD kartē, ko ierīce atskaņo pēc jūsu komandas. Pielietojuma joma ir diezgan plaša - brīdinājuma sistēmas, rotaļlietas, roboti, gudra māja utt. Ierīces izmēri ir diezgan pieticīgi (varētu būt mazāks, bet es apzināti izvēlējos ATtiny2313 mikrokontrolleri, kas ir lētāks un vieglāk dabūt). Es mēģināju koncentrēties uz vienkāršību un maksimālu funkcionalitāti.
Skatoties uz priekšu, redzēsim, kam galu galā jānotiek:

Vai šāda ierīce darbotos? Tad mēs savācam!

2 Atmiņas karte.

Ierīce izmanto SD atmiņas karti. Es jau rakstīju par izvēles iemesliem, tikai piebildīšu, ka SD kartes kļūst gandrīz par standarta atmiņas kartēm mobilās ierīces. Pat ražotāji, kuri ir fanātiski popularizējuši/popularizē sava veida atmiņas kartes, pamazām sāk lietot SD kartes. Šādas popularitātes iemesls, iespējams, bija šo karšu zemā cena. Amatieru ierīcēm SD karte faktiski ir vienīgā izmantojamā karte, un iemesls ir vienkāršais interfeiss darbam ar to.

SD karte ir nogājusi garu evolūcijas ceļu, un tai ir vairākas iespējas tās ieviešanai (MMC - kā SD kartes variants, SD ver1, SD ver2, SDHC, SDXC). Saziņas procedūra ar karti ir vienkārša un universāla visu veidu kartēm, taču palaišana (kartes inicializācija) ir diezgan neskaidrs un mulsinošs process ar rituālu kartes “žonglēšanu”, tukšu “manekenu” komandu sūtīšanu un citām nesaprotamām lietām. lietas (īsi sakot, jādejo ar tamburīniem:)). Pašā SDC protokola specifikācijā ir diezgan plaši aprakstīts inicializācijas process, tas ir saprotams, karšu ražotāju ir daudz, katram sava aparatūra, ar savām īpašībām... Par ko es runāju? - Es mēģināju padarīt inicializācijas procedūru pēc iespējas universālāku, taču esiet gatavs tam, ka dažas kartes nedarbosies. Tāpēc, ja ar ierīci kaut kas noiet greizi, izmēģiniet citu atmiņas karti — tas var būt iemesls.

IN šo ierīci Tiek atbalstītas SD kartes līdz 2 GB ieskaitot. Viss iepriekš minētais (SDHC un SDXC) netiek atbalstīts.
Ierīcei nav atšķirības, kāda veida karte ir (SD, MiniSD vai MicroSD), taču tā ir jāpievieno pareizi, atbilstoši kartes izvadam.

3 Failu sistēma.

Ierīce darbojas ar kartēm, kurām ir FAT16 failu sistēma. Šī sistēma ir vislabāk piemērota tādām ierīcēm kā mūsu, jo tā ir vienkārša un viegli ieviešama (FAT12 un FAT32 principā arī nav grūti ieviest, taču tas ir nepraktiski, jo nav nekādu priekšrocību salīdzinājumā ar FAT16) .

Kartei nav īpašu formatēšanas prasību – to var formatēt jebkurā pieejamā ierīcē. Standarta Windows formatēšana diezgan piemērots šiem mērķiem.

Lai ierīce darbotos pareizi, SD kartē esošajiem skaņas failiem jāatbilst noteiktām prasībām:
a) Faila formātam jābūt - nesaspiestam WAV.
Faila parametri ir šādi:
- Bitu pārraides ātrums - iztveršanas frekvence (Frequency) - 32000 Hz;
- Kanālu skaits (Channels) - 1 (mono);
- Izmērs (izlases lielums) - 8 biti.
Iespējams arī šāds saīsinājums - WAV PCM 8U

b) Fails jānosauc īpašā veidā. Lai ierīce zinātu, kurš fails ir pirmais, otrais, trešais utt. faila nosaukuma pirmajai rakstzīmei jābūt latīņu alfabēta lielajam burtam (pārējais nosaukums, kā arī faila paplašinājums tiek ignorēts).
Piemēram, šādi failu nosaukumi būtu pareizi:
A_Lay_dogs.wav - pirmais celiņš
B-Šis ir otrais celiņš.wav - otrais celiņš
Ar brīdinājumu! Kļūda!.wav - trešais celiņš

c) Lai izmantotu ierīces papildu iespējas, faili var atrasties divās mapēs ar nosaukumu "1" un "2". Ierīcei ir slēdzis, lai izvēlētos aktīvo mapi, tas ir, ar to pašu komandu, lai sāktu atskaņošanu, var sākt ierakstus no mapes "1" vai "2", atkarībā no pārslēgšanas ieejas līmeņa (sava ​​veida skaņas shēmas izvēle ir ļoti noderīga lieta!). Ja viena no mapēm (vai abas) nepastāv, faili tiek atskaņoti no saknes direktorija.

Kopā ar audio celiņiem varat glabāt jebkurus citus failus, ja tie nerada konfliktus ar to nosaukumiem (labāk tos ievietot atsevišķā direktorijā, tad nebūs jāpievērš uzmanība tam, kā tie tur nosaukti).

d) Tā kā ATtiny2313 ir mazs SRAM apjoms, nav iespējams izveidot buferi datu iepriekšējai lasīšanai, tāpēc dati no faila tiek tieši izvadīti atskaņošanai. Attiecīgi nav iespējas (nepietiek laika) meklēt failu fragmentus FAT tabulā. Citiem vārdiem sakot, kartē ierakstītie faili nedrīkst būt sadrumstaloti.

Patiesībā tā nav liela problēma, jo jebkura operētājsistēma vienmēr mēģina rakstīt failu kā veselu gabalu un, kamēr jums ir vieta kartē, nekādas darbības ar failiem (dzēšana, kopēšana, pārdēvēšana) neietekmēs to integritāti. Ja jums ir ļoti maza karte vai esat aizpildījis lielu karti līdz ietilpībai, lai pārliecinātos par failu integritāti, vienkārši kopējiet tos uz HDD datorā, formatējiet karti un atgrieziet failus atpakaļ.

4 Shēma. Iespiedshēmas plate.

Ierīces shēma ir pēc iespējas vienkāršāka. Patiesībā, izņemot pašu mikrokontrolleri un SD karti, tajā nav nekā. Sev uztaisīju zīmogu SMD komponentēm, jo ​​šo ierīci plānots lietot ierobežotā izmēra vietā. Ja izmēri jums nav būtiski, varat montēt ķēdi uz maizes dēļa DIP versijā. Maizes dēļa gadījumā ierīces montāža prasīs ne vairāk kā 15 minūtes. Pieļaujamais barošanas spriegums SD kartei ir no 2,7 līdz 3,6 voltiem. Šajā intervālā arī mikrokontrolleris darbojas normāli, tāpēc nav nepieciešams izmantot atbilstošus komponentus. Es pārbaudīju visas ierīces darbību un ar 5 voltu barošanas avotu - viss darbojās labi, taču es neiesaku to darīt pastāvīgs pamats, jo dažādas kartes var atšķirīgi reaģēt uz pārspriegumu. Kā microSD kartes turētāju izmantoju adapteri, kas pielodēts tieši pie tā kontaktiem. Ja nepieciešami mazāki izmēri, labāk izmantot īstu microSD kartes turētāju.

Lai mirgotu mikrokontrolleru, tiek izmantots tas pats savienotājs, kas SD kartei, tāpēc jādomā, kā pieslēgt programmētāju (tīšām taisīju adapteri).

Pēc tam, kad dēlis ir pielodēts, varat mirgot mikrokontrolleri.

Neliela gatavās ierīces galerija:




Neliela nianse shēmā.
Ievietojot SD karti kartes turētājā (karte ir pievienota barošanas avotam), rodas strāvas pārspriegums un attiecīgi sprieguma kritums ķēdē (šķiet, ka šajā brīdī kartē tiek uzlādētas ievērojamas ietilpības ). Izņemšana ir tik nozīmīga, ka mikrokontrolleris tiek atiestatīts. Es to izmantoju, lai sāktu kartes inicializācijas procedūru (instalējot karti, mikrokontrolleris tiek restartēts, un pirmais, ko dara programmaparatūra, ir kartes meklēšana un inicializācija). Ja, uzstādot karti, neatiestatāt MC (jaudīgs barošanas avots vai lielas izlīdzināšanas kapacitātes), tad jums ir jārūpējas par atiestatīšanas pogu mikrokontrollera manuālai atiestatīšanai (tas ir, ja plānojat "karst"). mainīt kartes).

5 Ierīces darbība.

Kā jau rakstīju iepriekš, darbs ar ierīci ir ļoti vienkāršs: iekopējiet pareizi nosauktos ierakstus uz SD karti, ievietojiet karti kartes turētājā, ierīce automātiski atradīs karti, iedegsies zaļā gaismas diode - tas ir, ierīce ir gatavs atskaņot ierakstus. Tagad jums vienkārši jāizvēlas un jāsāk celiņš atskaņošanai sev vispiemērotākajā veidā.

5.1 Ierīču pogas, to darbība.

Mēģināju ierīci izveidot pēc iespējas funkcionālāku, tāpēc režīmu slēdžiem tiek izmantotas daudz mikrokontrolleru kājiņas (līdz ar to ierīce izskatās pēc ezīša :)). Ja jums nav nepieciešama nekāda funkcija - vienkārši atstājiet kāju "karājoties" "gaisā".
Pārslēgšanās darbība:
- “Monster” - ļauj palēnināt (2 reizes) ieraksta atskaņošanu, radot zemas balss efektu. Slēdzis darbojas "lidojumā" - pārslēdzoties mainās ātrums;
- "Hēlijs" - paātrina celiņa atskaņošanu (par 1/3) - radot augstas balss efektu. Slēdzis darbojas "lidojumā";
- “Atkārtot”, ja šis slēdzis ir aizvērts pret zemi, atlasītais celiņš tiks atskaņots bezgalīgi (līdz slēdzis tiek atvērts). Tas var noderēt, piemēram, ja nepieciešams izveidot noteiktu skaņas fonu – lietus skaņu, ugunskura dedzināšanu, straumes šalkoņu...;
- Poga “Atlasīt / Atskaņot”, kas sāk celiņu atskaņošanai (apraksts zemāk);
- “Izvēlēties celiņu” - atskaņojamā celiņa numura iestatīšana (apraksts zemāk);
- “Dir1 / Dir2” - skaņas shēmas izvēle (apraksts zemāk).

5.2 Sāciet atskaņošanu.

Ir trīs veidi, kā sākt konkrēta ieraksta atskaņošanu:
- nosūtot latīņu alfabēta lielo burtu caur UART - nekavējoties sākas faila atskaņošana, kas satur šo burtu nosaukuma sākumā;
- ja faila numurs ir atlasīts, izmantojot “Select track” (binārais kods 0001=”A”, 0010=”B” utt. 1- kāja ir īssavienota ar zemi, 0 – “karājās” “gaisā”), tad poga “Atlasīt / Atskaņot” sāks atbilstošo failu atskaņošanai;
- ja nekas nav atlasīts, izmantojot “Select track” (0000 - kājas “karājas” “gaisā”), tad, nospiežot pogu “Select / Play” noteiktu skaitu reižu, mēs sākam atbilstošo celiņu (1 reize = "A", 2 reizes = "B" utt.).

5.3 Skaņas shēmas.

Ļoti noderīga funkcija ir iespēja izvēlēties vienu no divām skaņas shēmām. Tas nozīmē, ka slēdzis “Dir1 / Dir2” atlasa mapi kartē, no kuras tiks atskaņots ieraksts.

Lietojumprogrammu ir ļoti daudz: ziņas krievu un angļu valodā (izglītojošas rotaļlietas), bērnu un pieaugušo balsis, plūstoša ūdens un degošas uguns trokšņi, kaķis/suns, labais un ļaunais policists :), nomierinošas/uzmundrinošas skaņas un vēl virkne citu. iespējas.

Piemēram, ierīce ir nepieciešama, lai tā varētu sazināties ar vīriešu un sieviešu balsīm. Tas tiek īstenots šādi:
- izveidot divus ziņojumu komplektus attiecīgi sieviešu un vīriešu versijā;
- abu opciju failu numerācija ir vienāda. Neaizmirstiet, ka ierīce faila nosaukumā "redz" tikai pirmo burtu, lai jūs varētu padarīt nosaukumus sev saprotamākus, piemēram, "C_Waiting for command_male.wav" un "C_Waiting for command_female.wav" ir diezgan pareizi. ;
- vīriešu ziņojumu kopums tiek kopēts mapē "1", bet sieviešu ziņas - mapē "2".
Tagad, atkarībā no slēdža “Dir1 / Dir2” stāvokļa, tā pati komanda atskaņos ierakstus no mapes “male” vai “female”.

5.4 Norāde par ierīces darbību.

Tā kā tini2313 ir ļoti maz kāju, un gandrīz visas tiek izmantotas slēdžiem, man nācās upurēt normālu indikāciju, un tā vietā piestiprināt kaut ko NAV normālu. Lai norādītu dažādus darbības režīmus, tiek izmantota tikai viena mikrokontrollera kāja, kurai pieslēgtas divas gaismas diodes - sarkanā un zaļā (nu, vai kas jums patīk vislabāk). Ar noteiktu krāsu kodu tiek parādīti dažādi ierīces darbības režīmi:
- mirgo sarkana gaismas diode - nav SD kartes vai ierīce neatbalsta tās veidu;
- deg sarkanā gaismas diode - SD karte ir atbalstīta un veiksmīgi inicializēta, bet karte nav formatēta FAT16;
- deg zaļā gaismas diode - SD karte ir veiksmīgi inicializēta, vajadzīgā ir atrasta failu sistēma un ierīce ir gatava atskaņot celiņu - gaida komandu;
- mirgo zaļā gaismas diode - ierīce atskaņo celiņu;
- zaļš ir ieslēgts, sarkans ir ieslēgts īsu brīdi, atkal ir zaļš - trase nav atrasta;
- iedegas zaļā gaisma, uz īsu brīdi nodziest un atkal iedegas zaļā gaisma - tiek nospiests ieraksta izvēles taustiņš.

5.5. Atkļūdošanas informācija.

Lai atvieglotu problēmzonu meklēšanu (gadījumam, ja ierīce nevēlas darboties), es dublēju katru inicializācijas posmu programmā ar ziņojumiem, izmantojot UART. Pēc katra veiksmīgā soļa atbilstošā rakstzīme tiek nosūtīta uz UART:
- "S" - (Start) mikrokontrollera perifērijas inicializācija ir normāla;
- "C" - (Card Init) SD karte ir inicializēta normāli un atbalstīta;
- “F” - (FAT sākotnēji) FAT sistēma atbalstīts;
- "1" - (No 1 Dir) neviena mape "1" netiks nolasīta no saknes direktorijas;
- "2" - (No 2 Dir) no saknes direktorija netiks nolasīta neviena mape "2";
- "R" - (Gatavs) ierīce ir pilnībā gatava - tā gaida komandu, lai sāktu celiņu;
- Turklāt katru reizi, kad tiek palaists ieraksts, UART tiek nosūtīts celiņa nosaukuma lielais burts.

6 celiņi ierīču skaņas atskaņošanai.

6.1. Ierakstu konvertēšana

Ja augstāk esošajā bibliotēkā nekas piemērots netika atrasts, tad nepieciešamos ierakstus varat iegūt tīklā (ir daudz speciālu vietņu mūziķiem un video montāžai, kur jau ir apkopotas lielas skaņu bibliotēkas), spēļu instalācijās (bieži vien spēle ir sadalīta ierakstos un salocīta atsevišķā mapē). Varat arī izgriezt skaņas efektus no filmām un mūzikas. Atrastie ieraksti ir jāpārvērš formātā, ko atbalsta ierīce. Atgādinu, ka faila formātam jābūt nesaspiestam WAV. 32 000 Hz, 1 kanāls, 8 biti (WAV PCM 8U)
Lai konvertētu uz šo formātu, ir piemērots jebkurš mūzikas redaktors vai, ja jums vienkārši nepieciešams konvertēt ierakstu, to nerediģējot -

Daudzās salīdzinoši pēdējo gadu sadzīves tehnikas un rūpnieciskās automatizācijas ierīcēs ir uzstādīti mehāniskie skaitītāji. Tie ir izstrādājumi uz konveijera, stiepļu spoles uztīšanas mašīnās utt. Bojājuma gadījumā nav viegli atrast līdzīgu skaitītāju, un to nav iespējams salabot rezerves daļu trūkuma dēļ. Autors ierosina mehānisko skaitītāju aizstāt ar elektronisku. Elektroniskais skaitītājs, kas tiek izstrādāts, lai aizstātu mehānisko, izrādās pārāk sarežģīts, ja tas ir veidots uz zemas un vidējas integrācijas pakāpes mikroshēmām (piemēram, K176, K561 sērija). it īpaši, ja ir nepieciešams apgrieztais konts. Un, lai saglabātu rezultātu, kad strāva ir izslēgta, ir nepieciešams nodrošināt rezerves akumulators uzturs.

Bet jūs varat izveidot skaitītāju tikai uz vienas mikroshēmas - universāla programmējama mikrokontrollera, kurai ir dažādas perifērijas ierīces un spēj atrisināt ļoti plašu problēmu loku. Daudziem mikrokontrolleriem ir īpaša atmiņas zona - EEPROM. Tajā ierakstītie dati (tostarp programmas izpildes laikā), piemēram, pašreizējais skaitīšanas rezultāts, tiek saglabāti pat pēc strāvas izslēgšanas.

Ierosinātais skaitītājs izmanto Attiny2313 mikrokontrolleri no Almel AVR saimes. Ierīce realizē apgriezto skaitīšanu, rezultāta izvadi ar nenozīmīgo n atcelšanu

stropu uz četrciparu LED indikatora, saglabājot rezultātu EEPROM, kad strāva ir izslēgta. Mikrokontrollerī iebūvētais analogais komparators tiek izmantots, lai savlaicīgi noteiktu barošanas sprieguma samazināšanos. Skaitītājs atceras skaitīšanas rezultātu, kad strāva tiek izslēgta, ieslēdzot to atjauno, un, līdzīgi kā mehāniskais skaitītājs, ir aprīkots ar atiestatīšanas pogu.

Skaitītāja shēma ir parādīta attēlā. Sešas B porta līnijas (РВ2-РВ7) un piecas D porta līnijas (ACVN, PD1, PD4-PD6) tiek izmantotas, lai organizētu skaitīšanas rezultāta dinamisko indikāciju uz LED indikatora HL1. Fototranzistoru VT1 un VT2 kolektoru slodzes ir rezistori, kas iebūvēti mikrokontrollerī un iekļauti programmatūrā, savienojot atbilstošās mikrokontrollera izejas ar tā barošanas ķēdi.

N skaitīšanas rezultāta pieaugums par vienu notiek optiskā savienojuma pārtraukšanas brīdī starp izstarojošo diodi VD1 un fototranzistoru VT1, kas rada pieaugošu līmeņu starpību pie mikrokontrollera ieejas INT0. Šajā gadījumā līmenim pie ieejas INT1 jābūt zemam, t.i., fototranzistors VT2 ir jāizgaismo ar izstarojošo diode VD2. Augošās malas brīdī INT1 ieejā ar zemu līmeni INT0 ieejā rezultāts samazināsies par vienu. Citas līmeņu kombinācijas un to atšķirības ieejās INT0 un INT1 skaitīšanas rezultātu nemaina.

Kad tiek sasniegta maksimālā vērtība 9999, skaitīšana turpinās no nulles. Atņemot vienu no nulles vērtības, tiek iegūts rezultāts 9999. Ja atpakaļskaitīšana nav nepieciešama, varat izslēgt no skaitītāja izstarojošo diodi VD2 un fototranzistoru VT2 un savienot mikrokontrollera INT1 ieeju ar kopēju vadu. Konts tikai palielināsies.

Kā jau minēts, mikrokontrollerī iebūvētais analogais komparators kalpo kā sprieguma krituma detektors. Tas salīdzina nestabilizēto spriegumu taisngrieža izejā (diodes tilts VD3) ar stabilizēto spriegumu integrētā regulatora DA1 izejā. Programma cikliski pārbauda salīdzinājuma stāvokli. Pēc skaitītāja atvienošanas no tīkla taisngrieža C1 filtra kondensatora spriegums pazeminās, un stabilizētais spriegums kādu laiku paliek nemainīgs. Rezistori R2-R4 tiek izvēlēti šādi. ka salīdzinājuma stāvoklis šajā situācijā ir pretējs. To atklājusi, programmai ir laiks ierakstīt pašreizējo skaitīšanas rezultātu mikrokontrollera EEPROM pat pirms tas pārstāj darboties strāvas izslēgšanas dēļ. Nākamajā reizē, kad programma tiks ieslēgta, tā nolasīs EEPROM ierakstīto numuru un parādīs to indikatorā. Skaitīšana turpināsies no šīs vērtības.

Sakarā ar ierobežoto mikrokontrollera tapu skaitu, lai pievienotu SB1 pogu, kas atiestata skaitītāju, tiek izmantota tapa 13, kas kalpo kā komparatora (AIM) invertējošā analogā ieeja un vienlaikus - "digitālā" ieeja PB1. Sprieguma dalītājs (rezistori R4, R5) šeit nosaka līmeni, ko mikrokontrolleris uztver kā augstu loģisko Nospiežot pogu SB1, tas kļūs zems. Tas neietekmēs salīdzinājuma stāvokli, jo spriegums pie AIN0 ieejas joprojām ir augstāks nekā pie AIN1.

Nospiežot pogu SB1, programma parāda mīnusa zīmi visos indikatora ciparos un pēc atlaišanas sāk skaitīt no nulles. Ja skaitītāja barošana tiek izslēgta, kamēr tiek nospiesta poga, pašreizējais rezultāts netiks ierakstīts EEPROM, un tur saglabātā vērtība paliks nemainīga.

Programma ir izstrādāta tā, lai to būtu viegli pielāgot skaitītājam ar citiem indikatoriem (piemēram, ar parastajiem katodiem), ar atšķirīgu vadu iespiedshēmas plate utt. Lietojot, būs nepieciešama arī neliela programmas korekcija kvarca rezonators uz frekvenci, kas vairāk nekā par 1 MHz atšķiras no norādītās.

Pie avota sprieguma 15 V spriegumu mēra pie mikrokontrollera paneļa 12. un 13. tapām attiecībā pret kopējo vadu (10. tapu). Pirmajam jābūt diapazonā no 4 ... 4,5 V, bet otrajam jābūt lielākam par 3,5 V, bet mazākam par pirmo. Pēc tam avota spriegums tiek pakāpeniski samazināts. Kad tas nokrītas līdz 9...10 V, sprieguma vērtību starpībai uz 12. un 13. tapām jākļūst par nulli, un pēc tam jāmaina zīme.

Tagad panelī var uzstādīt ieprogrammētu mikrokontrolleri, pieslēgt transformatoru un pieslēgt tam tīkla spriegumu. Pēc 1,5 ... 2 s jums jānospiež poga SB1. Skaitītāja indikators parādīs skaitli 0. Ja indikatorā nekas netiek parādīts, vēlreiz pārbaudiet sprieguma vērtības mikrokontrollera ieejās AIN0.AIN1. Pirmajam jābūt lielākam par otro.

Kad skaitītājs ir veiksmīgi iedarbināts, atliek pārbaudīt skaitīšanas pareizību, pārmaiņus ēnot fototranzistorus ar IR stariem necaurspīdīgu plāksni. Priekš lielāks kontrasts indikatorus vēlams aizvērt ar gaismas filtru no sarkana organiskā stikla.

Šodien mēs cenšamies izmantot vairāk priekšrocību vienkāršs mikrokontrolleris ATtiny2313 un savienot ar to simboliski LCD displejs A satur divas rindiņas ar 16 rakstzīmēm.

Displejs, ko mēs savienosim standarta veidā 4 bitu veids.

Vispirms, protams, sāksim ar mikrokontrolleri, jo mēs jau esam ļoti labi pazīstami ar displeju no iepriekšējām nodarbībām.

Atveriet kontroliera datu lapu ATtiny2313 un redzēt tā spraudni

Mēs to redzam dotais kontrolieris pastāv divu veidu gadījumos, bet, tā kā tas manās rokās nonāca DIP korpusā, mēs izskatīsim šo konkrēto korpusa versiju, un principā tie daudz neatšķiras, izņemot izskatu, jo kāju skaits ir tas pats - saskaņā ar 20.

Tā kā ir 20 kājas, salīdzinot ar ATMega8 kontroliera 28 kājām, pie kurām esam strādājuši visu laiku un turpināsim, tad attiecīgi arī iespēju būs mazāk.

Principā šeit bija viss, kas bija ATmega8, vienīgais, ka ir mazāk pieslēgvietu. Bet tā kā mūsu priekšā ir mēģināt savienot to caur SPI kopni ar citu kontrolieri, tas mūs īpaši nenomāc.

Ir dažas citas atšķirības, taču tās ir nelielas, un mēs tās iepazīsim pēc vajadzības.

Saliksim šeit šādu shēmu (klikšķiniet uz attēla, lai palielinātu attēlu)

Displejs ir savienots ar D porta tapām. PD1 un PD2 ir savienotas ar vadības ieejām, bet pārējās ar displeja moduļa D4-D7 tapām.

Mēs izveidosim projektu ar nosaukumu TINY2313_LCD, pārsūtīsim uz to visu, izņemot galveno moduli no projekta displeja savienošanai ar Atmega8.

Protams, dažas lietas būs jāpārstrādā. Lai to izdarītu, jums rūpīgi jāizpēta, kura kāja ar ko ir savienota. Displeja E kopne ir savienota ar PD2, bet RS kopne ir savienota ar PD1, tāpēc veiksim izmaiņas failā LCD h

#definēte1PORTD|=0b0000 01 00 // iestatiet līniju E uz 1

#definēte0PORTD&=0b1111 10 11 // iestatiet līniju E uz 0

#definētrs1PORTD|=0b00000 01 0 // iestatīt RS līniju uz 1 (dati)

#definētrs0PORTD&=0b11111 10 1 // iestatiet RS līniju uz 0 (komanda)

Kā redzam no izlases treknrakstā, tik krasas izmaiņas nav notikušas.

Tagad informācijas ievade. Šeit mēs izmantojam kājas PD3-PD6, tas ir, tās ir nobīdītas par 1 punktu, salīdzinot ar savienojumu ar Atmega8, tāpēc mēs arī kaut ko labosim failā LCD.c funkcijā sūtīt pusbaitu

PORTD&=0b 1 0000 111; //izdzēšam informāciju par ieejām DB4-DB7, pārējo nepieskaramies

Bet tas vēl nav viss. Agrāk mēs pārsūtāmos datus pārvietojām par 4, un tagad iepriekš minēto izmaiņu dēļ mums tie būs jāpārvieto tikai par 3. Tāpēc tajā pašā funkcijā labosim arī pašu pirmo rindiņu

c<<=3 ;

Tās ir visas izmaiņas. Piekrītu, tie nav tik lieliski! Tas tiek panākts ar to, ka mēs vienmēr cenšamies rakstīt universālu kodu un izmantot tieši makro aizstāšanas. Ja mēs tam nebūtu veltījuši laiku, mums būtu jālabo kods gandrīz visās mūsu bibliotēkas funkcijās.

Galvenajā modulī mēs nepieskaramies porta D inicializēšanai, ļaujam visam nonākt izejas stāvoklī, kā tas ir 12. nodarbībā.

Mēģināsim samontēt projektu un vispirms redzēt rezultātu proteusā, jo es arī taisīju tam projektu, kas arī būs pievienotajā arhīvā ar projektu Atmel Studio

Mums viss darbojas lieliski! Lūk, kā jūs varat, izrādās ātri pārtaisīt projektu vienam kontrolierim zem cita.

Proteus ir ļoti labs, bet uz īstām daļām vienmēr ir patīkamāk skatīties. Visa ķēde tika salikta uz maizes paneļa, jo es šim kontrolierim neizgatavoju un nesamontēju atkļūdošanas dēli. Mēs savienosim programmētāju, izmantojot šādu standarta savienotāju

Šeit ir visa diagramma

Šeit viss ir standarta. Uzvilkšanas rezistors RESET utt.

Tagad, pirms kontrollera mirgošanas programmā avrdude, mums ir jāizvēlas kontrolleris un jāizlasa tā zibatmiņa

Pēc tam dodieties uz cilnēm FUSES un pareizi iestatiet drošinātājus. Tā kā mums nav kvarca rezonatora, drošinātājus iestatām šādā veidā




Tops