مدارهای DIY در attiny2313. دکمه را به میکروکنترلر ATtiny2313 که یک برنامه ساده است وصل می کنیم. کامپایل و سیستم عامل برنامه در MK

نحوه مونتاژ یک مدار ساده، نحوه اتصال پروگرامر به میکروکنترلر ATtiny2313، نحوه نوشتن ساده ترین برنامهدر زبان C و نحوه فلش کردن میکروکنترلر ATtiny2313 با برنامه ما، همه اینها را در این مقاله خواهید یافت.

اول از همه به یک برنامه نویس نیاز داریم، برنامه نویس ها انواع مختلفی دارند، کدام برنامه نویس را انتخاب کنیم؟
برنامه نویس های معمولی هستند که در آنها باید یک میکروکنترلر را وارد کنید، آن را فلش کنید، میکروکنترلر را بردارید و سپس آن را در برد خود قرار دهید تا نتیجه را ببینید، و این دنباله باید در ابتدا صدها بار انجام شود، این گزینه در من نظر، راحت نیست.
میکروکنترلر ما ATtiny2313پشتیبانی از عملکرد ISP (برنامه نویسی درون سیستم) از طریق پورت SPI، این مورد برنامه نویسی درون مدار ISPبه نظر من راحت ترین و سریع ترین، زیرا ... بعد از هر آپدیت فریمور، نیازی به حذف میکروکنترلر از روی برد ما نیست؛ می توانید میکروکنترلر را صدها بار برنامه ریزی کنید و بلافاصله بدون اینکه برنامه نویس را از کامپیوتر و برد جدا کنید، نتیجه را پس از فلش میکروکنترلر، فرآیند رفع اشکال را مشاهده کنید. نرم افزارنصب یک دستگاه رادیویی آماتور به طور قابل توجهی ساده شده و زمان صرف شده برای آن کاهش می یابد.
شما می توانید یک برنامه نویس ISP درون مدار بسازید، تعداد زیادی در اینترنت وجود دارد مدارهای سادهچگونه این کار از طریق LPT انجام می شود، پورت COMمثلا یک برنامه نویس PonyProgمی توانید نمودارهایی در مورد نحوه ساخت آن در اینترنت پیدا کنید.

این مقاله کار با یک برنامه نویس ISP درون مدار برای میکروکنترلرها را مورد بحث قرار می دهد AVR (PX-400)از طریق پورت COM کار می کند.
اگر در رایانه خود پورت COM ندارید، به یک آداپتور نیز نیاز خواهید داشت پورت USBدر پورت COM نیز انواع مختلفی از این آداپتورها وجود دارد، من آداپتوری را که با آن کار کردم توصیه می کنم: برد تبدیل USB به پورت سریال UCON-232S
عکس برنامه نویس PX-400، آداپتور UCON-232S USB , برگه داده ATTiny2313

بیایید تمام جزئیات این طرح را با جزئیات بیشتری بررسی کنیم:
(در هر صورت، من تمام قطعات، برنامه نویس، آداپتور (از USB به پورت COM) را در chipdip.ru خریدم)

1 - سوکت برد PBD-20 2.54mm 2x10 مستقیم- من این کار را برای راحتی انجام دادم تا بتوانم سیگنال های پین های میکروکنترلر را آسان تر بررسی کنم؛ این نکته قابل انجام نیست.
2 - پانل DIP SCS-20 20 پین- پنل را به برد لحیم می کنیم تا در صورت نیاز امکان تعویض میکروکنترلر در برد وجود داشته باشد.
ATtiny2313-20PU، DIP20، MCU، 5V، 1K-Flash، 12MHz- میکروکنترلر را وارد پنل DIP می کنیم.
3 - کریستال کوارتز 4000 مگاهرتز (قطع شده) HC-49S- کریستال کوارتز 4 مگاهرتز
4 - خازن سرامیکی K10-17B imp. 22pF NPO،5٪،0805- دو خازن سرامیکی 22pF
5 - 78M05 (+5V، 0.5A) TO220- یک تثبیت کننده ولتاژ 5 ولت میکروکنترلر را با توان تثبیت شده بیش از 5 + ولت تامین می کند، در این مورد من 4.4 ولت دریافت کردم که کافی است.
6 - دوشاخه برق NP-116 1.3x3.4x9.5mm MP-331 (7-0026c)- دوشاخه برق به دوشاخه قدیمی لحیم شده بود شارژراز جانب تلفن همراه DC 5.7V/800mA
7 - سوکت برق DS-213 روی برد- منبع تغذیه دوشاخه NP-116 برای اتصال آسان برق کجاست
8 - IDC-10MS (BH-10)، دوشاخه مستقیم- دوشاخه برای اتصال یک برنامه نویس ISP در مدار
9 - مقاومت ثابت 0.25 وات 150 اهم- سه مقاومت 150 اهم روی پایه های MISO، SCK، MOSI
10 - مقاومت ثابت 0.25 وات 47 اهم- یک مقاومت 47 اهم در هر پایه RESET
11 - دکمه تاکت h=5mm، TC-0103 (TS-A2PS-130)- دکمه تنظیم مجدد RESET، پس از فشار دادن دکمه، برنامه در میکروکنترلر از ابتدا شروع می شود، دکمه نمی تواند ایجاد شود.
12 - LED سبز d=3mm, 2.5V, 2mA - عملکرد یک نشانگر را انجام می دهد، این مورد انجام نشد.
13 - مقاومت ثابت 0.25 وات 110 اهم- یک مقاومت برای LED تا 2 ولت روی LED وجود داشته باشد، این مرحله قابل حذف است
14 - دو سیم متصل به ال ای دی، برای بررسی سیگنال های پین های میکروکنترلر، این مرحله انجام نشد.
15 - تخته نان چاپ شده Dip-RM 100x100mm

نقاط 3 و 4 به عنوان یک واحد کار می کنند، مانند یک مولد ساعت خارجی، این نقاط را می توان حذف کرد، اگر دقت و پایداری نوسان ساز داخلی RC را درخواست نکنید، نوسان ساز RC داخلی حدود 10 درصد خطا دارد. و دقت ممکن است تحت تأثیر تغییر دما قرار گیرد.

