Attiny2313-də DIY sxemləri. Düyməni sadə proqram olan ATtiny2313 mikro nəzarətçisinə qoşuruq. MK-da proqramın tərtibi və proqram təminatı

Sadə bir dövrəni necə yığmaq, bir proqramçını ATtiny2313 mikro nəzarət cihazına necə bağlamaq, necə yazmaq olar ən sadə proqram C dilində və proqramımızla ATtiny2313 mikro nəzarət cihazını necə yandırmaq olar, bütün bunları bu məqalədə tapa bilərsiniz.

Bizə ilk növbədə proqramçı lazımdır, proqramçıların növləri çoxdur, hansı proqramçı seçməliyik?
Adi proqramçılar var ki, orada bir mikrokontroller daxil etməli, onu yandırmalı, mikrokontrolleri çıxarmalı və nəticəni görmək üçün onu lövhəmizə daxil etməlisiniz və bu ardıcıllığı əvvəlcə yüzlərlə dəfə etmək lazımdır, bu seçim mənim fikir, əlverişli deyil.
Mikro nəzarət cihazımız ATtiny2313 SPI portu vasitəsilə ISP (Sistemdaxili Proqramlaşdırma) funksiyasını dəstəkləyir, bu dövrədə proqramlaşdırma istifadə halı ISP məncə ən rahat və sürətli, çünki... hər bir proqram yeniləməsindən sonra mikrokontrolleri platamızdan çıxarmağa ehtiyac yoxdur, mikrokontrolleri yüzlərlə dəfə proqramlaşdıra bilərsiniz və proqramçıyı kompüterdən və lövhədən ayırmadan dərhal mikrokontrolleri yandırdıqdan sonra nəticəyə baxın, sazlama prosesi proqram təminatı həvəskar radio cihazının quraşdırılması nəzərəçarpacaq dərəcədə sadələşdirilmiş və ona sərf olunan vaxt azalmışdır.
Siz özünüz bir dövrə ISP proqramçısı edə bilərsiniz, İnternetdə çoxları var sadə sxemlər bunun LPT vasitəsilə necə edildiyi, COM portu məsələn, proqramçı PonyProg Bunu necə etmək barədə İnternetdə diaqramları tapa bilərsiniz.

Bu məqalə mikrokontrollerlər üçün dövrə daxilində ISP proqramçısı ilə işləməyi müzakirə edəcək AVR (PX-400) COM portu ilə işləyir.
Əgər kompüterinizdə COM portu yoxdursa, sizə adapter də lazım olacaq USB portu COM portuna, bu cür adapterlərin də bir çox çeşidi var, işlədiyim adapteri tövsiyə edirəm: UCON-232S USB-dən Serial port çevirici lövhəsi
Proqramçının şəkli PX-400, adapter UCON-232S USB , ATTiny2313 məlumat cədvəli

Bu sxemin bütün detallarını daha ətraflı nəzərdən keçirək:
(Hər halda bütün hissələri, proqramçı, adapter (USB-dən COM portuna) chipdip.ru saytından almışam)

1 - PBD-20 lövhə yuvası 2.54mm 2x10 düz- Mən bunu rahatlıq üçün, mikrokontroller pinlərindən gələn siqnalları yoxlamağı asanlaşdırmaq üçün etdim; bu nöqtəni etmək mümkün olmadı.
2 - SCS-20 DIP panel 20 sancaq- paneli lövhəyə lehimləyirik ki, lazım olduqda lövhədəki mikrokontrolleri əvəz etmək mümkün olsun;
ATtiny2313-20PU, DIP20, MCU, 5V, 1K-Flash, 12MHz- Mikrokontrolleri DIP panelinə daxil edirik.
3 - Kvars kristal 4.000 MHz (kəsilmiş) HC-49S- Kvars kristal 4 MHz
4 - Seramik kondansatör K10-17B imp. 22pF NPO,5%,0805- İki 22pF keramik kondansatör
5 - 78M05 (+5V, 0.5A) TO220- 5V gərginlik stabilizatoru mikrokontrolleri +5V-dən çox olmayan stabilləşdirilmiş güclə təmin edir, bu halda mən 4,4V aldım, bu kifayətdir.
6 - NP-116 elektrik fiş 1,3x3,4x9,5 mm MP-331 (7-0026c)- Elektrik ştepki köhnəsinə lehimlənmişdi şarj cihazı-dan mobil telefon DC 5.7V/800mA
7 - Təyyarədə DS-213 elektrik rozetkası- asan elektrik bağlantısı üçün NP-116 fişinin enerji təchizatı haradadır
8 - IDC-10MS (BH-10), düz fiş- Dövrədaxili ISP proqramçısını qoşmaq üçün rozetka
9 - Daimi rezistor 0.25W 150 Ohm- MISO, SCK, MOSI sancaqlarında üç 150 Ohm rezistor
10 - Daimi rezistor 0.25W 47 Ohm- RESET pininə bir 47 Ohm rezistor
11 - Nəzakət düyməsi h=5mm, TC-0103 (TS-A2PS-130)- Düymə sıfırla RESET, düyməni basdıqdan sonra mikrokontrollerdəki proqram əvvəldən başlayır, düymə yaradıla bilməzdi.
12 - Yaşıl LED d=3mm, 2.5V, 2mA - Göstərici funksiyasını yerinə yetirir, bu elementi yerinə yetirmək mümkün deyildi.
13 - Daimi rezistor 0.25W 110 Ohm- LED-də 2V olması üçün LED üçün bir rezistor, bu addımı atmaq olar
14 - Mikrokontroller pinlərindən gələn siqnalları yoxlamaq üçün LED-ə qoşulmuş iki tel, bu addımı yerinə yetirmək mümkün olmadı
15 - Dip-RM çaplı çörək lövhəsi 100x100mm

3 və 4-cü nöqtələr Xarici saat generatoru kimi vahid vahid kimi işləyin, daxili RC osilatorunun dəqiqliyinə və sabitliyinə yüksək tələblər qoymasanız, bu nöqtələr buraxıla bilər, daxili RC osilatorunda təxminən 10% xəta var və dəqiqliyə temperaturun dəyişməsi təsir edə bilər.

