سایت تخصصی کامپیوتر و شبکه
(جدیدترین اخبار، مقالات و آموزش‌ها در زمینه فناوری اطلاعات | خرید و فروش تجهیزات شبکه)
میکرو کنترلر چیست؟ نویسنده: مهندس عبدالهی پور - یکشنبه ٢۳ اسفند ۱۳۸۸

http://dl.parsbook.org/server1/archive/09216073709.JPG

قطعه ای که این روزها دارد جای خود را در خیلی از وسایل الکتریکی باز میکند .از تلفن گرفته تا موبایل از ماوس لیزری که الان دستتان روی آن است و دارین باهاش کامپیوتر رو کنترل میکنید تا هر وسیله ای که بتوان پیچیدگی رو در اون دید میتونید یک میکروکنترلر رو ببینید .


 

کلمه میکروکنترلر:

این کلمه از دو کلمه 1- میکرو  2-کنترلر     تشکیل شده 

 1-میکرو : میدونین که این یک واحد یونانی است و برابر با 10 به توان منفی 6 متر است. یعنی یک ملیونیوم متر واحده خیلی کوچیکیه نه....ولی واحدهای خیلی کوچیکتر از این هم داریم که در الکترونیک مورد استفاده قرار میگیرند در قسمتهای بعدی توضیحیهاتی راجع به این واحد ها و موارد استفاده آنها داده میشه.

 2-کنترلر : که همه معنی و مفهومشو میدونین . یعنی کنترل کننده به تعبیری یعنی "مغز " البته بدون تفکر فقط دستوراتی که به اون داده میشه به نحو احسن انجام میده.

حالا چرا این کلمات ؟

به نظر من کلمه میکرو به دو منظور استفاده شده منظور اول و مهم  سرعت عمل میکروکنترلر است که میتواند تا یک ملیونیوم ثانیه باشد و دستوارتی که به اون میدیم با این سرعت انجام بده به همین خاطر واژه میکرو رو به اون اختصاص دادن البته معنی دوم آن شاید کوچیکی این قطعه باشد که تا یک ملیونیوم متر کوچیک شده شاید باور کردنی نباشه ولی در یک تراشه ممکنه بیش از یک ملیون تراتزیستور به کار رفته باشه. این کلمه وقتی اهمیتش کامل میشه که با واژه کنترلر عجین بشه تا معنیش کامل بشود .

 حالا نحوه انجام دادن کار میکروکنترلر را به صورت کلی بررسی میکنیم : 

تا حالا همه شما با ماشین حساب کار کردین تا حالا به نحوه کار کردنش فکر کردین شما اطلاعاتتون را که همون عملیات ریاضی هست به وسیله صفحه کلید به اون میدید بعد ماشین حساب این اطلاعات رو بر مبنای دستوراتی که قبلا به اون داده شده پردازش میکند و جواب را رویLCD نمایش میدهد. در واقع یک میکروکنترلر برنامه ریزی شده به عنوان مغز ماشین حساب این اطلاعات یا داده رو از صفحه کلید میگیره روشون پردازش انجام میده و بعد بر روی LCD  نمایش میده.

