Mortal Kombat
07-30-2015, 20:15
تعریفی از میکرو کنترل ها
قطعه اي که اين روزها دارد جاي خود را در خيلي از وسايل الکتريکي باز ميکند .از تلفن گرفته تا موبايل از ماوس ليزري که الان دستتان روي آن است و دارين باهاش کامپيوتر رو کنترل ميکنيد تا هر وسيله اي که بتوان پيچيدگي رو در اون ديد ميتونيد يک ميکروکنترلر رو ببينيد .
کلمه ميکروکنترلر:
اين کلمه از دو کلمه 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 , رو برنامه ريزي ميکنند به طبع قيمت زيادتري دارند.
قطعه اي که اين روزها دارد جاي خود را در خيلي از وسايل الکتريکي باز ميکند .از تلفن گرفته تا موبايل از ماوس ليزري که الان دستتان روي آن است و دارين باهاش کامپيوتر رو کنترل ميکنيد تا هر وسيله اي که بتوان پيچيدگي رو در اون ديد ميتونيد يک ميکروکنترلر رو ببينيد .
کلمه ميکروکنترلر:
اين کلمه از دو کلمه 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 , رو برنامه ريزي ميکنند به طبع قيمت زيادتري دارند.