Beləliklə, siz yüklədiniz və quraşdırdınız Atmel Studio :
başlayaq Atmel Studio və LED-i yanıb-sönərək C dilində ən sadə proqramı yazın:
Klikləyin: Yeni layihə... \ AVR GCC \ C \ C İcra edilə bilən Layihə
Layihənin saxlanacağı qovluğu və layihənin adını, məsələn, Test1-i göstərin və OK düyməsini basın.
Siyahıdan ATtiny2313 mikro nəzarət cihazımızı seçin və OK düyməsini basın.
Pəncərədə görünən hər şeyi silib proqram kodumuzu aşağıya yapışdırırıq:

#define F_CPU 4000000L //Xarici kvars 4 MHz tezliyini qeyd edin
#daxildir
#daxildir
int əsas(boş)
{
//Bütün PORTB pinlərini çıxış kimi təyin edin
DDRB=0xFF;//İnformasiyanın ötürülməsi istiqamətinin reyestri (1-çıxış, 0-giriş)
isə (1)
{
//Məlumat reyestri PORTB (məlumatı çıxarmaq üçün istifadə olunur)
PORTB=0b00000001;//MK PB0-nin 12-ci portuna 1 veririk - LED-i yandırın
PORTB=0b00000000;//MK PB0-nin 12-ci portuna 0 tətbiq edin - LED-i söndürün
_delay_ms(1000);//Gecikmə 1 san.
}
}

Menyuya keçin Quraşdırma\Konfiqurasiya meneceri\Aktiv həll konfiqurasiyası\
seçin Buraxın, basın Yaxın
Layihədə bir qovluğumuz olsun deyə bunu etdik Buraxın, mən aşağıda danışacağam.

basın F7, hazırdır, ərizəmiz tərtib edilmişdir!
ATtiny2313 mikro nəzarət cihazının proqram təminatını yandırmaq üçün bizə yalnız bir uzantısı olan bir fayl lazımdır HEX
O, bizim layihə qovluğunda yerləşir: ...
Faylı qeyd edin Test1.hex sadəcə qovluqdan götürün Buraxın !
Çaşdırmayın, çünki qovluq Debug fayl da var Test1.hex, lakin bu fayl hələ də ehtiva edir sazlama məlumatları və buna görə siz bu fayl ilə flash edə bilməyəcəksiniz. adətən olur böyük ölçü və MK-nın yaddaşına sığmayacaq.

.hex faylını tapdıq, indi ATtiny2313 mikro nəzarət cihazını yandırmaq üçün proqrama ehtiyacımız var, belə proqramlar çoxdur, amma proqramı istifadə edəcəyik: Avr-Osp II
Yüklə:

Proqramçını dövrəmizə bağlayırıq və dövrəni enerji ilə təmin etməyi unutmayın!

Proqramı işə salın Avr-Osp II, FLASH bölməsində faylın yolunu təyin edin... \Test1\Test1\Release\Test1.hex, proqramdakı qutuları işarələyin və düyməni basın Proqram budur, mikrokontroller ATtiny2313 yanıb-sönür!

In-circuit ISP proqramçılarının üstünlüyü nədir?İndi naqilləri dövrəmizdən ayırmadan proqramda dəyişiklik edə və yuxarıda göstərildiyi kimi mikrokontrolleri yanıb-sönə və dərhal nəticəni görə bilərsiniz.

Zəhmət olmasa forumumuzda suallarınızı və şərhlərinizi buraxın

AVR RISC arxitekturası:

RISC (Reduced Instruction Set Computer). Bu memarlıq var böyük dəstəksəriyyəti 1 maşın dövrəsində yerinə yetirilən göstərişlər. Buradan belə nəticə çıxır ki, CISC arxitekturasına əsaslanan əvvəlki mikrokontrollerlərlə (məsələn, MCS51) RISC mikrokontrollerləri 12 dəfə sürətlidir.

Yaxud müəyyən bir performans səviyyəsini əsas götürsək, o zaman icra etmək bu şərt RISC (Attiny2313) əsasında mikrokontrollerlər generatorun 12 dəfə az takt tezliyini tələb edir ki, bu da enerji istehlakının əhəmiyyətli dərəcədə azalmasına gətirib çıxarır. Bu baxımdan dizayn etmək mümkün olur müxtəlif cihazlar batareyadan istifadə edərək Attiny2313-də.

Operativ Saxlama Cihazı (RAM) və məlumat və proqramların qeyri-sabit yaddaşı:

  • 10.000 yazma/silmə təkrarını təmin edə bilən 2 KB öz-özünə proqramlaşdırıla bilən Flash proqram yaddaşı.
  • 100.000 yazma/silmə təkrarını təmin edə bilən 128 bayt EEPROM yazıla bilən məlumat yaddaşı.
  • 128 bayt SRAM yaddaşı (yalnız oxumaq üçün olan RAM).
  • Proqram kodunu və EEPROM məlumatlarını qorumaq üçün funksiyadan istifadə etmək mümkündür.

Periferik xüsusiyyətlər:

  1. Mikro nəzarətçi Attiny2313 maksimum əmsalı 256 olan ayrıca quraşdırılmış preskaler ilə səkkiz bitlik taymer sayğacı ilə təchiz edilmişdir.
  2. Ayrı bir preskaler, tutma və müqayisə sxemi olan on altı bitlik taymer sayğacı da var. Taymer saatlıdır - sayğac fərqli ola bilər xarici mənbə siqnal və daxili.
  3. İki kanal. Sürətli PWM modulyasiyasının və faza korreksiyası ilə PWM-nin iş rejimi var.
  4. Daxili analoq komparator.
  5. Daxili osilator ilə gözətçi taymeri (proqramlaşdırıla bilər).
  6. Serial Universal İnterfeys (USI).