کار میکروکنترلر دقیقا مشابه این است میکرو کنترلر بر مبنای یک سری ورودی که به اون داده میشه مثلا این ورودی از یک سنسور دما باشه که درجه حرارت رو میگه یا از هر چیز دیگه مثل صفحه کلید بر مبنای این ورودی ها و برنامه ای که قبلا ما به اون دادیم خروجیشو تنظیم میکنه که ممکنه خروجیش یک موتور باشه یا یک LCD  یا هر چیز دیگری که با الکتریسیته کار بکند. حالت دیگری هم میتونه باشه که فقط میکروکنترلر بر مبنای برنامه ای که به اون دادیم عمل کند و خروجیش رو فقط بر اساس برنامه بگیرد.

 ساختمان دخلی میکروکنترلر:

 کامپیوتری که الان بر روی اون دارین کار انجام میدین دارای یک پردازنده مرکزیه به نام cpu  که از کنار هم قرار گرفتن چندین ملیون ترانزیستور تشکیل شده و بر روی اطلاعات پرداژش انجام میده . میکرو کنترلر هم عینا دارای یک پردازنده مرکزی به نام CPU است که دقیقا کار CPU کامپیوتر رو انجام میده با این تفاوت که قدرت و سرعت پردازشش از CPUکمتره که به اون میکروپرسسور میگن در بخش بعدی فرق میکرو پرسسور و میکروکنترلر را بررسی میکنیم. میکروکنترلر علاوه بر cpu  دارای حافظه است که ما برنامه ای که بهش میدیم در اون قرار بگیره در کنار حافظه در میکروکنترلرهای امروزی تایمرها برای تنظیم زمان کانتر ها برای شمردن  کانال های آنالوگ به دیجیتال  پورت های  برای گرفتن و دادن اطلاعات و امکاناتی دیگر که بعدا مفصل راجع به هر کدام توضیح داده میشه تشکیل شده و همه اینها در یک چیپ قرار گرفته که تنکنولوژی جدید اونو تو یک تراشه به اندازه یک سکه قرار داده.

  تفاوت میکروپروسسور و میکروکنترلر:

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

 آیا میکروکنترلر چیز جدیدی را با خود آورده است ؟

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



عیب میکروکنترلر:

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

یک گیت منطقی رو در نظر بگیرین که با توجه به ورودی خروجیشو تنظیم مکنه سرعت عمل این گیت منطقی 10 به توان منفی 9 ثانیه است یعنی نانو ثانیه ولی اگر ما بخواهیم این گیت رو با میکروکنترلر کار کنیم سرعتی معادل میکرو ثانیه داریم پس از لحاظ سرعت برای کاربردهای خیلی محدودی میکروکنترلر مناسب نیست.

 خب حالا این میکروکنترلر را با این همه کاربرد کی ساخته؟

حدود 4 دهه پیش در سال 1971 میلادی شرکت اینتل اولین میکروکنترلر را ساخت و اولین میکروکنترلر را با نام 8080 در اوایل سال 1980 روانه بازار کرد .همین شرکت اینتلی که الان در ساخت cpu  یکه تاز دنیاست .اما بعدا این امتیاز رو به شرکت های دیگری واگذار کرد و شرکت های زیادی در حال حاضر میکروکنترلر های مختلف تولید میکنند.



معرفی انواع میکروکنترلر
تمام میکروکنترلرها جزء این 5 قسمت هستنند:
1) 8051
2)
Pic
3)
Avr
4) 6811
5)
Z8

البته مدل های 6811 ساخت شرکت موتورلا و
z8 ساخت شرکت زایلوگ حداقل در ایران خیلی کم استفاده می شوند و رقابت اصلی بین سه نوع دیگر است.
تا به امروز هر میکروکنترلری که ساخته شده زیر مجموعه یکی از این5 نوع است. البته کارخانه های خیلی زیادی با مارک های مختلف میکرو کنترلر تولید میکنند ولی همه اونها زیر مجموعه یکی از این 5 قسمت هستنند .شما برای هر کدام از این5 نوع میکروکنترلر میتوانید میکروکنترلر های مختلفی از شرکت های مختلفی را پیدا کنید.(البته در بازار ایرن کمی با مشکل).
اما خوشبختانه همه میکروکنترلر هایی که جزء هر کدام از 5 نوع بالا باشند از یک برنامه پیروی میکنند. بدین معنا که اگر شما کار با یکی از مدل های آن میکرو را یاد گرفته باشید مثل اینکه کار با تمام میکروکنترلرهای آن نوع را یاد گرفته اید.مثلا شما اگر با یکی از مدل های میکروکنترلر
avr مثلا atmega8 را یاد گرفته باشید دیگر با صد ها مدل دیگر میکروکنترلر avr مشکلی ندارید وتقریبا بدون هیچ مشکلی میتوانید با دیگر مدل های این میکرو کار کنید.
اما یه مشکل که در میکروکنترلر ها وجود دارد این است که این5 نوع از لحاظ برنامه نویسی به هیچ وجه با هم دیگر سازگاری ندارند . به طور مثال اگر شما میکروکنترلر های
avr و 8051 را کامل یاد گرفته باشید حتی ساده ترین برنامه رو روی یک میکروکنترلر pic نمیتوانید اجرا کنید. واین یکی از بزرگترین عیب و مشکل برای یاد گیری میکرو است .بنابراین از همون اول باید یک انتخاب درست داشته باشید و میکروکنترلر مناسب را برگزینید تا با یادگیری آن میکروکنترلر بتوانید بعدا به سادگی پروژه های خود را اجرا کنید . البته بسیاری از دوستان هستنند که کار با چند میکروکنترلر را میدونند و حتما این هم از هوش بالای ایرانی هاست. ولی اگر به صورت خیلی حرفه ای نخواهید وارد این بحث بشوید باید یکی از این میکروکنترلرها را انتخاب کنید و کار با آن را آغاز کنید. در قسمت بعدی شما را برای این انتخاب کمک خواهم کرد.

 معایب و مزایای میکروکنترلر های مختلف نسبت به هم:
از آن جای که 6811 و
z8 خیلی کمتر استفاده میشوند به معرفی سه نوع دیگر میپردازم.

1) : اول از 8051 که اولین میکروکنترلری بود که به دست بشر ساخته شد شروع میکنیم . همانطور که در مقاله قبلی گفته شد ابتدا این میکروکنترلر توسط شرکت بزرگ
intel ساخته شد .اما بعدا intel این امکان را به دیگر شرکت ها داد که این میکروکنترلر را تولید کنند و شرکت هایی مانند ATMEL , PHILIPS , SIEMENS , DALLAS و... به تولید این میکروکنترلر پرداختنند یکی از شرکت هایی که به صورت گسترده به تولید این تراشه پرداخت ATMEL بود که مدل های مختلف میکروکنترلر ساخت این شرکت در سرار جهان و در ایران به خوبی یافت می شود. اما اگربخواهیم به صورت کلی سیر پیشرفت این نوع میکروکنترلر رو در نظر بگیریم اولین میکروکنترلر هایی که ساخته شد با جدیدترین میکروکنترلرهای 8051 که الان تولید میشود با توجه به این پیشرفت شگفت در تمام زمینه ها که صنایع دیگر در دنیا دارند پیشرفت زیادی ندارد به طور مثال AT89S5X که میکروکنترلر 8051 جدید ساخت ATMEL است نسبت به مدل های اولیه 8051 پیشرفت آنچنانی ندارد . امکانات این میکرو نسبت به AVR و PIC قابل مقایسه نیست . به صورتی که که همین مدل جدید 8051 تقریبا حافظه ای برابر یک صدم (0.001 ) میکروکنترلر های AVR را دارد و سرعتش 4 برابر کمتر از میکروکنترلر های PIC و 12 بار کمتر از میکروکنترلر های AVR است . از لحاظ امکانات دیگر هم چنین ضعفی احساس میشود. اما برای کارهای ساده تر که پیچیدگی زیادی در آن نباشد به خاطر قیمت بسیار پایینی که این میکروکنترلر دارد بسیار مناسب است . قیمت همین مدل جدید AT89S5X حول و حوش 1000 تومان است که قیمت بسیار مناسبی است.
این میکرو کنترلر از زبان اسمبلی و
C پشتیبانی میکند که زبان برنامه نویسی اصلی آن اسمبلی است که واقعا نوشتن با این زبان برنامه نویسی نسبت به زبان های برنامه نویسی دیگر هم مشکل تر و هم طولانی تر است. در کل این میکروکنترلر امروزه دیگر توانای رقابت با AVR و PIC رو ندارد و امروزه رقابت اصلی بین این دو میکروکنترلر است.