بنابراین شما دانلود و نصب کرده اید Atmel Studio :
راه اندازی کنیم Atmel Studioو با چشمک زدن LED یک برنامه ساده به زبان C بنویسید:
کلیک کنید: پروژه جدید... \ AVR GCC \ C \ C پروژه اجرایی
پوشه ای را که در آن پروژه ذخیره شود و نام پروژه، به عنوان مثال Test1 را مشخص کنید و روی OK کلیک کنید.
از لیست، میکروکنترلر ATtiny2313 خود را انتخاب کرده و روی OK کلیک کنید.
ما هر چیزی را که در پنجره ظاهر می شود پاک می کنیم و کد برنامه خود را در زیر قرار می دهیم:

#define F_CPU 4000000L //فرکانس کوارتز خارجی ما 4 مگاهرتز را مشخص کنید
#عبارتند از
#عبارتند از
int main (void)
{
//تنظیم تمام پین های PORTB به عنوان خروجی
DDRB=0xFF;//ثبت جهت انتقال اطلاعات (1-خروجی، 0-ورودی)
در حالی که (1)
{
//Data Register PORTB (برای خروجی اطلاعات استفاده می شود)
PORTB=0b00000001;//ما 1 تا پورت 12 MK PB0 را تامین می کنیم - LED را روشن کنید
PORTB=0b00000000;//اعمال 0 به پورت 12 MK PB0 - LED را خاموش کنید
_delay_ms(1000);//تأخیر 1 ثانیه.
}
}

به منو بروید Build\Configuration Manager\Active Solution Configuration\
انتخاب کنید رهایی، مطبوعات بستن
این کار را انجام دادیم تا بتوانیم یک پوشه در پروژه داشته باشیم رهایی، که در ادامه در مورد آن صحبت خواهم کرد.

کلیک F7، آماده است، برنامه ما کامپایل شده است!
برای فلش کردن فریمور میکروکنترلر ATtiny2313 فقط به یک فایل با پسوند نیاز داریم HEX
در پوشه پروژه ما قرار دارد: ...
لطفا به فایل توجه کنید Test1.hexفقط آن را از پوشه بردارید رهایی !
گیج نشوید، زیرا پوشه اشکال زداییفایل هم هست Test1.hex، اما این فایل همچنان حاوی است اشکال زدایی اطلاعاتو به همین دلیل نمی توانید با این فایل فلش کنید. معمولا اتفاق می افتد سایز بزرگو در حافظه MK نمی گنجد.

ما فایل .hex را پیدا کردیم، اکنون به برنامه ای برای فلش میکروکنترلر ATtiny2313 نیاز داریم، از این قبیل برنامه ها زیاد است، اما ما از برنامه استفاده خواهیم کرد: Avr-Osp II
دانلود:

پروگرامر را به مدار خود وصل می کنیم و مطمئن شوید که برق مدار را تامین می کنیم!

برنامه را راه اندازی کنید Avr-Osp II، مسیر فایل را در قسمت FLASH مشخص کنید... \Test1\Test1\Release\Test1.hex، کادرهای موجود در برنامه را علامت بزنید و دکمه را فشار دهید برنامههمین، میکروکنترلر ATtiny2313 فلش شد!

مزیت برنامه نویس های ISP درون مدار چیست؟حالا بدون اینکه سیم ها را از مدار خود جدا کنید می توانید تغییراتی در برنامه ایجاد کنید و همانطور که در بالا توضیح داده شد میکروکنترلر را فلش کنید و بلافاصله نتیجه را مشاهده کنید.

لطفا سوالات و نظرات خود را در انجمن ما ارسال کنید

معماری AVR RISC:

RISC (رایانه مجموعه دستورالعمل کاهش یافته). این معماری دارد مجموعه بزرگدستورالعمل ها که اکثر آنها در 1 چرخه ماشینی اجرا می شوند. بنابراین در مقایسه با میکروکنترلرهای قبلی مبتنی بر معماری CISC (به عنوان مثال MCS51)، میکروکنترلرهای RISC 12 برابر سریعتر هستند.

یا اگر سطح معینی از عملکرد را مبنا قرار دهیم، پس اجرا کنیم این شرایطمیکروکنترلرهای مبتنی بر RISC (Attiny2313) به فرکانس کلاک 12 برابر کمتر ژنراتور نیاز دارند که منجر به کاهش قابل توجه مصرف برق می شود. در این راستا امکان طراحی فراهم می شود دستگاه های مختلفدر Attiny2313، با استفاده از انرژی باتری.

دستگاه ذخیره سازی عملیاتی (RAM) و حافظه غیر فرار داده ها و برنامه ها:

  • 2 کیلوبایت حافظه برنامه فلش قابل برنامه ریزی که می تواند 10000 تکرار نوشتن/پاک کردن را ارائه دهد.
  • 128 بایت حافظه داده قابل نوشتن EEPROM که می تواند 100000 تکرار نوشتن/پاک کردن را ارائه دهد.
  • 128 بایت حافظه SRAM (رم فقط خواندنی).
  • می توان از این تابع برای محافظت از کد برنامه و داده های EEPROM استفاده کرد.

خواص جانبی:

  1. میکروکنترلر Attiny2313مجهز به تایمر شمار هشت بیتی با پیش مقیاس کننده جداگانه نصب شده با حداکثر ضریب 256.
  2. همچنین یک تایمر شمار شانزده بیتی با مدار پیش مقیاس کننده، ضبط و مقایسه جداگانه وجود دارد. تایمر ساعت است - شمارنده می تواند متفاوت باشد منبع خارجیسیگنال، و از داخلی.
  3. دو کانال حالت عملیاتی مدولاسیون سریع PWM و PWM با اصلاح فاز وجود دارد.
  4. مقایسه کننده آنالوگ داخلی
  5. تایمر Watchdog (قابل برنامه ریزی) با اسیلاتور داخلی.
  6. رابط جهانی سریال (USI).