Attiny2313-ün xüsusi texniki göstəriciləri:


  • Boş— Boş rejim. Bu halda yalnız mərkəzi prosessor işləməyi dayandırır. Boş rejim SPI, analoq müqayisə cihazı, A/D çeviricisi, sayğac taymeri, nəzarətçi və ya kəsmə sisteminin işinə təsir göstərmir. Əslində, o, yalnız nüvə sinxronizasiyasını dayandırır mərkəzi prosessor və flash yaddaş. Attiny2313 mikrokontrolleri xarici və ya daxili fasilə ilə Boş rejimdən normal işə qayıdır.
  • Güc kəsilir— Attiny2313 mikro nəzarət cihazının enerji istehlakından faktiki olaraq söndürüldüyü ən qənaətcil rejim. Bu vəziyyətdə, saat generatoru dayanır və bütün ətraf qurğular söndürülür. Yalnız xarici mənbədən kəsilmə emalı modulu aktiv olaraq qalır. Kəsmə aşkar edildikdə, Attiny2313 mikro nəzarət cihazı Enerji söndürülməsindən çıxır və normal işə qayıdır.
  • Gözləmə rejimi– mikrokontroller SLEE əmrindən istifadə edərək bu enerji istehlakı gözləmə rejiminə keçir. Bu, bağlanmağa bənzəyir, yeganə fərq saatın işləməyə davam etməsidir.

Attiny2313 mikro nəzarətçinin giriş-çıxış portları:

Mikrokontroller dizayn ehtiyaclarına əsasən proqramlaşdırıla bilən 18 giriş/çıxış pininə malikdir xüsusi cihaz. Bu portların çıxış tamponları nisbətən yüksək yükə tab gətirə bilir.

  • Port A (PA2 - PA0) – 3 bit. Proqramlaşdırıla bilən açılan rezistorlarla iki istiqamətli I/O portu.
  • Port B (PB7 - PB0) – 8 bit. Proqramlaşdırıla bilən açılan rezistorlarla iki istiqamətli I/O portu.
  • Port D (PD6 - PD0) – 7 bit. Proqramlaşdırıla bilən açılan rezistorlarla iki istiqamətli I/O portu.

Təchizat gərginliyi diapazonu:

Mikrokontroller 1,8 ilə 5,5 volt arasında bir təchizatı gərginliyi ilə uğurla işləyir. Cari istehlak nəzarətçinin iş rejimindən asılıdır:

Aktiv rejim:

  • 32 kHz takt tezliyində 20 µA və təchizatı gərginliyi 1,8 volt.
  • 1 MHz takt tezliyində 300 µA və 1,8 volt təchizatı gərginliyi.

Enerji qənaət rejimi:

  • 1,8 volt təchizatı gərginliyində 0,5 µA.

(3,6 Mb, endirilib: 5934)

Bu məqalənin cihazı SD kartlarla işləyir. Mövzu köhnə və kifayət qədər səhvdir, lakin SD kartların istifadəsi bu barədə yenidən yazmağa dəyər.
Ümumiyyətlə, SD kartların (SDC, SD Card) bir çox üstünlükləri var və kiçik daxili layihələrdə istifadə etmək çox sadə və rahatdır. Buna bir sıra amillər kömək edir:
- kartla qarşılıqlı əlaqə üçün çox sadə interfeys (SPI vasitəsilə həyata keçirilir);
- yüksək əməliyyat sürəti (mikro nəzarətçi SD kartdan məlumatları 10 Mbit/s-ə yaxın sürətlə ötürməyə qadirdir);
- aşağı enerji istehlakı (sözün əsl mənasında bir neçə milliamper - artıq deyil);
- kiçik ölçülər;
- mövcudluq və aşağı qiymət.
SD kartların praktiki olaraq heç bir çatışmazlığı yoxdur (bəlkə də onların işə salınma proseduru istisna olmaqla :)).

1. Giriş.

Mən bu məqalədə təsvir edilən cihazı SD Card Talking Device adlandırdım. Bir az iddialı ;), lakin adı aydın olur ki, bu danışan cihazdır. Layihələrinizi səsləndirmək üçün nəzərdə tutulub. Bir sözlə, bu belə işləyir: nömrələnmiş səs faylları SD kartda qeyd olunur, cihazı sizin əmrinizlə ifa edir. Tətbiq sahəsi olduqca genişdir - xəbərdarlıq sistemləri, oyuncaqlar, robotlar, ağıllı ev və s. Cihazın ölçüləri olduqca təvazökardır (daha kiçik ola bilər, amma mən qəsdən daha ucuz və əldə etmək asan olan ATtiny2313 mikro nəzarət cihazını seçdim). Əsas vurğunu sadəliyə və maksimum funksionallığa qoymağa çalışdım.
İrəliyə baxaraq, görək sonda nə olacaq:

Belə bir cihaz faydalıdırmı? Onda yığaq!

2 Yaddaş kartı.

Cihaz SD yaddaş kartından istifadə edir. Seçim səbəbləri haqqında artıq yazmışam, yalnız əlavə edəcəyəm ki, SD kartlar demək olar ki, standart yaddaş kartına çevrilir. mobil cihazlar. Hətta öz yaddaş kartlarını fanatik şəkildə təbliğ edən/təşviq edən istehsalçılar da yavaş-yavaş SD kartlardan istifadə etməyə başlayırlar. Belə populyarlığın səbəbi, yəqin ki, bu kartların aşağı qiyməti idi. Həvəskar qurğular üçün SD kart, əslində, istifadə üçün uyğun olan yeganə kartdır və bunun səbəbi onunla işləmək üçün sadə interfeysdir.

