دوستان امیدوارم حال همتون عالی باشه. در این آموزش، نگاهی به معرفی دقیق Atmega8 خواهیم داشت. ATmega8 یک میکروکنترلر با پردازشگر هشت بیتی است که توسط Atmel (طراح و سازنده مواد نیمه هادی های مختلف است) ساخته شده است. این میکروکنترلر بر اساس معماری RISC مخفف (Reduced Instruction Set Computing) و با تکنولوژی CMOS طراحی شده است که از 131 دستورالعمل قدرتمند تشکیل شده است. دستورات عمدتاً در یک سیکل اجرا می شوند. حداکثر فرکانسی که این میکرو کار می کند 16 مگاهرتز است. این میکروکنترلر دارای یک رابط 28 پایه ای با بسته PDIP است. حافظه برنامه 8 کیلو بایت به صورت Flash است در حالی که RAM و EEPROM به ترتیب 1K و 512 بایت هستند.
این تراشه توسط کمپانی های تولید کننده میکروکنترلرهای PIC و AVR تولید می شود و عمدتاً در سیستمهای اتوماسیون داخلی و صنعتی استفاده میشوند. این ماژول ها می توانند تعدادی عملکرد را بر روی یک تراشه کوچک انجام دهند و از هزینه های زیاد و خرید قطعات خارجی برای چیدمان اتوماسیون در پروژه مربوطه جلوگیری کنند.
مقدمه ای بر ATmega8
ATmega8 یک میکروکنترلرAVR 28 پایه ای و دارای ریزپردازنده 8 بیتی AVR بر اساس معماری RISC است که توسط Microchip طراحی شده و عمدتاً در سیستمهای یکپارچه و پروژههای اتوماسیون صنعتی استفاده میشود.
این قطعه در سه نوع بسته بندی معروف به نامهای PDIP، MLF و TQFP ارائه میشود که در آن اولی دارای 28 پین است و دو تای دیگر با 32 پین در هر ماژول عرضه میشوند.
حافظه برنامه (فلش مموری) 8 کیلوبایت است که برای ذخیره کد برنامه نویسی و تنظیمات دائمی استفاده می شود.
Atmega8 با یک حافظه رم 1 کیلوبایتی عرضه می شود، این یک حافظه فرار است و با راه اندازی مجدد به روز می شود.
همچنین دارای حافظه EEPROM 512 بایتی است که یک حافظه نیمه فرار است.
سایر ویژگیها عبارتند از: تایمر در زمان روشن شدن، تایمر سگ نگهبان، تشخیص کاهش سطح ولتاژ Brown out، برنامهنویسی سریال درون مدار (ISP) و پنج حالت خواب.
نقطه تمایز این ماژول با میکروکنترلر PIC مجموعه دستورالعمل های آن است، بطوریکه در AVR اکثر دستورالعمل ها در یک سیکل ساعت اجرا می شوند و با 32 ثبات همه منظوره همراه است، در حالی که در میکروکنترلر PIC به تعدادی سیکل ساعت در هر دستورالعمل نیاز است و با رجیستر W ارائه می شود.
ماژول ADC 10 بیتی به میکروی AVR اضافه شده است که نقش حیاتی را برای رابط سنسور ایفا می کند و در مجموع شامل 6 کانال برای بسته PDIP و 8 کانال برای دو نوع دیگر بسته بندی است.
پروتکل های ارتباطی مانند SPI، I2C و USART به این میکرو اضافه شده است که به طور گسترده برای برقراری ارتباط با دستگاه های خارجی استفاده می شود.
ویژگی های کلیدی ATmega8
جدول زیر ویژگی های اصلی ATmega8 را نشان می دهد.
Atmega8 Key Features | ||||
No. of Pins | 28 | |||
CPU | 8-Bit AVR | |||
Operating Voltage | 2.7 to 5.5 V | |||
Program Memory | 8K | |||
Program Memory Type | Flash | |||
RAM | 1K Bytes | |||
EEPROM | 512 Bytes | |||
ADC Number of ADC Channels | 10-Bit 6 in PDIP, 8 in TQFP and QFN | |||
Comparator | 1 | |||
PWM Channels | 3 | |||
Oscillator | up to 16 MHz | |||
Timer (3) | 16-Bit Timer (1) 8-Bit Timer (2) | |||
Packages (3) | PDIP (28-Pins) TQFP (32-Pins) QFN (32) | |||
Power Up Timer | Yes | |||
I/O Pins | 23 | |||
SPI | Yes | |||
I2C | Yes | |||
Watchdog Timer | Yes | |||
Brownout Detection (BOD) | Yes | |||
USART | Yes | |||
Sleep Modes | 5 | |||
Minimum Operating Temperature | -55 C | |||
Maximum Operating Temperature | 125 C |
توصیف پایه های ATmega8
شکل زیر پایه بندی ATmega8 را نشان می دهد.
ATmega8 در سه بسته معروف بهنامهای PDIP، MLF و TQFP عرضه میشود که اولی برای پروژههای نمونه استفاده میشود، در حالی که دو بسته دیگر برای دستگاههای صنعتی و الکترونیکی استفاده میشوند.
جدول زیر شرح کامل هر پین را نشان می دهد که به شما کمک می کند تا عملکرد اصلی مربوط به هر پایه را بررسی کنید.
توصیف پایه بندی ATmega8 | ||||
1 | PC6 RESET PCINT14 | I/O Pin RESET will be generated by keeping this pin LOW for longer than the minimum pulse length Interrupt | ||
2 | PD0 RXD PCINT16 | I/O Pin Serial Receive Pin (USART) Interrupt | ||
3 | PD1 TXD PCINT17 | I/O Pin Serial Transmit Pin (USART)Interrupt | ||
4 | PD2 INT0 PCINT18 | I/O Pin External Interrupt Interrupt | ||
5 | PD3 INT1 OC2B PCINT19 | I/O Pin External Interrupt Dedicated Pin for Timer (PWM Channel) Interrupt | ||
6 | PD4 T0 XCK PCINT20 | I/O Pin T0 ( Timer0 External Counter Input) XCK ( USART External Clock I/O) Interrupt | ||
7 | VCC | Voltage Supply | ||
8 | GND | Ground Pin | ||
9 | PB6 OSC1 XTAL1 PCINT6 | I/O Pin Oscillator Input Pin Interrupt | ||
10 | PB7 OSC2 XTAL2 PCINT7 | I/O Pin Oscillator Output Pin Interrupt | ||
11 | PD5 T1 OC0B PCINT21 | I/O Pin PinT1 ( Timer0 External Counter Input) Dedicated Pin for Timer (PWM Channel) Interrupt | ||
12 | PD6 AIN0 OC0A PCINT22 | I/O PinAnalog Comparator Positive Dedicated Pin for Timer (PWM Channel) Interrupt | ||
13 | PD7 AIN1 PCINT23 | I/O Pin Analog Comparator Negative Interrupt | ||
14 | PB0 ICP1 CLKO PCINT0 | I/O Pin In Circuit Serial Programming Clock Interrupt | ||
15 | PB1 OC1A PCINT1 | I/O Pin Dedicated Pin for Timer (PWM Channel) Interrupt | ||
16 | PB2 SS OC1B PCINT2 | I/O Pin SPI Slave Select Input. When the controller acts as a slave, this pin is LOW Dedicated Pin for Timer (PWM Channel) Interrupt | ||
17 | PB3 MOSI OC2A PCINT3 | I/O Pin MOSI (Master Output Slave Input) for SPI Communication. The data is received by this pin when the controller acts as a slave Dedicated Pin for Timer Interrupt | ||
18 | PB4 MISO PCINT4 | I/O Pin MISO (Master Input Slave Output) for SPI communication. When the controller acts as a slave, the data is sent by a controller to master through this pin Interrupt | ||
19 | PB5 SCK PCINT5 | I/O Pin SCK (SPI Bus Serial Clock). This clock is shared between the controller and other devices for data transfer Interrupt | ||
20 | AVCC | Voltage Supply Pin for ADC | ||
21 | AREF | Voltage Reference | ||
22 | GND | Ground Pin | ||
23 | PC0 ADC0 PCINT8 | I/O Pin Analog Channel 0 Interrupt | ||
24 | PC1 ADC1 PCINT9 | I/O Pin Analog Channel 1 Interrupt | ||
25 | PC2 ADC2 PCINT10 | I/O Pin Analog Channel 2 Interrupt | ||
26 | PC3 ADC3 PCINT11 | I/O Pin Analog Channel 3 Interrupt | ||
27 | PC4 ADC4 SDA PCINT12 | I/O Pin Analog Channel 4 Serial Data (I2C) Interrupt | ||
28 | PC5 ADC5 SCL PCINT13 | I/O Pin Analog Channel 5 Serial Clock (I2C) Interrupt |
عملکرد ATmega8
در زیر توابع اصلی مربوط به این ماژول کوچک آورده شده است.
تایمر
Atmega8 دارای سه تایمر است که دو تایمر 8 بیتی و یکی تایمر 16 بیتی است. این تایمرها را می توان به دو صورت استفاده کرد، یعنی تایمر و همچنین شمارنده که در آن از تایمر برای ایجاد تاخیر در هر عملکرد در حال اجرا استفاده می شود، عملکردهای داخلی کنترلر را کنترل می کند و چرخه دستورالعمل را افزایش می دهد، در حالی که کانتر برای شمارش استفاده می شود. با لبه بالا و پایین ورودی به پایه افزایش می یابد و عمدتاً برای شمارش وقایع خارجی استفاده می شود. به غیر از این تایمرها، دو تایمر دیگر در میکروکنترلر گنجانده شده است:
تایمرهای راه اندازی نوسان ساز
تایمر راه اندازی تغذیه
تایمر راه اندازی نوسانگر برای پایدار کردن نوسان ساز کریستالی با تنظیم مجدد کنترلر استفاده می شود. و زمانی که دستگاه را روشن می کنید، تایمر راه اندازی تغذیه یک تأخیر جزئی ایجاد می کند و به تثبیت برق به منظور تولید سیگنال های برق با فواصل متوالی کمک می کند.
تعداد حالت های خواب
پنج حالت خواب در دستگاه گنجانده شده است که به صرفه جویی در مصرف انرژی کمک می کند. این حالت ها عبارتند از:
ذخیره انرژی power safe
خاموش کردن Power down
بیکار Idle
کاهش نویز ADC ADC Noise Reduction
آماده به کار Standby
تشخیص کاهش سطح ولتاژ تغذیه (BOD) Brown-Out Detection
BOD که با نام BOR (Brown Out Reset) نیز شناخته می شود، برای تنظیم مجدد ماژول هنگامی که Vcc (تغذیه ولتاژ) به زیر ولتاژ آستانه برود، استفاده می شود. توجه به این نکته ضروری است که تایمر پاور باید برای ایجاد تاخیر و کمک به بازگرداندن دستگاه از عملکرد BOD فعال باشد. در این حالت، محدودههای ولتاژ متعددی برای محافظت از ماژول پس از کاهش برق در خط تغذیه ولتاژ ایجاد میشود.
ارتباطات SPI
ATmega8 دارای یک رابط جانبی سریال (SPI) است - یک ماژول ارتباطی که به برقراری ارتباط بین میکروکنترلر و سایر دستگاههای جانبی مانند شیفت رجیستر، کارتهای SD و سنسورها کمک میکند. این رابط شامل یک ساعت و خطوط داده جداگانه با افزودن یک خط انتخابی برای انتخاب دستگاه مربوطه برای ارتباط است.
دو پایه مورد استفاده برای ارتباط SPI به شرح زیر است:
MOSI (ورودی اصلی خروجی Slave)
MISO (خروجی اصلی ورودی Slave)
پایه MOSI زمانی داده ها را دریافت می کند که کنترلر به عنوان یک slave عمل می کند. و MISO نقش حیاتی در ارسال داده توسط کنترلر دارد.
تایمر سگ نگهبان
ATmega8 دارای یک تایمر نگهبان داخلی است که اگر برنامه در حال اجرا در حین کامپایل کردن قطع شود یا در حلقه بی نهایت گیر کند، کنترلر را بازنشانی می کند. تایمر سگ نگهبان چیزی نیست جز یک تایمر شمارش معکوس.
اینتراپت (وقفه)
وقفه به یک فراخوانی اضطراری اشاره می کند که عملکرد اصلی برنامه را تا زمانی که دستور مورد نیاز اجرا شود در حالت تعلیق قرار می دهد. پس از فراخوانی و اجرای وقفه، کنترلر به برنامه اصلی بر می گردد.
ارتباط I2C
پروتکل I2C برای اتصال دستگاه های کم سرعت مانند مبدل های ADC و DAC با میکروکنترلرها استفاده می شود.
این یک ارتباط دو سیمه است که همراه است با:
ساعت سریال (SCL)
داده های سریال (SDA)
SCL یک سیگنال ساعت است که انتقال داده ها را بین دستگاه ها هماهنگ می کند و توسط دستگاه اصلی تولید می شود، در حالی که SDA برای حمل داده های مورد نیاز استفاده می شود.
رابط حافظه ATmega8
فضای حافظه در کنترلر مظهر نقشه حافظه خطی و منظم است. این ماژول AVR دارای معماری هاروارد است که حافظه های جداگانه ای را برای داده ها و برنامه ها در خود جای می دهد.
خط لوله منفرد برای اجرای دستورالعمل ها در حافظه برنامه استفاده می شود - حافظه فلش قابل برنامه ریزی - که در آن دستور بعدی فراخوانی می شود و سپس دستور بعدی اجرا می شود که به اجرای دستورالعمل ها در هر سیکل ساعت کمک می کند.
رجیستر فایل دسترسی سریع دارای رجیسترهای کار با هدف کلی 32 × 8 بیتی است که می توان با چرخه ساعت تکی که به انجام عملیات ALU (واحد منطق حسابی) در جایی که نتیجه در فایل Register ذخیره می شود، به آن دسترسی داشت.
حافظه ورودی/خروجی را میتوان به روشهای مختلف به روش مستقیم یا با استفاده از مکانهای فضایی دادهای که فایل Register، 0x20 – 0x5F را پوشش میدهند، دسترسی داشت.
حافظه برنامه (ROM)
حافظه برنامه دارای فضای حافظه حدود 8K بایت است و می تواند دستورالعمل ها را در هر سیکل ساعت انجام دهد.
این حافظهاطلاعات را به طور دائم ذخیره می کند و به منبع تغذیه بستگی ندارد و به طور گسترده با نام ROM یا Non-Volatile Memory شناخته می شود.
آدرس حافظه برنامه می تواند به دستورالعمل های 16 یا 32 بیتی دسترسی داشته باشد.
برنامه فلش به دو بخش شامل بخش برنامه کاربردی و بخش برنامه بوت لودر تقسیم می شود.
حافظه داده (RAM)
حافظه داده با فضای حافظه در حدود 1K (1024 بایت) همراه است. می توان از طریق پنج حالت آدرس دهی مختلف در معماری AVR به نام های Direct، Indirect، Indirect with Displacement، Indirect with Pre-Decrement و Indirect with Post-increment به آن دسترسی داشت.
سه رجیستر آدرس X، Y و Z قادر به افزایش و کاهش با فواصل منظم با حالت های آدرس دهی غیر مستقیم هستند.
ماژول وقفه منعطف، رجیسترهای کنترلی را در خود جای می دهد که بیشتر حاوی بیت فعال کننده وقفه سراسری در ثبت وضعیت هستند. همه این وقفه ها شامل جدول برداری وقفه با بردار وقفه هستند که در آن اولی به موقعیت بردار وقفه بستگی دارد و با یکدیگر نسبت معکوس دارند.
ماژول ALU که به سه تابع اصلی معروف به توابع مستقیم، حسابی و بیتی تقسیم میشود، ارتباط مستقیمی با 32 رجیستر همه منظوره در یک سیکل ساعت دارد.
کامپایلرهای ATmega8
اگر به تازگی با میکروکنترلر آشنا هستید، ممکن است در مورد کامپایلری که می توانید برای نوشتن و کامپایل کردن کد در کنترلر AVR خود استفاده کنید، کمی شک داشته باشید. من برخی از کامپایلرهای پایه را ترکیب کرده ام که برخی از آنها از نظر کارایی بهتر از بقیه هستند. اگرچه نسخههای رایگان ممکن است فاقد برخی ویژگیها باشند، اما توصیه میشود که بهعنوان یک تازهکار شروع کنید تا تجربهای عملی با کنترلر AVR داشته باشید.
کامپایلر IAR بهترین کامپایلر برای AVR است. اگرچه گران است و دارای یک رابط بسیار حرفه ای است.
GCC گزینه خوبی برای AVR است که با لینوکس و ویندوز کار می کند. رابط کاربری کمی پیچیده است.
ImageCraft گزینه مناسب دیگری برای شروع است، اما فاقد برخی از ویژگی های رابط کاربری گرافیکی مانند ویرایشگر و مدیریت پروژه است که ممکن است در هنگام اجرای کد مشکل ایجاد کند.
CodeVision همراه با CodeWizard است و بسیار مقرون به صرفه است.
رابط ATmega8 با آردوینو
ATmega8 را می توان برای توسعه پروژه تعبیه شده با آردوینو متصل کرد. شکل زیر رابط ATmega8 با آردوینو را نشان می دهد.
دیاگرام بلوک داخلی ATmega8
یک بلوک دیاگرام به شما کمک می کند تا از نحوه اتصال و عملکرد عملکردها و اجزای اصلی در داخل دستگاه مطلع شوید.
شکل زیر بلوک دیاگرام ATmega8 را نشان می دهد:
ATmega8 یک میکروکنترلر کم مصرف CMOS AVR است که عمدتاً مبتنی بر معماری RISC است. با اجرای دستورات قدرتمند در یک سیکل ساعت، ATmega8 قادر است دستورالعمل های قدرتمندی را با استفاده از 1MIPS در هر مگاهرتز در یک سیکل ساعت انجام و اجرا کند که به شدت به بهینه سازی مصرف انرژی کمک می کند.
پروژه ها و کاربردهای ATmega8
مورد استفاده در سیستم های یکپارچه و روباتیک
به طور گسترده ای در پروژه های دانشجویی استفاده می شود
سیستم امنیتی خانه
برای طراحی کوادکوپتر
اتوماسیون صنعتی
دیدگاه خود را بنویسید