شاخص های فنی ویژه Attiny2313:


  • بیکار- حالت آماده به کار. در این حالت فقط پردازنده مرکزی کار نمی کند. بیکار بر عملکرد SPI، مقایسه کننده آنالوگ، مبدل A/D، تایمر شمارنده، نگهبان یا سیستم وقفه تأثیری نمی گذارد. در واقع، فقط همگام سازی هسته را متوقف می کند پردازنده مرکزیو فلش مموری میکروکنترلر Attiny2313 با یک وقفه خارجی یا داخلی از حالت Idle به حالت عادی باز می گردد.
  • خاموش کردن- مقرون به صرفه ترین حالت، که در آن میکروکنترلر Attiny2313 در واقع از مصرف برق خاموش می شود. در این حالت، مولد ساعت متوقف می شود و تمام تجهیزات جانبی خاموش می شوند. فقط ماژول پردازش وقفه از یک منبع خارجی فعال باقی می ماند. هنگامی که یک وقفه تشخیص داده می شود، میکروکنترلر Attiny2313 از Power-down خارج شده و به حالت عادی باز می گردد.
  • آماده به کار– میکروکنترلر با استفاده از دستور SLEE به حالت آماده به کار مصرف انرژی سوئیچ می کند. این شبیه خاموش شدن است، تنها تفاوت این است که ساعت به کار خود ادامه می دهد.

پورت های ورودی-خروجی میکروکنترلر Attiny2313:

میکروکنترلر دارای 18 پایه ورودی/خروجی است که می توان آنها را بر اساس نیازهای طراحی برنامه ریزی کرد دستگاه خاص. بافرهای خروجی این پورت ها می توانند بار نسبتا بالایی را تحمل کنند.

  • پورت A (PA2 - PA0) - 3 بیت. پورت ورودی/خروجی دوطرفه با مقاومت های کششی قابل برنامه ریزی.
  • پورت B (PB7 - PB0) - 8 بیت. پورت ورودی/خروجی دوطرفه با مقاومت های کششی قابل برنامه ریزی.
  • پورت D (PD6 - PD0) - 7 بیت. پورت ورودی/خروجی دوطرفه با مقاومت های کششی قابل برنامه ریزی.

محدوده ولتاژ تغذیه:

میکروکنترلر با ولتاژ تغذیه از 1.8 تا 5.5 ولت با موفقیت کار می کند. مصرف جریان به حالت عملکرد کنترلر بستگی دارد:

حالت فعال:

  • 20 µA در فرکانس کلاک 32 کیلوهرتز و ولتاژ تغذیه 1.8 ولت.
  • 300 µA در فرکانس ساعت 1 مگاهرتز و ولتاژ تغذیه 1.8 ولت.

حالت ذخیره انرژی:

  • 0.5 µA در ولتاژ تغذیه 1.8 ولت.

(3.6 مگابایت، دانلود شده: 5934)

دستگاه این مقاله با کارت های SD کار می کند. موضوع قدیمی و کاملا هک شده است، اما استفاده از کارت های SD ارزش نوشتن دوباره در مورد آن را دارد.
به طور کلی، کارت های SD (SDC، SD Card) مزایای بسیاری دارند و برای استفاده در پروژه های کوچک تعبیه شده بسیار ساده و راحت هستند. تعدادی از عوامل در این امر نقش دارند:
- یک رابط بسیار ساده برای تعامل با کارت (اجرا شده از طریق SPI)؛
- سرعت کار بالا (میکروکنترلر قادر به انتقال داده ها از کارت SD با سرعت نزدیک به 10 مگابیت بر ثانیه است).
- مصرف انرژی کم (به معنای واقعی کلمه چند میلی آمپر - نه بیشتر)؛
- اندازه های کوچک؛
- در دسترس بودن و هزینه کم
کارت های SD عملاً هیچ اشکالی ندارند (به جز، شاید، برای روش اولیه سازی آنها :)).

1. معرفی.

من با دستگاهی که در این مقاله توضیح داده شده است تماس گرفتم. کمی پرمدعا ؛)، اما از نامش مشخص می شود که این یک وسیله سخنگو است. برای بیان پروژه های شما در نظر گرفته شده است. به طور خلاصه، به صورت زیر عمل می کند: فایل های صوتی شماره گذاری شده روی کارت SD ضبط می شوند که دستگاه به دستور شما پخش می کند. دامنه کاربرد بسیار گسترده است - سیستم های هشدار، اسباب بازی ها، روبات ها، خانه هوشمندو غیره. ابعاد دستگاه بسیار کم است (می تواند کوچکتر باشد، اما من عمدا میکروکنترلر ATtiny2313 را انتخاب کردم که ارزان تر و راحت تر است). من سعی کردم تاکید اصلی را بر سادگی و حداکثر کارایی داشته باشم.
با نگاهی به آینده، بیایید ببینیم در پایان چه اتفاقی باید بیفتد:

آیا چنین وسیله ای مفید است؟ پس بیایید جمع کنیم!

2 کارت حافظه

این دستگاه از کارت حافظه SD استفاده می کند. من قبلاً در مورد دلایل انتخاب نوشته ام ، فقط اضافه می کنم که کارت های SD تقریباً به یک کارت حافظه استاندارد تبدیل می شوند. دستگاه های تلفن همراه. حتی سازندگانی که با تعصب نوع کارت های حافظه خود را تبلیغ می کنند/در حال تبلیغ هستند کم کم شروع به استفاده از کارت های SD می کنند. دلیل چنین محبوبیتی احتمالاً قیمت پایین این کارت ها بوده است. برای دستگاه های آماتور، کارت SD در واقع تنها کارت مناسب برای استفاده است و دلیل این امر رابط کاربری ساده برای کار با آن است.

کارت SD راه درازی را در تکامل طی کرده است و چندین گزینه برای اجرای آن دارد (MMC - به عنوان گزینه کارت SD، SD ver1، SD ver2، SDHC، SDXC). روش برقراری ارتباط با کارت برای همه انواع کارت ها ساده و جهانی است، اما راه اندازی آن (راه اندازی اولیه کارت) یک فرآیند نسبتا مبهم و گیج کننده است، با "تکان دادن" کارت، ارسال دستورات "ساختگی" خالی. و چیزهای نامفهوم دیگر (خلاصه رقصیدن با تنبور لازم است:)). مشخصات پروتکل SDC خود فرآیند اولیه سازی را با جزئیات کاملاً توضیح می دهد، که قابل درک است؛ تولیدکنندگان کارت های زیادی وجود دارند که هر کدام سخت افزار خاص خود را دارند و ویژگی های خاص خود را دارند... من در چه چیزی هستم؟ - من سعی کردم روش اولیه سازی را تا حد امکان جهانی کنم، اما برای این واقعیت آماده باشید که برخی از کارت ها کار نمی کنند. بنابراین، اگر چیزی با دستگاه شما خوب پیش نمی رود، کارت حافظه دیگری را امتحان کنید - ممکن است دلیل آن باشد.