SD kart təkamüldə uzun bir yol keçib və onun həyata keçirilməsi üçün bir neçə varianta malikdir (MMC - SD kart seçimi kimi, SD ver1, SD ver2, SDHC, SDXC). Kartla əlaqə qurma proseduru bütün növ kartlar üçün sadə və universaldır, lakin onu işə salmaq (kartın işə salınması) kartın ritual “sıxılması”, boş “dummy” əmrlərinin göndərilməsi ilə kifayət qədər qeyri-müəyyən və çaşdırıcı bir prosesdir. və digər anlaşılmaz şeylər (bir sözlə, qavalla rəqs etmək lazımdır :)). SDC protokolunun spesifikasiyası inisializasiya prosesini kifayət qədər təfərrüatlı şəkildə təsvir edir, bu başa düşüləndir, hər birinin öz avadanlığı, öz xüsusiyyətləri olan bir çox kart istehsalçıları var... Mən nə əldə edirəm? - İnisializasiya prosedurunu mümkün qədər universal etməyə çalışdım, lakin bəzi kartların işləməyəcəyinə hazır olun. Buna görə, cihazınızla bir şey yaxşı getmirsə, başqa bir yaddaş kartını sınayın - səbəb bu ola bilər.

IN bu cihazÖlçüsü 2 GB-a qədər olan SD kartlar dəstəklənir. Daha yüksək hər şey (SDHC və SDXC) dəstəklənmir.
Cihaz üçün kartın hansı forma faktoru olmasının (SD, MiniSD və ya MicroSD) olmasının fərqi yoxdur, lakin siz kartın pin çıxışına uyğun olaraq onu düzgün birləşdirməlisiniz.

3 Fayl sistemi.

Cihaz FAT16 fayl sistemi olan kartlardan istifadə edir. Bu sistem bizim kimi cihazlar üçün idealdır, çünki sadə və asan həyata keçirilir (FAT12 və FAT32, prinsipcə, həyata keçirmək də çətin deyil, lakin FAT16 ilə müqayisədə heç bir üstünlük olmadığı üçün bu praktiki deyil).

Kartın formatlanması üçün xüsusi tələblər yoxdur - onu istənilən mövcud cihazda formatlaşdırmaq olar. Standart pəncərələrin formatlanması bu məqsədlər üçün olduqca uyğundur.

Cihazın düzgün işləməsi üçün SD kartda yerləşən səs faylları müəyyən tələblərə cavab verməlidir:
a) Fayl formatı sıxılmamış WAV olmalıdır.
Fayl parametrləri aşağıdakı kimidir:
- Bitrate - seçmə tezliyi (Tezlik) - 32000 Hz;
- Kanalların sayı (Kanallar) - 1 (mono);
- Nümunə ölçüsü - 8 bit.
Digər mümkün azalma WAV PCM 8U-dur

b) Fayl xüsusi bir şəkildə adlandırılmalıdır. Cihazın hansı faylın birinci, ikinci, üçüncü və s. olduğunu bilməsi üçün. Fayl adının ilk simvolu latın əlifbasının böyük hərfi olmalıdır (fayl uzantısı kimi adın qalan hissəsi nəzərə alınmır).
Məsələn, aşağıdakı fayl adları düzgün olardı:
A_Lai_dog.wav - ilk trek
B-Bu ikinci trekdir.wav - ikinci trek
Xəbərdarlıq ilə! Xəta!.wav - üçüncü trek

c) Cihazın əlavə funksiyalarından istifadə etmək üçün fayllar “1” və “2” adlı iki qovluqda yerləşdirilə bilər. Cihazda aktiv qovluğu seçmək üçün açar var, yəni oxutmaya başlamaq üçün eyni əmr keçid girişindəki səviyyədən asılı olaraq "1" və ya "2" qovluğundan parçaları oxuya bilər (səs sxeminin bir növü seçimi). - çox faydalı bir şey!). Qovluqlardan biri (və ya hər ikisi) mövcud deyilsə, fayllar kök kataloqdan səsləndirilir.

Adları ilə ziddiyyət yaratmamaq şərti ilə hər hansı digər faylları audio treklərlə birlikdə saxlaya bilərsiniz (onları ayrıca bir kataloqa qoymaq daha yaxşıdır, onda onların orada necə adlandırıldığına diqqət yetirməli olmayacaqsınız).

d) ATtiny2313-də az miqdarda SRAM olduğuna görə verilənlərin əvvəlcədən oxunması üçün bufer yaratmaq mümkün deyil, ona görə də fayldan məlumatlar birbaşa oxutma üçün çıxarılır. Müvafiq olaraq, FAT cədvəlindən istifadə edərək fayl fraqmentlərini axtarmaq üçün heç bir yol (kifayət qədər vaxt yoxdur) yoxdur. Başqa sözlə, karta yazılan fayllar parçalanmamalıdır.

Əslində, bu, hər hansı bir problem deyil əməliyyat sistemi həmişə faylı bütöv bir parça kimi yazmağa çalışır və kartda yeriniz olduğu müddətdə fayllarla edilən hər hansı hərəkətlər (silmək, kopyalamaq, adını dəyişmək) onların bütövlüyünə təsir etməyəcək. Əgər çox kiçik bir kartınız varsa və ya böyük bir kartı tutumla doldurmusunuzsa, faylların bütövlüyünə əmin olmaq üçün onları sadəcə olaraq kopyalayın. HDD kompüter, kartı formatlayın və faylları geri qaytarın.

4 Sxem. Çap dövrə lövhəsi.

Cihazın diaqramı mümkün qədər sadədir. Əslində, mikrokontrolörün özündən və SD kartdan başqa, orada heç bir şey yoxdur. Özüm üçün SMD komponentləri üçün bir işarə etdim, çünki bu cihazı məhdud ölçüləri olan bir yerdə istifadə etməyi planlaşdırıram. Ölçülər sizin üçün kritik deyilsə, dövrəni DIP versiyasında çörək lövhəsində yığa bilərsiniz. Çörək lövhəsi vəziyyətində cihazın yığılması sizə ən çox 15 dəqiqə çəkəcək. SD kart üçün icazə verilən təchizatı gərginliyi 2,7 ilə 3,6 volt arasındadır. Mikrokontroller də bu intervalda normal işləyir, ona görə də uyğun gələn komponentlərdən istifadə etməyə ehtiyac yoxdur. Bütün cihazın işini və 5 volt enerji təchizatı ilə yoxladım - hər şey yaxşı işlədi, amma bunu etməyi məsləhət görmürəm daimi əsas, çünki müxtəlif kartlar həddindən artıq gərginliyə fərqli reaksiya verə bilər. Mən adapterdən microSD kart sahibi kimi istifadə etdim, onu birbaşa kontaktlarına lehimlədim. Daha kiçik ölçülərə ehtiyacınız varsa, microSD üçün real kart sahibini istifadə etmək daha yaxşıdır.