2)میکروکنترلر

PIC
واقعا میکروکنترلر خیلی قوی است که بر اساس بعضی آمار ها بیشترین کاربر را به خود اختصاص داده است البته متذکر شوم که در ایران این آمار به نفع
AVR است. این میکروکنترلر ساخت شرکت میکرو چیپ است که PIC رو در مدل های خیلی زیادی با امکانات مختلف برای کارهای مختلف میسازد . این میکروکنترلر با مدل های مختلفPIC16XXX و PIC12XXXX که به جای X دوم از چپ به راست حروف C ,X,E,F قرار میگره که هر کدام مفهوم خاصی داره که چون بحث ما آموزش AVR است از روی اون سریع میگزریم X های بعدی هم اعدادی هستنند که نشان دهنده مدل های مختلف هستنند.

3)میکروکنترلر

AVR
به میکروکنترلر
AVR میرسیم که به نظر من و خیلی از دیگر بهترین میکروکنترلر موجود در بازار است البته خود من با 8051 و AVR بخصوص AVR خیلی کار کردم ولی تجربه ای با PIC ندارم و قضاوت من ممکنه یه طرفه باشه ولی این نظر بسیاری از کسانی است که با AVR کار کرده اند .به دلایلی.....
اول از همه سرعت این میکروکنترلر بسیار بالاست و به قولی دستوراتی که بهش داده میشه در یک سیکل کلاک انجام میده در صورتی که این سیکل کلاک برای 8051 باید تقسیم بر12شودو برای
PIC باید تقسیم بر 4 بنابراین AVR سریعترین میکروکنترلر موجود در بازار است . AVR از زبان های برنامه نویسی سطح بالا یا به اصطلاح  HIGH LEVEL LANGUAGE(HLL) پشتیبانی میکند که باعث تولید کدهای بیشتری میشود که در کل برنامه نوشته شده نسبت به برنامه هایی که برای 8051 و PIC نوشته میشود کوتاهتر است. امکانات جانبی این میکروکنترلر بسیار مناسب است و شما را از خرید بعضی لوازم جانبی مانند چیپ های آنالوگ به دیجیتال (ADC) , مقایسه گر آنالوگ و... راحت میکند .در ضمن AVR از بسیاری از استاندارد های ارتباطی مانند SPI,UART,12C,JTAG پشتیبانی میکند که به راحتی میتوان این میکروکنترلر را با میکروکنترلر دیگر یا و سایل دیگر وصل کرد و با وسایل دیگر به راحتی ارتباط برقرار کند. قیمت این میکروکنترلر هم به نسبت امکانات فراوانی که داره بسیار پایین است به طوری که یک میکروکنترلر AVR تقریبا پیشرفته رو با قیمت حول و حوش 3 تا 4 هزار تومان خرید .

 خلاصه من که خیلی با این میکرو ور رفتم و پروژه های خیلی زیاد و پیچیده ای رو باهاش اجرا کردم بسیار راضی هستم و هیچ مشکلی باهاش نداشتم.اگر هم مشکلی بوده از جانب من بوده نه میکروکنترلر . خلاصه اگر برنامه نویسی و کار با این میکروکنترلر رو خوب یاد بگیرید هر کاری رو میتونید باهاش انجام بدید.



پروگرام میکروکنترلر:
شاید تا حالا به نظرتون رسیده باشه که این میکروکنترلر رو چگونه میشه برنامه ریزی کرد تا کار مورد نظرمان را انجام بده در صورتی که یک میکروکنترلر برنامه ریزی نشده هیچ کاری رو نمیتونه انجام بده و هیچ کاربردی نداره در واقع برنامه هر میکرو روح وجانی است که در اون دمیده میشه و اون رو زنده میکنه.
برای برنامه ریزی میکروکنترلر نیاز به دستگاه یا بردی هست به نام پروگرامر که یه پل ارتباطیه بین کامپیوتر و میکروکنترلر . پروگرامر را هم میشه از بازار تهیه کرد و هم میشه اون رو ساخت.

 
البته پروگرامرهای مختلفی در بازار هستنند که متانسب با کاربردشان قیمت های مختلفی دارند بعضی ها فقط چند مدل رو پروگرام میکنند بعضی از پروگرامر ها همه فن حریفند و تمام میکروکنترلر های 8051,
AVBR , PIC , رو برنامه ریزی میکنند به طبع قیمت زیادتری دارند.