که در این دستگاهکارت های SD تا اندازه 2 گیگابایت پشتیبانی می شوند. همه چیز بالاتر (SDHC و SDXC) پشتیبانی نمی شود.
برای دستگاه فرقی نمی‌کند که کارت چه فرمی باشد (SD، MiniSD یا MicroSD)، اما باید آن را به درستی وصل کنید، طبق پین‌آوت کارت.

3 سیستم فایل

این دستگاه از کارت هایی با سیستم فایل FAT16 استفاده می کند. این سیستم به طور ایده‌آل برای دستگاه‌هایی مانند ما مناسب است، زیرا پیاده‌سازی آن ساده و آسان است (FAT12 و FAT32، اصولاً پیاده‌سازی آن‌ها نیز دشوار نیست، اما به دلیل عدم وجود مزیت در مقایسه با FAT16، غیرعملی است).

هیچ الزام خاصی برای قالب بندی کارت وجود ندارد - می توان آن را در هر دستگاه موجود فرمت کرد. استاندارد فرمت کردن ویندوزبرای این اهداف کاملا مناسب است.

برای اینکه دستگاه به درستی کار کند، فایل های صوتی واقع در کارت SD باید شرایط خاصی را داشته باشند:
الف) فرمت فایل باید WAV فشرده نشده باشد.
پارامترهای فایل به شرح زیر است:
- نرخ بیت - فرکانس نمونه برداری (فرکانس) - 32000 هرتز.
- تعداد کانال (کانال) - 1 (مونو)؛
- حجم نمونه - 8 بیت.
کاهش احتمالی دیگر WAV PCM 8U است

ب) نام فایل باید به شکل خاصی باشد. برای اینکه دستگاه بداند کدام فایل اول، دوم، سوم و غیره است. اولین کاراکتر نام فایل باید یک حرف بزرگ از الفبای لاتین باشد (بقیه نام، مانند پسوند فایل، نادیده گرفته می شود).
به عنوان مثال، نام فایل زیر صحیح است:
A_Lai_dog.wav - اولین آهنگ
ب-این آهنگ دوم است.wav - آهنگ دوم
با هشدار! خطا!.wav - آهنگ سوم

ج) برای استفاده از امکانات اضافی دستگاه، فایل ها را می توان در دو پوشه به نام های «1» و «2» قرار داد. دستگاه دارای یک سوئیچ برای انتخاب پوشه فعال است، یعنی همان فرمان برای شروع پخش می تواند آهنگ ها را از پوشه "1" یا "2" پخش کند، بسته به سطح ورودی سوئیچینگ (نوعی انتخاب طرح صدا). - یک چیز بسیار مفید!) . اگر یکی از پوشه ها (یا هر دو) وجود نداشته باشد، فایل ها از پوشه اصلی پخش می شوند.

شما می توانید هر فایل دیگری را همراه با تراک های صوتی ذخیره کنید، به شرطی که با نام آنها تداخل ایجاد نکند (بهتر است آنها را در یک فهرست جداگانه قرار دهید، سپس مجبور نخواهید بود به نحوه نامگذاری آنها توجه کنید).

د) به دلیل مقدار کمی SRAM در ATtiny2313، ایجاد بافر برای پیش خواندن داده ها غیرممکن است، بنابراین داده های فایل مستقیماً برای پخش خروجی می شوند. بر این اساس، هیچ راهی (زمان کافی وجود ندارد) برای جستجوی قطعات فایل با استفاده از جدول FAT وجود ندارد. به عبارت دیگر فایل های نوشته شده روی کارت نباید تکه تکه شوند.

در واقع، این یک مشکل بزرگ نیست، زیرا هر یک سیستم عاملهمیشه سعی می کند فایل را به صورت یک قطعه کامل بنویسد و تا زمانی که روی کارت فضای خالی دارید، هرگونه اقدامی با فایل ها (حذف، کپی، تغییر نام) بر یکپارچگی آنها تأثیر نمی گذارد. اگر کارت بسیار کوچکی دارید یا کارت بزرگی را پر کرده اید، برای اطمینان از صحت فایل ها، کافی است آن ها را در HDDکامپیوتر، کارت را فرمت کنید و فایل ها را برگردانید.

4 طرح. تخته مدار چاپی.

نمودار دستگاه تا حد امکان ساده است. در واقع به غیر از خود میکروکنترلر و کارت SD چیزی در آن وجود ندارد. برای خودم یک علامت برای قطعات SMD ساختم، زیرا قصد دارم از این دستگاه در مکانی با ابعاد محدود استفاده کنم. اگر ابعاد برای شما حیاتی نیست، می توانید مدار را روی تخته نان در نسخه DIP مونتاژ کنید. در مورد برد برد، مونتاژ دستگاه حداکثر 15 دقیقه زمان می برد. ولتاژ تغذیه مجاز برای کارت SD از 2.7 تا 3.6 ولت است. میکروکنترلر نیز در این بازه به طور معمول کار می کند، بنابراین نیازی به استفاده از اجزای منطبق نیست. من عملکرد کل دستگاه و با منبع تغذیه 5 ولت را بررسی کردم - همه چیز خوب کار کرد، اما من انجام این کار را توصیه نمی کنم مبنای پایدار، از آنجایی که کارت های مختلف ممکن است واکنش متفاوتی به اضافه ولتاژ نشان دهند. من از یک آداپتور به عنوان دارنده کارت microSD استفاده کردم و آن را مستقیماً به مخاطبینش لحیم کردم. اگر به ابعاد کوچکتر نیاز دارید، بهتر است از یک کارت حافظه واقعی برای microSD استفاده کنید.