Mikrokontrolörün proqram təminatını yandırmaq üçün SD kart üçün olduğu kimi eyni bağlayıcı istifadə olunur, buna görə proqramçının ona necə qoşulacağını düşünməli olacaqsınız (mən xüsusi bir adapter etdim).

Lövhə lehimləndikdən sonra mikrokontrolleri yandıra bilərsiniz.

Bitmiş cihazın kiçik qalereyası:




Sxemlə bağlı kiçik bir nüans.
Bir SD kartı kart sahibinə quraşdırarkən (kartı enerji mənbəyinə qoşmaqla) cərəyan dalğası yaranır və müvafiq olaraq dövrədə gərginlik azalır (görünür, hazırda kartda əhəmiyyətli imkanlar doldurulur). Dəyişiklik o qədər əhəmiyyətlidir ki, mikrokontroller sıfırlanır. Mən bunu kartın işə salınması proseduruna başlamaq üçün istifadə edirəm (kartın quraşdırılması mikrokontrolleri yenidən işə salır və proqram təminatının ilk işi kartı axtarmaq və işə salmaqdır). Bir kart quraşdırarkən (güclü enerji təchizatı və ya böyük hamarlaşdırıcı kondensatorlar) mikrokontrolleri sıfırlamırsınızsa, mikrokontrolleri əl ilə sıfırlamaq üçün dövrədə sıfırlama düyməsinə diqqət yetirməlisiniz (bu, "isti" etməyi planlaşdırırsınızsa. kartları dəyişdirin).

5 Cihazın işləməsi.

Yuxarıda yazdığım kimi, cihazla işləmək çox sadədir: düzgün adlandırılmış trekləri SD karta kopyalayın, kartı kart sahibinə daxil edin, cihaz avtomatik olaraq kartı tapacaq, yaşıl LED-i yandıracaq - bu qədər, cihaz trekləri ifa etməyə hazırdır. İndi sadəcə olaraq treki özünüzə uyğun olan şəkildə seçib ifa etməyə başlamalısınız.

5.1 Cihaz düymələri və onların hərəkətləri.

Cihazı mümkün qədər işlək hala gətirməyə çalışdım, buna görə də iş rejimi açarları üçün çoxlu mikrokontroller ayaqları istifadə olunur (bu, cihazı kirpiyə bənzədir :)). Hər hansı bir funksiyaya ehtiyacınız yoxdursa, ayağınızı "havada" "asılı" buraxın.
Fəaliyyətə keçid:
- "Canavar" - trekin səsləndirilməsini yavaşlatmağa (2 dəfə) imkan verir - aşağı səs effekti yaradır. Keçid "tez" işləyir - keçid zamanı sürət dəyişir;
- "Helium" - trekin oxunmasını sürətləndirir (1/3) - yüksək səs effekti yaradır. Keçid tez işləyir;
- “Təkrar et” Əgər bu keçid yerə qısaldılmışsa, seçilmiş trek sonsuz oxuyacaq (açar açılana qədər). Bu, məsələn, müəyyən bir səs fonu yaratmaq lazımdırsa, faydalı ola bilər - yağışın səsi, yanan yanğın, selin mırıltısı...;
- Oxumaq üçün treki başlatan "Seç / Oynat" düyməsi (aşağıdakı təsvir);
- "Yol seçin" - ifa olunan trekin nömrəsini təyin etmək (aşağıdakı təsvir);
- "Dir1 / Dir2" - səs sxemini seçin (aşağıdakı təsvir).

5.2 Oxumağa başlayın.

Müəyyən bir treki çalmağa başlamağın üç yolu var:
- UART vasitəsilə latın əlifbasının böyük hərfini göndərməklə, adın əvvəlində bu hərfi ehtiva edən faylın oxunması dərhal başlayır;
- “Select track” istifadə edildikdə fayl nömrəsi seçilir (binar kod 0001=”A”, 0010=”B” və s. 1 - ayaq yerə bağlıdır, 0 - “havada” “asılır”), sonra "Seç / Oynat" düyməsi oxutmaq üçün müvafiq faylı işə salacaq;
- "Yol seçin" (0000 - ayaqları "havada" "asmaq") istifadə edərək heç bir şey seçilməyibsə, "Seç / Oynat" düyməsini müəyyən sayda basaraq, müvafiq treki işə salırıq (1 dəfə = “A”, 2 dəfə =”B” və s.).

5.3 Səs sxemləri.

Çox faydalı xüsusiyyət iki səs sxemindən birini seçmək funksiyasıdır. Bu o deməkdir ki, “Dir1 / Dir2” açarı trekin səsləndiriləcəyi kartdakı qovluğu seçir.

Tətbiqlər çoxdur: rus və ingilis dillərində mesajlar (maarifləndirici oyuncaqlar), uşaq və böyüklərin səsləri, axan su və yanan od səsləri, pişik/it, yaxşı və pis polis :), sakitləşdirici/canlandırıcı səslər və bir dəstə s. oxşar variantlar.

Məsələn, sizin cihazınız kişi və qadın səsi ilə ünsiyyət qura bilmək üçün lazımdır. Bu belə həyata keçirilir:
- qadın və kişi versiyasında müvafiq olaraq iki mesaj dəsti yaradın;
- hər iki seçim üçün fayl nömrələnməsi eynidir. Unutmayın ki, cihaz fayl adında yalnız ilk hərfi “görür”, beləliklə adları özünüz üçün daha başa düşülən edə bilərsiniz, məsələn, “S_Waiting for command_male.wav” və “S_Waiting for command_female.wav” kifayət qədərdir. düzgün;
- kişi mesajları toplusunu “1” qovluğuna, qadınların mesajlarını isə “2” qovluğuna köçürün.
İndi "Dir1 / Dir2" açarının vəziyyətindən asılı olaraq, eyni əmr "kişi" və ya "qadın" qovluğundakı parçaları səsləndirəcəkdir.