آموزش میکروکنترلر avr


1- (
High-performance, Low-power AVR® 8-bit Microcontroller) :
ترجمه : میکروکنترلر
AVR 8 بیتی با کارایی بالا و توان کم
میکرو 8 بیتی اشاره به این دارد که این میکروکنترلر حداکثر با 8 بیت کار میکند و این میکرو حداکثر 8 بیت را به صورت همزمان میتواند انتقال دهد. اکثر میکروهایی که تا کننون ساخته شده اند 8 بیتی هستنند این توان هم برای کارهای عمومی و پیشرفته به صورت کامل جوابگوست ولی برای کارهای فوق پیشرفته به نسبت توان انتقال پایینی است .


2-(
Advanced RISC Architecture ) :
ترجمه : دارای طراحی پیشرفته
RISC
کلمه
RISC ((REDUCED INSTRUCTION SET COMPUTER به معنای طراحی CPU که مجموعه دستورات آن حاوی دستورات سریع و ساده است که نوشتن برنامه را مشکل ولی سریعتر میکند. اما طراحی پیشرفته RISC در میکروکنترلرهای AVR ضمن این که دستورات ساده وسریع هستنند، نوشتن برنامه هم راحت و بدون مشکل است.

3-(131
Powerful Instructions – Most Single-clock Cycle Execution ):
ترجمه : دارای 131 دستور العمل قوی که بیشترشان در یک سیکل کلاک اجرا می شوند. اشاره به همان معماری
RISC دارد که دستورات سریع اجرا میشوند.
یعنی برای
ATMEGA32 که دارای سرعت 16 MHZ است. این میکرو میتواند در هر ثانیه تقریبا 16 ملیون دستور را اجرا کند.

4- ( 32*8
GENERAL Purpose Working Registers ) :
ترجمه : با 8*32 ثبات عمومی کار میکند.

5-(
Fully Static Operation) :
ترجمه : عملکر کاملا ثابت .

6-(
Up to 16 MIPS Throughput at 16 MHz ) :
ترجمه : تا 16 ملیون (
MIPS) توان عملیاتی در 16MHZ
چند خط بالا دربارش توضیح داده بودم.

7- (
On-chip 2-cycle Multiplier ) :
ترجمه : تقویت کننده 2 سیکل بر روی چیپ.

Nonvolatile Program and Data Memories

حافظه ، برنامه و داده غیر فرار

8- (32K Bytes of In-System Self-Programmable Flash
Endurance: 10,000 Write/Erase Cycles)
ترجمه : 32
KB حافظه داخلی FLASH قابل برنامه ریزی . ماندگاری : 10000 بار نوشتن و پاک کردن.

حافظه
FLASH نوعی حافظه غیر فرار مشابه EEPROM که با بلاکهای داده کار میکند. حافظه FLASH این میکروکنترلر قابلیت 10000 بار نوشتن و پاک کرن را دارد که برای تمرین و آزمایش بسیار عالیست.
از لحاظ حجم هم 32 کیلو بایت میتواند نیاز های ما را برآورده کند و در بین سایر میکروکنترلر ها به نسبت حجم خوبی است.در واقع شما باید برنامه را در این حافظه بنویسید.
هر
BIT شامل یک (0و1) میشود ،هر BYTE ،1024 BIT است و هر KB (KILO BYTE ) 1024
BYTE است.
(هر حرف یک
BYTE است.)

9-
Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program
True Read-While-Write Operation

ترجمه : تعقیر اختیاری برنامه بوت با برنامه ریزی مستقل فیوز بیت ها در دستگاه درست وقتی که دستورعمل ها را میخوانیم یا مینویسم.
اشاره به تعقیر اختیاری فیوز بیت ها دارد که به راحتی میتوانیم این کار را انجام بدهیم.
فیوز بیت : این ها یک سری بیت کلی هستنند که منطق 0 به معنای برنامه ریزی شدن و منطق 1 به معنای برنامه ریزی نشدن بیت است.
اساسا کار این بیت ها تعقیر مشخصات سخت افزاری میکروکنترلر است و هر مدل از میکروکنترلر به نسبت طراحی دارای فیوز بیت های مختلفی است.
به فرض مثال اگر فیوز بیت به نام
EESAVE برنامه ریزی شود محتویات حافظه EEPROM در زمان پاک کردن میکروکنترلر محفوظ میماند ولی اگر این بیت برنامه ریزی نشود حافظه EEPROM در زمان پاک شدن میکرو پاک میشود.


10- (1024
Bytes EEPROM) :
: (
Endurance: 100,000 Write/Erase Cycles)
ترجمه : 1024 بایت حافظه
EEPROM . ماندگاری : 100000 بار نوشتن و پاک کردن.
اکثر مدل های میکروکنترلر
AVR دارای حافظه EEPROM داخلی میباشند که یکی از مزیت های خوب این میکروکنترلر هاست . در این حافظه که اطلاعات داخلش تا حدود 100 سال باقی میماند میشود به اکرار (صد هزار بار) نوشت و پاک کرد و میتوانیم اطلاعات زیادی رو در این حافظه قرار بدهیم.
این حافظه را در هنگام اجرای برنامه میتوان نوشت و خواند و بر گرفته از اول کلمات
ELECTRICALLY ERASABLE READ ONLY MEMORY است.

11- (2
K Byte Internal SRAM) :
ترجمه : 2 کیلو بایت حافظه
SRAM داخلی
این نوع از حافظه یک حافظه با دسترسی تصادفی است. مثل حافظه
RAM کامپیوتر.

12- (
Programming Lock for Software Security) :
ترجمه : قفل برای برنامه برای ایمنی

 JTAG (IEEE std. 1149.1 Compliant) Interface

قابلیت اتصال با پروتکل JTAG تحت استاندارد IEEE
یکی از چندیدن پروتکل میکروکنترلر است . که به لحاظ سرعت انتقال و قابلیت برنامه ریزی انواع حافظه ها و فیوزها به یکی از بهترین پروتکل های ارتباطی بین میکروکنترلر ها تبدیل شده است.

 13-(Boundary-scan Capabilities According to the JTAG Standard ):
ترجمه : امکان مقایسه برخی از ثبات ها در استاندارد
JTAG
14- (
Extensive On-chip Debug Support) :
ترجمه : پشتیبانی چیپ از یک اشکل زدایی گسترده

 

15-( Programming of Flash, EEPROM, Fuses, and Lock Bits through the JTAG Interface ) :
ترجمه : برنامه ریزی حافظه های
FLASH , EEPROM و FUSES و فیوز بیت ها با پروتکل .JTAG
امکان خوبی که این پروتکل ارتباطی دارد این است که انواع حافظه ها و فیوز بیت ها را میتوان با آن برنامه ریزی کرد از این رو پروگرامرهای زیادی با استفاده از این پروتکل کار میکنند.
 

  نظرات ()
موضوعات فروش تجهیزات شبکه (٧٩) شبکه (٤۸) سخت افزار (٤٦) ترفند‌های ویندوز (۳۸) هک و امنیت (۳٢) اینترنت (٢٧) ویندوز (۱۸) فناوری (۱۱) تاریخچه و زندگینامه (۱٠) سئو (۸) برنامه نویسی (٧) طراحی وب (٧) موبایل (٧) گرافیک (٦) مقالات کاربردی (٦) لینوکس (۳)
دوستان من فروش تجهیزات شبکه