برای فلش کردن سفت‌افزار میکروکنترلر، از همان رابط کارت SD استفاده می‌شود، بنابراین باید به نحوه اتصال برنامه‌نویس به آن فکر کنید (من مخصوصاً یک آداپتور درست کردم).

پس از لحیم کاری برد، می توانید میکروکنترلر را فلش کنید.

یک گالری کوچک از دستگاه تمام شده:




یک تفاوت کوچک در مورد طرح.
هنگام نصب یک کارت SD در یک نگهدارنده کارت (اتصال کارت به منبع برق)، یک موج جریان ایجاد می شود و بر این اساس، افت ولتاژ در مدار ایجاد می شود (به نظر می رسد در این زمان ظرفیت های قابل توجهی در کارت شارژ می شود). این کاهش آنقدر قابل توجه است که میکروکنترلر ریست می شود. من از این برای شروع مراحل اولیه سازی کارت استفاده می کنم (نصب کارت میکروکنترلر را مجدداً راه اندازی می کند و اولین کاری که سیستم عامل انجام می دهد جستجو و تنظیم اولیه کارت است). اگر هنگام نصب کارت (یک منبع تغذیه قدرتمند یا خازن های صاف کننده بزرگ) میکروکنترلر را تنظیم مجدد نکنید، باید از دکمه تنظیم مجدد در مدار برای تنظیم مجدد دستی میکروکنترلر مراقبت کنید (این در صورتی است که قصد دارید "گرم" کنید. تعویض کارت).

5 عملکرد دستگاه

همانطور که در بالا نوشتم، کار با دستگاه بسیار ساده است: آهنگ های نامگذاری شده را به درستی در کارت SD کپی کنید، کارت را در نگهدارنده کارت قرار دهید، دستگاه به طور خودکار کارت را پیدا می کند، LED سبز را روشن می کند - همین است، دستگاه آماده برای پخش آهنگ ها اکنون فقط باید آهنگ را به روشی که مناسب شماست انتخاب کرده و شروع به پخش کنید.

5.1 دکمه های دستگاه و اقدامات آنها.

من سعی کردم دستگاه را تا حد ممکن کاربردی کنم، بنابراین تعداد زیادی از پایه های میکروکنترلر برای سوئیچ های حالت کار استفاده می شود (این باعث می شود دستگاه شبیه جوجه تیغی شود :)). اگر به هیچ عملکردی نیاز ندارید، فقط پای خود را در «هوا» «آویزان» بگذارید.
عملکرد سوئیچ:
- "Monster" - به شما امکان می دهد سرعت پخش آهنگ را (2 بار) کاهش دهید - ایجاد جلوه صدای کم. سوئیچ "در حال پرواز" کار می کند - سرعت با تعویض تغییر می کند.
- "هلیوم" - پخش آهنگ را سرعت می بخشد (1/3) - ایجاد جلوه صدای بلند. سوئیچ در پرواز کار می کند.
- "تکرار" اگر این سوئیچ به زمین متصل شود، آهنگ انتخاب شده به طور بی پایان پخش می شود (تا زمانی که سوئیچ باز شود). این می تواند مفید باشد، برای مثال، اگر شما نیاز به ایجاد یک پس زمینه صوتی خاص دارید - صدای باران، آتش سوزان، زمزمه یک جریان ....
- دکمه "انتخاب / پخش" که آهنگ را برای پخش شروع می کند (توضیحات زیر).
- "انتخاب آهنگ" - تنظیم تعداد آهنگ در حال پخش (توضیحات زیر).
- "Dir1 / Dir2" - یک طرح صدا را انتخاب کنید (توضیحات زیر).

5.2 شروع پخش.

سه راه برای شروع پخش یک آهنگ خاص وجود دارد:
- با ارسال یک حرف بزرگ از الفبای لاتین از طریق UART، پخش فایل حاوی این حرف در ابتدای نام بلافاصله شروع می شود.
- در صورت استفاده از "انتخاب آهنگ"، شماره فایل انتخاب می شود (کد باینری 0001=”A”، 0010=”B، و غیره. سپس دکمه "انتخاب / پخش" فایل مربوطه را برای پخش شروع می کند.
- اگر هیچ چیز با استفاده از "انتخاب آهنگ" انتخاب نشده است (0000 - پاها "آویزان" در "هوا"))، سپس با فشار دادن دکمه "انتخاب / پخش" تعداد معینی بار، آهنگ مربوطه را راه اندازی می کنیم (1 بار = "A"، 2 بار = "B"، و غیره).

5.3 طرح های صوتی.

یک ویژگی بسیار مفید، عملکرد انتخاب یکی از دو طرح صوتی است. این به این معنی است که سوئیچ "Dir1 / Dir2" پوشه روی کارت را انتخاب می کند که آهنگ از آن پخش می شود.

برنامه های زیادی وجود دارد: پیام ها به زبان روسی و انگلیسی (اسباب بازی های آموزشی)، صدای کودکان و بزرگسالان، سر و صدای جاری شدن آب و آتش سوزی، گربه/سگ، پلیس خوب و بد :)، صداهای آرامش بخش/نشاط آور و یک سری دیگر. گزینه های مشابه

به عنوان مثال، شما نیاز دارید که دستگاه شما بتواند با صدای مرد و زن ارتباط برقرار کند. به این صورت پیاده سازی می شود:
- ایجاد دو مجموعه پیام به ترتیب در نسخه زن و مرد.
- شماره گذاری فایل برای هر دو گزینه یکسان است. فراموش نکنید که دستگاه فقط حرف اول نام فایل را می بیند، بنابراین می توانید نام ها را برای خود قابل درک تر کنید، به عنوان مثال، "S_Waiting for command_male.wav" و "S_Waiting for command_female.wav" کاملاً هستند. درست؛
- مجموعه پیام‌های مردانه را در پوشه «1» و پیام‌های زنانه را در پوشه «2» کپی کنید.
اکنون، بسته به وضعیت سوئیچ "Dir1 / Dir2"، همان فرمان آهنگ ها را از پوشه "male" یا "female" پخش می کند.

5.4 نشان دهنده عملکرد دستگاه.