5.4 Cihazın işinin göstəricisi.

Teeny2313-ün çox az ayaqları olduğundan və demək olar ki, hamısı açarlar üçün istifadə edildiyindən, mən normal göstəricini qurban verməli oldum və bunun müqabilində normal OLMAYAN bir şey əlavə etməli oldum. Fərqli iş rejimlərini göstərmək üçün iki LED-in qoşulduğu mikrokontrolörün yalnız bir ayağı istifadə olunur - qırmızı və yaşıl (və ya hansını seçsəniz). Cihazın müxtəlif iş rejimləri xüsusi rəng kodu ilə göstərilir:
- qırmızı LED yanıb-sönür - SD kart yoxdur və ya onun növü cihaz tərəfindən dəstəklənmir;
- qırmızı LED yanıb - SD kart dəstəklənir və uğurla işə salınıb, lakin kart FAT16 formatında formatlaşdırılmayıb;
- yaşıl LED yanıb - SD kart uğurla işə salındı, lazım olanı tapıldı fayl sistemi və cihaz treki çalmağa hazırdır - əmr gözləyir;
- yaşıl LED yanıb-sönür - cihaz mahnı oxuyur;
- yaşıl işıqlar yanır, qırmızı işıq qısa müddətə yanır, yaşıl işıq yenidən yanır - trek tapılmadı;
- yaşıl işıq yanır, qısa müddətə sönür və yenidən yaşıl olur - trek seçmə düyməsi sıxılır.

5.5 Sazlama məlumatı.

Problemli sahələri tapmağı asanlaşdırmaq üçün (cihaz işləmək istəmirsə) proqramda hər bir başlanğıc mərhələsini UART vasitəsilə mesajlarla təkrarladım. Hər uğurlu addımdan sonra müvafiq simvol UART-a göndərilir:
- “S” - (Start) mikrokontroller periferiyaları normal şəkildə işə salınır;
- “C” - (Card Init) SD kart normal olaraq işə salınıb və dəstəklənir;
- "F" - (FAT Başlanğıc) FAT sistemi dəstəklənir;
- “1” - (No 1 Dir) qovluq yoxdur “1” oxunuşu kök kataloqdan həyata keçiriləcək;
- “2” - (No 2 Dir) qovluq yoxdur “2” oxunuşu kök kataloqdan həyata keçiriləcək;
- “R” - (Hazır) cihaz tamamilə hazırdır - treki başlamaq üçün əmri gözləyir;
- Bundan əlavə, hər dəfə trek işə salındıqda trekin adının baş hərfi UART-a ötürülür.

Cihazlarınızı dublyaj etmək üçün 6 trek.

6.1 Treklərin çevrilməsi

Yuxarıdakı kitabxanada uyğun bir şey tapmadınızsa, o zaman İnternetdə lazımi musiqiləri əldə edə bilərsiniz (musiqiçilər və video redaktə üçün çoxlu xüsusi saytlar var, burada böyük səs kitabxanaları artıq toplanıb), oyun qurğularında ( tez-tez oyun səsləri treklərə bölünür və ayrı bir qovluğa qoyulur). Siz həmçinin filmlərdən və musiqi əsərlərindən səs effektlərini kəsə bilərsiniz. Tapılan musiqilər cihazın dəstəklədiyi formata çevrilməlidir. Nəzərinizə çatdırım ki, fayl formatı sıxılmamış WAV olmalıdır. 32000 Hz, 1 kanal, 8 bit (WAV PCM 8U)
İstənilən musiqi redaktoru bu formata çevirmək üçün uyğundur və ya sadəcə bir treki redaktə etmədən çevirmək lazımdırsa -

Nisbətən son istehsal illərinin bir çox məişət texnikası və sənaye avtomatlaşdırma cihazlarında mexaniki sayğaclar quraşdırılmışdır. Onlar konveyer lentində olan məhsullar, sarma maşınlarında məftillərin dönmələri və s.. Nasazlıq zamanı oxşar sayğac tapmaq asan deyil və ehtiyat hissələrinin olmaması səbəbindən təmir etmək mümkün deyil. Müəllif mexaniki sayğacın elektron sayğacla əvəz edilməsini təklif edir. Mexaniki olanı əvəz etmək üçün hazırlanmış elektron sayğac, aşağı və orta inteqrasiya dərəcəsi olan mikrosxemlər üzərində qurularsa (məsələn, K176, K561 seriyası) çox mürəkkəb olur. xüsusilə əks hesab lazımdırsa. Və enerji söndürüldükdə nəticəni saxlamaq üçün təmin etmək lazımdır ehtiyat batareya qidalanma.

Ancaq yalnız bir çip üzərində sayğac qura bilərsiniz - universal proqramlaşdırıla bilən mikrokontroller, bu da müxtəlifdir periferiya qurğuları və çox geniş spektrli problemləri həll etməyə qadirdir. Bir çox mikrokontroller xüsusi yaddaş sahəsinə malikdir - EEPROM. Ona yazılan məlumatlar (proqramın icrası zamanı daxil olmaqla), məsələn, cari hesablama nəticəsi enerji söndürüldükdən sonra da saxlanılır.

Təklif olunan sayğac Almel-in AVR ailəsindən olan Attiny2313 mikrokontrollerindən istifadə edir. Cihaz tərs hesablama həyata keçirir, nəticəni əhəmiyyətsizlərin ləğvi ilə göstərir