از آنجایی که Teeny2313 پاهای بسیار کمی دارد و تقریباً همه آنها برای سوئیچ ها استفاده می شوند، مجبور شدم یک نشانگر عادی را قربانی کنم و در عوض چیزی غیر عادی را وصل کنم. برای نشان دادن حالت های مختلف عملکرد، فقط یک پایه میکروکنترلر استفاده می شود که دو LED به آن متصل هستند - قرمز و سبز (یا هر کدام که ترجیح می دهید). حالت های مختلف عملکرد دستگاه با یک کد رنگ خاص نشان داده می شود:
- LED قرمز چشمک می زند - کارت SD وجود ندارد یا نوع آن توسط دستگاه پشتیبانی نمی شود.
- LED قرمز روشن است - کارت SD پشتیبانی می شود و با موفقیت راه اندازی شد، اما کارت در FAT16 فرمت نشده است.
- LED سبز روشن است - کارت SD با موفقیت راه اندازی شد، مورد مورد نیاز پیدا شد سیستم فایلو دستگاه برای پخش آهنگ آماده است - منتظر دستور است.
- LED سبز چشمک می زند - دستگاه در حال پخش آهنگ است.
- چراغ سبز روشن می شود، چراغ قرمز به طور خلاصه روشن می شود، چراغ سبز دوباره روشن می شود - مسیر یافت نشد.
- سبز روشن می شود، برای مدت کوتاهی خاموش می شود و دوباره سبز می شود - کلید انتخاب آهنگ فشار داده می شود.

5.5 اشکال زدایی اطلاعات

برای سهولت یافتن مناطق مشکل دار (اگر دستگاه نمی خواهد کار کند)، هر مرحله اولیه سازی را در برنامه با پیام هایی از طریق UART کپی کردم. پس از هر مرحله موفق، کاراکتر مربوطه به UART ارسال می شود:
- "S" - (شروع) تجهیزات جانبی میکروکنترلر به طور معمول مقداردهی اولیه می شوند.
- "C" - (Card Init) کارت SD به طور معمول مقداردهی اولیه می شود و پشتیبانی می شود.
- "F" - (FAT Init) سیستم چربیپشتیبانی؛
- "1" - (No 1 Dir) هیچ پوشه ای وجود ندارد که خواندن "1" از دایرکتوری ریشه انجام می شود.
- "2" - (No 2 Dir) هیچ پوشه ای وجود ندارد که خواندن "2" از دایرکتوری ریشه انجام می شود.
- "R" - (آماده) دستگاه کاملاً آماده است - در انتظار فرمان برای شروع مسیر.
- علاوه بر این، هر بار که یک آهنگ شروع می شود، حرف بزرگ نام آهنگ به UART منتقل می شود.

6 آهنگ برای دوبله دستگاه های شما.

6.1 تبدیل آهنگ ها

اگر چیزی مناسب در کتابخانه بالا پیدا نکردید، می توانید آهنگ های لازم را در اینترنت دریافت کنید (سایت های ویژه زیادی برای نوازندگان و ویرایش ویدیو وجود دارد که قبلاً کتابخانه های بزرگی از صداها جمع آوری شده است)، در نصب بازی ( اغلب صداهای گیم پلی به آهنگ ها تقسیم می شوند و در یک پوشه جداگانه قرار می گیرند). همچنین می‌توانید جلوه‌های صوتی را از فیلم‌ها و آهنگ‌های ساخته شده برش دهید. آهنگ های یافت شده باید به فرمتی تبدیل شوند که دستگاه از آن پشتیبانی می کند. اجازه دهید یادآوری کنم که فرمت فایل باید WAV فشرده نشده باشد. 32000 هرتز، 1 کانال، 8 بیت (WAV PCM 8U)
هر ویرایشگر موسیقی برای تبدیل به این فرمت مناسب است، یا اگر فقط نیاز به تبدیل یک آهنگ بدون ویرایش آن دارید -

بسیاری از لوازم خانگی و دستگاه‌های اتوماسیون صنعتی سال‌های تولید نسبتاً اخیر دارای شمارنده‌های مکانیکی هستند. آنها محصولات روی تسمه نقاله، چرخش سیم در ماشین های سیم پیچ و غیره هستند. در صورت خرابی، یافتن کنتور مشابه آسان نیست و به دلیل کمبود قطعات یدکی، تعمیر آن غیرممکن است. نویسنده پیشنهاد می کند که شمارنده مکانیکی را با یک الکترونیکی جایگزین کنید. یک شمارنده الکترونیکی که برای جایگزینی مکانیکی ساخته شده است، اگر بر روی ریز مدارهایی با درجه یکپارچگی کم و متوسط ​​ساخته شده باشد (به عنوان مثال، سری K176، K561) بسیار پیچیده است. به خصوص اگر به یک حساب معکوس نیاز باشد. و برای صرفه جویی در نتیجه هنگام خاموش شدن برق، باید ارائه شود باتری پشتیبانتغذیه.

اما شما می توانید یک شمارنده فقط بر روی یک تراشه بسازید - یک میکروکنترلر قابل برنامه ریزی جهانی که شامل انواع مختلفی است لوازم جانبیو قادر به حل طیف وسیعی از مسائل است. بسیاری از میکروکنترلرها دارای یک منطقه حافظه ویژه - EEPROM هستند. داده های نوشته شده در آن (از جمله در حین اجرای برنامه)، به عنوان مثال، نتیجه شمارش فعلی، حتی پس از قطع برق ذخیره می شود.

شمارنده پیشنهادی از میکروکنترلر Attiny2313 از خانواده AVR از Almel استفاده می کند. دستگاه شمارش معکوس را اجرا می کند و نتیجه را با لغو ناچیز نمایش می دهد

روی یک نشانگر LED چهار رقمی قرار دهید و نتیجه را در زمان خاموش شدن برق در EEPROM ذخیره کنید. یک مقایسه کننده آنالوگ تعبیه شده در میکروکنترلر برای تشخیص به موقع کاهش ولتاژ تغذیه استفاده می شود. شمارنده هنگام خاموش شدن برق، نتیجه شمارش را به خاطر می آورد، هنگام روشن شدن آن را بازیابی می کند، و مانند شمارنده مکانیکی، به دکمه تنظیم مجدد مجهز است.

مدار شمارنده در شکل نشان داده شده است. شش خط پورت B (РВ2-РВ7) و پنج خط پورت D (PDO، PD1، PD4-PD6) برای سازماندهی نشانگر دینامیکی نتیجه شمارش در نشانگر LED HL1 استفاده می شود. بارهای جمع کننده فوتوترانزیستورهای VT1 و VT2 مقاومت هایی هستند که در میکروکنترلر تعبیه شده و توسط نرم افزاری فعال می شوند که پایه های مربوطه میکروکنترلر را به مدار منبع تغذیه آن متصل می کند.

در لحظه ای که اتصال نوری بین دیود ساطع کننده VD1 و فوتوترانزیستور VT1 قطع می شود، یک افزایش در نتیجه شمارش N به میزان یک اتفاق می افتد، که باعث ایجاد اختلاف سطح فزاینده در ورودی INT0 میکروکنترلر می شود. در این حالت، سطح ورودی INT1 باید کم باشد، یعنی فوتوترانزیستور VT2 باید توسط دیود ساطع کننده VD2 روشن شود. در لحظه افزایش دیفرانسیل در ورودی INT1 و سطح پایین در ورودی INT0، نتیجه یک کاهش می یابد. سایر ترکیبات سطوح و تفاوت آنها در ورودی های INT0 و INT1 نتیجه شمارش را تغییر نمی دهد.

پس از رسیدن به حداکثر مقدار 9999، شمارش از صفر ادامه می یابد. با کم کردن یک از مقدار صفر، نتیجه 9999 به دست می آید. اگر نیازی به شمارش معکوس نیست، می توانید دیود ساطع کننده VD2 و فوتوترانزیستور VT2 را از شمارنده حذف کنید و ورودی INT1 میکروکنترلر را به سیم مشترک متصل کنید. تعداد فقط به افزایش ادامه خواهد داد.

همانطور که قبلا ذکر شد، آشکارساز کاهش ولتاژ تغذیه، مقایسه کننده آنالوگ است که در میکروکنترلر تعبیه شده است. این ولتاژ تثبیت نشده در خروجی یکسو کننده (پل دیود VD3) را با ولتاژ تثبیت شده در خروجی تثبیت کننده یکپارچه DA1 مقایسه می کند. برنامه به صورت دوره ای وضعیت مقایسه کننده را بررسی می کند. پس از قطع کنتور از شبکه، ولتاژ روی خازن فیلتر یکسو کننده C1 کاهش می یابد و ولتاژ تثبیت شده برای مدتی بدون تغییر باقی می ماند. مقاومت های R2-R4 به شرح زیر انتخاب می شوند. که حالت مقایسه کننده در این وضعیت معکوس است. با تشخیص این موضوع، برنامه موفق می شود حتی قبل از اینکه به دلیل قطع شدن برق کار خود را متوقف کند، نتیجه شمارش جریان را روی EEPROM میکروکنترلر بنویسد. دفعه بعد که آن را روشن می کنید، برنامه عدد نوشته شده در EEROM را می خواند و روی نشانگر نمایش می دهد. شمارش از این مقدار ادامه خواهد یافت.

به دلیل محدود بودن تعداد پایه های میکروکنترلر، برای اتصال دکمه SB1 که شمارنده را ریست می کند، از پایه 13 استفاده شده است که به عنوان ورودی آنالوگ معکوس مقایسه کننده (AIM) و همزمان به عنوان ورودی «دیجیتال» عمل می کند. PB1. تقسیم‌کننده ولتاژ (مقاومت‌های R4، R5) در اینجا سطح درک شده توسط میکروکنترلر را به‌عنوان منطقی بالا تنظیم می‌کند، وقتی دکمه SB1 را فشار دهید، پایین می‌شود. این بر وضعیت مقایسه کننده تأثیری نخواهد گذاشت، زیرا ولتاژ ورودی AIN0 هنوز بیشتر از ولتاژ AIN1 است.

با فشردن دکمه SB1 برنامه علامت منفی را در تمام ارقام نشانگر نمایش می دهد و پس از رها کردن آن از صفر شروع به شمارش می کند. اگر در حین فشردن دکمه، برق کنتور را خاموش کنید، نتیجه فعلی روی EEPROM نوشته نمی شود و مقدار ذخیره شده در آنجا ثابت می ماند.

این برنامه به گونه ای طراحی شده است که با سیم کشی های مختلف به راحتی می توان آن را با یک متر با نشانگرهای دیگر (مثلاً با کاتدهای رایج) تطبیق داد. تخته مدار چاپیو غیره. در هنگام استفاده به اصلاح جزئی برنامه نیاز خواهد بود تشدید کننده کوارتزبه فرکانسی که بیش از 1 مگاهرتز با فرکانس مشخص شده متفاوت است.

هنگامی که ولتاژ منبع 15 ولت است، ولتاژ را در پایه های 12 و 13 پنل میکروکنترلر نسبت به سیم مشترک (پایه 10) اندازه گیری کنید. اولی باید در محدوده 4...4.5 ولت باشد و دومی باید بیشتر از 3.5 ولت باشد اما کمتر از اولی. در مرحله بعد، ولتاژ منبع به تدریج کاهش می یابد. هنگامی که به 9 ... 10 ولت کاهش می یابد، اختلاف مقادیر ولتاژ در پایه های 12 و 13 باید صفر شود و سپس علامت تغییر کند.

اکنون می توانید میکروکنترلر برنامه ریزی شده را در پنل نصب کنید، ترانسفورماتور را وصل کرده و ولتاژ شبکه را به آن اعمال کنید. بعد از 1.5...2 ثانیه باید دکمه SB1 را فشار دهید. نشانگر شمارنده عدد 0 را نشان می دهد. اگر چیزی روی نشانگر نمایش داده نشد، مجدداً مقادیر ولتاژ را در ورودی های AIN0.AIN1 میکروکنترلر بررسی کنید. اولی باید بزرگتر از دومی باشد.