güc söndürüldükdə nəticəni EEPROM-da saxlayaraq dörd rəqəmli LED göstəricisində pətək. Təchizat gərginliyinin azalmasını vaxtında aşkar etmək üçün mikrokontrollerə quraşdırılmış analoq komparator istifadə olunur. Sayğac enerji söndürüldükdə hesablama nəticəsini xatırlayır, açıldıqda onu bərpa edir və mexaniki sayğac kimi, sıfırlama düyməsi ilə təchiz edilmişdir.

Sayğac dövrəsi şəkildə göstərilmişdir. HL1 LED göstəricisində hesablama nəticəsinin dinamik göstəricisini təşkil etmək üçün altı sətir port B (РВ2-РВ7) və beş sətir port D (PDO, PD1, PD4-PD6) istifadə olunur. VT1 və VT2 fototranzistorlarının kollektor yükləri mikrokontrollerdə quraşdırılmış və mikrokontrolörün müvafiq pinlərini onun enerji təchizatı dövrəsinə birləşdirən proqram təminatı ilə işə salınan rezistorlardır.

N sayma nəticəsinin bir artması, VD1 emissiya diodu ilə fototransistor VT1 arasındakı optik əlaqənin kəsildiyi anda baş verir ki, bu da mikrokontrolörün INT0 girişində artan səviyyə fərqi yaradır. Bu halda, INT1 girişindəki səviyyə aşağı olmalıdır, yəni VT2 fototransistoru VD2 emissiya diodu ilə işıqlandırılmalıdır. INT1 girişində artan diferensial və INT0 girişində aşağı səviyyədə nəticə bir azalacaq. Səviyyələrin digər birləşmələri və onların INT0 və INT1 girişlərindəki fərqləri hesablama nəticəsini dəyişmir.

9999-un maksimum dəyərinə çatdıqdan sonra sayma sıfırdan davam edir. Sıfır dəyərdən birini çıxarmaq 9999 nəticəsini verir. Geriyə saymağa ehtiyac yoxdursa, sayğacdan emitent diod VD2 və fototranzistor VT2-ni xaric edə və mikrokontrolörün INT1 girişini ümumi naqillə birləşdirə bilərsiniz. Say yalnız artmağa davam edəcək.

Artıq qeyd edildiyi kimi, tədarük gərginliyinin azalmasının detektoru mikrokontrollerə quraşdırılmış analoq komparatordur. O, rektifikatorun (diod körpüsü VD3) çıxışında qeyri-sabitləşmiş gərginliyi inteqrasiya olunmuş stabilizator DA1-in çıxışındakı stabilləşdirilmiş gərginliklə müqayisə edir. Proqram dövri olaraq komparatorun vəziyyətini yoxlayır. Sayğacı şəbəkədən ayırdıqdan sonra C1 rektifikator filtr kondansatöründə gərginlik düşür və stabilləşdirilmiş gərginlik bir müddət dəyişməz qalır. Rezistorlar R2-R4 aşağıdakı kimi seçilir. bu vəziyyətdə müqayisəçinin vəziyyəti tərsinə çevrilir. Bunu aşkar edərək, proqram elektrik enerjisinin söndürülməsi səbəbindən fəaliyyətini dayandırmazdan əvvəl, cari hesablama nəticəsini mikrokontrolörün EEPROM-a yazmağı bacarır. Növbəti dəfə onu yandırdığınız zaman proqram EERROM-da yazılmış nömrəni oxuyacaq və onu göstəricidə göstərəcək. Bu dəyərdən hesablama davam edəcək.

Mikrokontroller pinlərinin məhdud sayına görə sayğacı sıfırlayan SB1 düyməsini birləşdirmək üçün komparatorun (AIM) inverting analoq girişi və eyni zamanda “rəqəmsal” giriş kimi xidmət edən pin 13 istifadə edilmişdir. PB1. Gərginlik bölücü (rezistorlar R4, R5) burada mikrokontroller tərəfindən yüksək məntiqi olaraq qəbul edilən səviyyəni təyin edir.SB1 düyməsini basdığınız zaman aşağı olacaq. Bu, müqayisə cihazının vəziyyətinə təsir etməyəcək, çünki AIN0 girişindəki gərginlik hələ də AIN1-dəki gərginlikdən böyükdür.

SB1 düyməsi basıldıqda proqram göstəricinin bütün rəqəmlərində mənfi işarəsi göstərir və onu buraxdıqdan sonra sıfırdan saymağa başlayır. Düymə basılarkən sayğacın enerjisini söndürsəniz, cari nəticə EEPROM-a yazılmayacaq və orada saxlanan dəyər eyni qalacaq.

Proqram elə qurulmuşdur ki, onu digər göstəricilərlə (məsələn, ümumi katodlarla), müxtəlif naqilləri olan sayğaca asanlıqla uyğunlaşdırmaq olar. çap dövrə lövhəsi və s. İstifadə edərkən proqramın bir qədər korreksiyası tələb olunacaq kvars rezonatoru göstəriləndən 1 MHz-dən çox fərqlənən tezlikə.

Mənbə gərginliyi 15 V olduqda, ümumi naqil (pin 10) ilə müqayisədə mikrokontroller panelinin 12 və 13-cü pinlərindəki gərginliyi ölçün. Birincisi 4...4,5 V diapazonunda, ikincisi isə 3,5 V-dan çox, lakin birincidən az olmalıdır. Sonra, mənbə gərginliyi tədricən azalır. 9 ... 10 V-ə düşdükdə, 12 və 13-cü pinlərdə gərginlik dəyərlərindəki fərq sıfıra bərabər olmalıdır və sonra işarəni dəyişməlidir.

İndi proqramlaşdırılmış mikrokontrolleri panelə quraşdıra, transformatoru birləşdirə və ona elektrik gərginliyi tətbiq edə bilərsiniz. 1,5...2 saniyədən sonra SB1 düyməsini sıxmaq lazımdır. Sayğac göstəricisi 0 rəqəmini göstərəcək. Göstəricidə heç nə göstərilmirsə, mikrokontrolörün AIN0.AIN1 girişlərindəki gərginlik dəyərlərini yenidən yoxlayın. Birincisi ikincidən böyük olmalıdır.