هنگامی که شمارنده با موفقیت راه اندازی شد، تنها چیزی که باقی می ماند این است که صحت شمارش را با سایه زدن متناوب فتوترانزیستورها با صفحه ای مات نسبت به پرتوهای IR بررسی کنید. برای کنتراست بیشترتوصیه می شود نشانگرها را با یک فیلتر شیشه ای آلی قرمز بپوشانید.

امروز سعی می کنیم از مزایای بیشتری بهره ببریم میکروکنترلر ساده ATtiny2313و نمادی را به آن وصل کنید صفحه نمایش ال سی دی، شامل دو خط 16 کاراکتری است.

ما صفحه نمایش را وصل می کنیم به صورت استانداردراه 4 بیتی

اول، بیایید، البته، با میکروکنترلر شروع کنیم، زیرا ما قبلاً با صفحه نمایش در درس های قبلی بسیار آشنا هستیم.

بیایید دیتاشیت کنترلر را باز کنیم ATtiny2313و بیایید پینوت آن را ببینیم

ما آن را می بینیم این کنترلردر دو نوع مورد وجود دارد، اما از آنجایی که در یک کیس DIP به دست من رسید، این نسخه خاص از کیس را در نظر خواهیم گرفت و اصولاً تفاوت زیادی ندارند، مگر در ظاهر، زیرا تعداد پاها برابر است. همان - در 20.

از آنجایی که 20 پایه در مقایسه با 28 پایه کنترلر ATMega8 وجود دارد که ما در تمام مدت روی آنها کار کرده ایم و به کار ادامه خواهیم داد، بنابراین، بر این اساس، امکانات کمتری نیز وجود خواهد داشت.

در اصل، هر چیزی که ATmega8 داشت اینجاست، تنها چیزی که وجود دارد این است که پنجه های پورت کمتری وجود دارد. اما از آنجایی که وظیفه پیش روی ما این است که سعی کنیم آن را از طریق گذرگاه SPI با یک کنترلر دیگر وصل کنیم، این ما را زیاد افسرده نمی کند.

تفاوت های دیگری نیز وجود دارد، اما آنها جزئی هستند و در صورت نیاز با آنها آشنا خواهیم شد.

بیایید یک مدار به این شکل جمع کنیم (برای بزرگ شدن تصویر روی تصویر کلیک کنید)

صفحه نمایش به پایه های پورت D متصل است. PD1 و PD2 به ورودی های کنترل و بقیه به پایه های ماژول نمایشگر D4-D7 متصل می شوند.

بیایید یک پروژه با نام TINY2313_LCD ایجاد کنیم، همه چیز را به جز ماژول اصلی پروژه برای اتصال نمایشگر به Atmega8 به آن منتقل کنیم.

البته بعضی چیزها باید اصلاح شود. برای انجام این کار، باید به دقت مطالعه کنید که کدام پا به چه چیزی متصل است. گذرگاه E نمایشگر به PD2 و گذرگاه RS به PD1 متصل است، بنابراین اجازه دهید تغییراتی در فایل ایجاد کنیم. ال سی دی

#تعريف كردنe1پورت|=0b0000 01 00 // خط E را روی 1 قرار دهید

#تعريف كردنe0پورت&=0b1111 10 11 // خط E را روی 0 تنظیم کنید

#تعريف كردنrs1پورت|=0b00000 01 0 // خط RS را روی 1 تنظیم کنید (داده)

#تعريف كردنrs0پورت&=0b11111 10 1 // خط RS را روی 0 تنظیم کنید (فرمان)

همانطور که از انتخاب می بینیم با حروف درشت، ما چنین تغییرات شدیدی نداشته ایم.

اکنون ورودی اطلاعات در اینجا از پایه های PD3-PD6 استفاده می کنیم، یعنی نسبت به اتصال به Atmega8 1 امتیاز جابه جا می شوند، بنابراین ما نیز چیزی را در فایل اصلاح می کنیم. lcd.cدر عمل sendhalfbyte

پورت&=0b 1 0000 111; // اطلاعات ورودی های DB4-DB7 را پاک کنید، بقیه را به حال خود رها کنید

اما این همه ماجرا نیست. قبلاً داده‌های ارسالی را 4 جابجا می‌کردیم، اما اکنون با توجه به تغییرات فوق، فقط باید آن را 3 تغییر دهیم. بنابراین، در همان تابع، همان خط اول را نیز اصلاح خواهیم کرد.

ج<<=3 ;

این همه تغییرات است. موافقم، آنها آنقدرها هم عالی نیستند! این با این واقعیت حاصل می شود که ما همیشه سعی می کنیم کد جهانی بنویسیم و از جایگزینی های ماکرو استفاده کنیم. اگر در یک زمان برای این موضوع وقت صرف نکرده بودیم، باید کد را در تقریباً تمام عملکردهای کتابخانه خود تصحیح می کردیم.

در ماژول اصلی، مقدار دهی اولیه پورت D را لمس نمی کنیم، اجازه دهید کل ماژول به حالت خروجی برود، مانند درس 12.

بیایید سعی کنیم پروژه را مونتاژ کنیم و ابتدا نتیجه را در پروتئوس ببینیم، زیرا من یک پروژه برای آن ساختم که با پروژه Atmel Studio در آرشیو ضمیمه نیز خواهد بود.

همه چیز برای ما عالی کار می کند! به این ترتیب می توانید به سرعت پروژه ای را برای یک کنترلر برای کنترلر دیگر بازسازی کنید.

Proteus بسیار خوب است، اما نگاه کردن به جزئیات واقعی همیشه زیباتر است. کل مدار روی یک تخته نان مونتاژ شده بود، زیرا من یک برد اشکال زدایی برای این کنترلر درست نکردم یا مونتاژ نکردم. ما برنامه نویس را از طریق یک کانکتور استاندارد مانند این متصل می کنیم

در اینجا کل نمودار است

اینجا همه چیز استاندارد است. مقاومت بالاکش به حالت RESET و غیره

حال قبل از فلش کردن کنترلر در avrdude باید کنترلر را انتخاب کرده و فلش مموری آن را بخوانیم

سپس به تب FUSES رفته و فیوزها را به درستی تنظیم کنید. از آنجایی که ما تشدید کننده کوارتز نداریم، فیوزها را به این ترتیب نصب می کنیم




بالا