Sayğac uğurla işə salındıqdan sonra, fototranzistorları IR şüalarına qeyri-şəffaf bir lövhə ilə növbə ilə kölgə salmaqla hesablamanın düzgünlüyünü yoxlamaq qalır. üçün daha böyük kontrast Göstəriciləri qırmızı üzvi şüşə filtrlə örtmək məsləhətdir.

Bu gün biz daha çox yararlanmağa çalışırıq sadə mikro nəzarətçi ATtiny2313 və ona simvolik bir bağlayın LCD displey, 16 simvoldan ibarət iki sətirdən ibarətdir.

Ekranı birləşdirəcəyik standart şəkildə 4 bitlik yol.

Birincisi, əlbəttə ki, mikrokontrollerdən başlayaq, çünki biz əvvəlki dərslərdən ekranla çox tanışıq.

Nəzarətçinin məlumat cədvəlini açaq ATtiny2313 və onun pinoutuna baxaq

Biz bunu görürük bu nəzarətçi iki növ hallarda mövcuddur, lakin DIP işində mənim əlimə gəldiyindən, işin bu xüsusi versiyasını nəzərdən keçirəcəyik və prinsipcə, görünüşdən başqa, ayaqların sayı çox fərqlənmir. eyni - 20-də.

Üzərində hər zaman işlədiyimiz və işləməyə davam edəcəyimiz ATMega8 nəzarətçisinin 28 ayağı ilə müqayisədə 20 ayaq olduğu üçün, buna uyğun olaraq, daha az imkanlar olacaq.

Prinsipcə, ATmega8-də olan hər şey buradadır, yeganə şey daha az port pəncələrinin olmasıdır. Ancaq qarşımızda duran vəzifə onu SPI avtobusu vasitəsilə başqa bir nəzarətçi ilə birləşdirməyə çalışmaq olduğundan, bu, bizi çox ruhdan salmır.

Bəzi başqa fərqlər də var, lakin onlar kiçikdir və lazım gəldikdə onlarla tanış olacağıq.

Gəlin belə bir sxemi birləşdirək (şəkili böyütmək üçün şəklin üzərinə klikləyin)

Displey D portunun sancaqlarına qoşulub. PD1 və PD2 idarəetmə girişlərinə, qalanları isə D4-D7 displey modulunun sancaqlarına qoşulub.

TINY2313_LCD adlı bir layihə yaradaq, ekranı Atmega8-ə qoşmaq üçün layihədən əsas moduldan başqa hər şeyi ona köçürük.

Təbii ki, bəzi şeylər yenidən düzəldilməlidir. Bunun üçün hansı ayağın nəyə bağlı olduğunu diqqətlə öyrənmək lazımdır. Ekranın E şini PD2-yə, RS şini isə PD1-ə qoşulub, ona görə də faylda dəyişiklik edək lcd.h

#müəyyənləşdirməke1PORTD|=0b0000 01 00 // E xəttini 1-ə təyin edin

#müəyyənləşdirməke0PORTD&=0b1111 10 11 // E xəttini 0-a təyin edin

#müəyyənləşdirməkrs1PORTD|=0b00000 01 0 // RS xəttini 1-ə təyin edin (məlumat)

#müəyyənləşdirməkrs0PORTD&=0b11111 10 1 // RS xəttini 0-a təyin edin (komanda)

Seçimdən də gördüyümüz kimi qalın hərflərlə, bizdə belə kəskin dəyişikliklər olmayıb.

İndi məlumat girişi. Burada PD3-PD6 ayaqlarından istifadə edirik, yəni Atmega8-ə qoşulma ilə müqayisədə onlar 1 bal sürüşdürülür, buna görə də faylda bir şeyi düzəldəcəyik. lcd.c funksiyasında yarımbayt göndər

PORTD&=0b 1 0000 111; // DB4-DB7 girişləri haqqında məlumatları silin, qalanını tək buraxın

Ancaq bu hamısı deyil. Əvvəllər ötürülən məlumatları 4-ə köçürdük, lakin indi yuxarıdakı dəyişikliklərə görə biz onu yalnız 3-ə köçürməli olacağıq. Buna görə də, eyni funksiyada biz də ilk sətri düzəldəcəyik.

c<<=3 ;

Bütün dəyişikliklər budur. Razılaşın, onlar o qədər də böyük deyillər! Bu, biz həmişə universal kod yazmağa və makro əvəzetmələrdən istifadə etməyə çalışmağımızla əldə edilir. Bir dəfə buna vaxt sərf etməsəydik, kitabxanamızın demək olar ki, bütün funksiyalarında kodu düzəltməli olardıq.

Əsas modulda biz D portunun işə salınmasına toxunmuruq, bütün modul 12-ci dərsdə olduğu kimi çıxış vəziyyətinə keçsin.

Gəlin layihəni yığmağa çalışaq və nəticəni əvvəlcə Proteus-da görək, çünki mən də bunun üçün bir layihə hazırlamışam, bu da Atmel Studio layihəsi ilə əlavə arxivdə olacaq.

Hər şey bizim üçün əla işləyir! Beləliklə, bir nəzarətçi üçün bir layihəni digərinə tez bir zamanda dəyişdirə bilərsiniz.

Proteus çox yaxşıdır, lakin real detallara baxmaq həmişə daha gözəldir. Bütün dövrə çörək lövhəsində yığılmışdı, çünki mən bu nəzarətçi üçün debug lövhəsi düzəltməmişəm və ya yığmamışam. Proqramçını bu kimi standart konnektor vasitəsilə birləşdirəcəyik

Bütün diaqram budur

Burada hər şey standartdır. RESET-ə çəkilən rezistor və s.

İndi kontrolleri avrdude-də yanıb-sönməzdən əvvəl nəzarətçini seçib onun fləş yaddaşını oxumalıyıq

Sonra FUSES sekmesine keçin və qoruyucuları düzgün quraşdırın. Kvars rezonatorumuz olmadığı üçün qoruyucuları bu şəkildə quraşdırırıq




Üst