• اگر سمپادی هستی همین الان عضو شو :
    ثبت نام عضویت

میکروکنترلر چیه؟

  • شروع کننده موضوع SR
  • تاریخ شروع
  • شروع کننده موضوع
  • #1

SR

کاربر فوق‌حرفه‌ای
ارسال‌ها
604
امتیاز
1,157
نام مرکز سمپاد
شهید اژه ای 1
شهر
اصفهان
سال فارغ التحصیلی
00
مدال المپیاد
درست نخوندم به جایی نرسیدم
رشته دانشگاه
مهندسی برق
میکروکنترلر چیه؟؟؟AVR چیه؟؟؟PIC چیه؟؟؟اینا چطوری کار میکنند؟؟؟...

اینا سوالاتی هست که ممکنه یه علاقمند به الکترونیک که از قافله عقب مونده بپرسه!
منم اینجام تا این مسأله عقب موندگی رو حل کنم :-"(یه وقت فکر نکنین مشکل ذهنی دارین و اینا ... ^#^ مشکل از اطلاع رسانیه :-<)



1-میکروکنترلر چیه؟

یه تراشه هست که عملا مثل یه کامپیوتر کوچیک عمل میکنه!میشه براش برنامه نوشت و اینا به هر زبانی!(همون C و خانوادش و BASIC و اسمبلی) پردازنده داره رم داره حافظه داره با یه سری چیز دیگه توی یک تراشه

2-با چی اینا رو برنامه نویسی میکنند؟

هر دسته از میکروکنترلر ها با یه کامپایلر(همون برنامه ای که توش برنامه نویسی میکنن) میشه براشون برنامه نوشت

3-چطور اینا رو برنامه ریزی میکنند؟چجوری به کامپیوتر وصلش میکنند؟

میکروکنترلر های تو بازار معمولا با یه مدار رابط به پورت های کامپیوتر مثل USB و RS-232(همون پورت 9 پین پشت کامپیوتر که به پورت مودم و سریال معروفه) و پورت پرینتر(یا همون پروت موازی , Parallel همون پورت 15 پین پشت کامپیوتر) و ... وصل میشند و از یه طرف دیگه هم به یه سری از پایه های میکروکنترلر متصل شده و با یه برنامه مخصوص مدار واسط یا مستقیما از طریق کامپایلر میشه میکروکنترلر رو برنامه ریزی کرد

4-برنامه نویسی اینا چجوریاست؟

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

5-اون خرت و پرت ها رو چجوری کنترل میکنند؟اصلا اونا چیند؟

حتما تا حالا پشت کیس رو نگاه کردید و دیدید یه سری محل داره بهش سیم وصل میکنند تا با دستگاه های مختلف ارتباط برقرار کنه
میکروکنترلر هم از طریق پایه هاش این کار رو انجام میده اون خرت و پرت ها شامل یه سری واحد های ارتباطی هستند که مثلا یکیشون که USART هست میتونه با یه تراشه رابط به پورت سریال کامپیوتر متصل بشه و با کامپیوتر ارتباط بر قرار کنه
بعضی ها هم USB دارند و بعضی دیگه هم اترنت!
کنترلشون هم اینطوریه که یه سری خونه از رم مستقیما به این واحد های ارتباطی وصل میشه و با تغییر مقدار اون خونه کارکرد اون واحد هم عوض میشه که اینا رو تو برگه اطلاعاتی یا دیتاشیت که شرکت سازنده میکروکنترلر میده ارتباط بین مقادیر و کارکرد بخش های مختلف میکروکنترلر رو توضیح میده

6-خوب وقتی اینا هستند دیگه چرا از اینا به جای کامپیوتر استفاده نمیشه؟

خوب میکروکنترلر ها یه نسخه ضعیف از کامپیوتر هستند و نمیتونند توی پردازش سنگین جواب بدند
برای اینکه تفاوت ها رو درک کنید مثلا فرکانس کلاک میکروکنترلر ها بین 1 تا 100 مگا هرتز هست و کامپیوتر بالای چند گیگا هرتز!
حافظه برنامه میکروکنترلر ها در حد کیلو بایت هست اما کامپیوتر در حد ترا رمش هم همینطور در حد کیلو بایت هست و کامپیوتر در حد گیگ!

7-با این پردازش کم چی کار میشه کرد پس به چه درد میخوره؟

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

8-قیمتش چقدر تموم میشه برامون؟

با توجه به وضعیت تحریم ها که خیلی رو الکترونیک تاثیر میزاره مثلا قیمت یه میکروکنترلر AVR که 40 پایه هم هست و کار رو راه میندازه حدود 6 هزار تومان هست
مداری هم که پروگرام میکنه رو میتونید خودتون بسازید
آمادش هم مثلا USB دارش از 20 هزار تومان هست به بالا
برد بورد و یه آداپتور کوچیک و چند تا LED و دکمه و سیم هم میشه 20 هزار تومان
ولی در کل اگه میخواید از الکترونیک لذت ببرید به اصطلاح باید از نون شبتون بزنید!!!(یعنی همون عیدی و اینا)

9-از کجا میشه یادش گرفت؟

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

10-کدوم دسته از میکروکنترلر ها؟

اگه کسی نیست براتون وقت بزاره و اینا
ساده ترینش AVR هست که به دلیل داشتن منابع آموزشی بیشتر نسبت به میکروکنترلر های دیگه و راحت بودنش بیشتر توصیه میشه
و الا میکروکنترلر های دیگه هم هست که میشه یادشون گرفت اما احتمال اینکه زده بشید یه مقدار بالاتر میره اونا رو توصیه میکنم بعد از AVR یاد بگیرید که وارد تر شدید
ARM هم برای استارت کار ابدا توصیه نمیشه مگه اینکه حوصلشو داشته باشین و مصمم باشین(همین حرف درباره میکروکنترلر های دیگه هم صدق میکنه اما نه به این شدت)

11-اینجا هم آموزش میدید

بله حتما اگه بخواید :-" :D
فعلا AVR و XMEGA رو در خدمتم (;



سوالی چیزی بود بپرسین اما در مورد مثلا کارکرد این قسمت یا اون قسمت یه میکروکنترلر خاص نباشه و سعی کنید به همین سبک باشه بی زحمت
 

dorna

کاربر خاک‌انجمن‌خورده
ارسال‌ها
1,588
امتیاز
4,448
نام مرکز سمپاد
فرزانگان امین1
شهر
اصفهان
پاسخ : میکروکنترلر چیه؟؟؟

یه سوال راجع به ای وی آر ها.ببین مثلا آرم رو میشه روش سیستم عامل راه انداخت. ای وی آر ها هم یه همچین قابلیتی دارن؟ یعنی از نظر گرافیکی چجورین؟
 
  • لایک
امتیازات: SR
  • شروع کننده موضوع
  • #3

SR

کاربر فوق‌حرفه‌ای
ارسال‌ها
604
امتیاز
1,157
نام مرکز سمپاد
شهید اژه ای 1
شهر
اصفهان
سال فارغ التحصیلی
00
مدال المپیاد
درست نخوندم به جایی نرسیدم
رشته دانشگاه
مهندسی برق
پاسخ : میکروکنترلر چیه؟؟؟

به نقل از Dorna :
یه سوال راجع به ای وی آر ها.ببین مثلا آرم رو میشه روش سیستم عامل راه انداخت. ای وی آر ها هم یه همچین قابلیتی دارن؟ یعنی از نظر گرافیکی چجورین؟
سوال خوبیه پس سوال 12:

12- سیستم عامل روی این میکروکنترلر ها نصب میشه؟چجوری هست؟محیط گرافیکش چطوریه؟

ببینید بستگی داره تعریف شما از سیستم عامل چی باشه!
اگر به این مفهوم بگیریم که چند تا برنامه داشته باشیم که بخوایم همزمان با هم انجام بشه با توجه به اینکه پردازنده تک هسته ای هست باید این برنامه ها یا به عبارتی تسک ها یه جوری اجرا بشند که تو یه زمان همشون پردازش شده باشند(این کاریه که همه سیستم عامل ها باید بتونند انجامش بدند)
به شکل زیر توجه کنید:
TaskExecution.gif

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

مرحله 1: تسک 1 داره اجرا میشه
مرحله 2: زمان داده شده به تسک 1 تموم میشه ووضعیت فعلی تمام رجیستر های CPU یه جا کپی میشه
مرحله 3: داده های مربوط به تسک 2 توی رجیستر های CPU بارگذاری میشه و وقت پردازش تسک 2 شروع میشه
مرحله 4: تسک 2 در حال اجرا شدنه فرض کنید این تسک از بخش ارتباط سریال استفاده میکنه
مرحله 5: مدت زمان پردازش تسک 2 تموم میشه و تا هر جایی رفته متوقف میشه و تمام رجیستر های CPU یه جا کپی میشه مثل کاری که موقع تموم شدن بقیه تسک ها میکنیم
مرحله 6: تسک 3 میاد تا شروع به کار کنه اما چون تسک 2 از ارتباط سریال استفاده میکرده و این قسمت در اختیار تسک 2 هست سیستم عامل بهش اجازه دسترسی به اون قسمت رو نمیده تا کارشو انجام بده
مرحله 7: تسک 3 که میبینه کاری از دستش برنمیاد وقت تلف نمیکنه و بدون اتلاف وقت سوییچ میکنه تا یه تسک دیگه کارشو انجام بده
مرحله 8: تسک 1 دوباره به پردازشش ادامه میده و اول از همه میره سراغ همونجایی که وضعیت رجیستر های CPU رو کپی کرده بود اونا رو سرجاشون(رجیستر های CPU) پیست میکنه و کارشو از همون جایی که وقتش تموم شده بود از سر میگیره
مرحله 9: اینجا هم تسک 2 کارشو انجام میده تو این قسمت کارش با ارتباط سریال تموم میشه
مرحله 10: اینجا تسک 3 میتونه کارشو انجام بده چون بخشی که میخواد باهاش کار کنه آزاده و تسک دیگه ای اونو مشغول نکرده

تا اینجا دو تا کار مهم سیستم عامل رو گفتم که میتونه دید شما رو نسبت به سیستم عامل باز کنه کار های دیگه مثل شبکه ارتباطی بین تسک ها و ... هم هست که اینجا نگفتم
تو نوشتن سیستم عامل که بتونه این کار رو انجام بده باید علاوه بر C یه مقدار هم اسمبلی بلد باشید
خوب پس سیستم عامل هایی که روی آرم نصب میشه فرقش با این چیه؟
مسأله ای که اینجا تعیین کننده هست یه بخشیه به نام MMU که مخفف Memory Managment Unit هست کارش اینه که حافظه های مختلف رو مدیریت کنه از نتایج این کارش اینه که CPU میتونه از هر حافظه ای برنامه اجرا کنه برخلاف میکروکنترلر ها که فقط از روی حافظه محدود فلش میتونند برنامه اجرا کنند و نمیتونند در طول برنامه تغییری در خود برنامه ایجاد کنند در صورتی که MMU این قابلیت رو به ما میده(میکروکنترلر میتونه رو حافظش تغییر ایجاد کنه ولی توانایی دستورات مربوط به این کار خیلی محدوده تازه نوشتن روی حافظه فلش میکروکنترلر هم محدودیت از نظر دفعات نوشتن داره)
هر پروسسوری که MMU رو داشته باشه سیستم عامل به اون معنا(در حد ویندوز و لینوکس و ...) روش نصب میشه منتها قبلش باید برای CPU پورتش کرد و کد هاش رو مخصوص این CPU کامپایل کرد

برای دیدن کد های سیستم عامل های مربوط به میکروکنترلر ها که به RTOS یا Real Time Operating System یا سیستم عامل های بلادرنگ معروفه میتونید توی اینترنت عبارت RTOS رو سرچ کنید
یه کتاب هم در این زمینه هست که یکی از سیستم عامل های بلادرنگ نوشته شده رو توضیح میده به نام MicroC/OS II نوشته لبروس ترجمه شکاری زاده انتشارات نص هست(اصفهانی ها از کتابفروشی مهرگان میتونند تهیه کنند)
این لینک رو هم ببینید خیلی جالبه فقط next رو بزنید برید جلو:
http://www.freertos.org/implementation/main.html
یه نکته ای هم بگم فقط بعضی از میکروکنترلر های ARM9 به بالا اون واحد MMU رو دارند مثل AT91SAM9260 که تنها میکروکنترلری هست که میتونید براش برد بزنید و اینکه MMU هم داره! بقیشون باید برد چند لایه و اینا براش بزنید و روش طراحی برد های فرکانس بالا رو بلد باشید سایر میکروکنترلر ها یعنی Cortex سری M و ARM7 از این بی بهره اند(میتونند داشته باشند ولی اینطوری تولید میشند)


یه بحث دیگه هم هست به نام GUI یا Graphical User Interface اگه اشتباه نکنم
اینو هم میشه داشت هم میشه نداشت!
یعنی میتونید از سیستم عامل مثل داس استفاده کنید یا مثلا مثل ویندوز
هم سیستم عامل های بلادرنگ میتونند اینو داشته باشند(به وسیله LCD و دکمه و تاچ و الی آخر)
و هم سیستم عامل های کامپیوتر
این بحثش جداست...
بستگی به سیستم عاملش داره که داشته باشه یه سری امکانات برای این کار یا اینکه خودتون بخواید توش دست ببرید و یه کارایی بکنید
 

amparisay

کاربر فوق‌حرفه‌ای
ارسال‌ها
928
امتیاز
4,431
نام مرکز سمپاد
علامه حلی
شهر
تهران
سال فارغ التحصیلی
1386
مدال المپیاد
ندارم
دانشگاه
علم و صنعت
رشته دانشگاه
برق
تلگرام
اینستاگرام
پاسخ : میکروکنترلر چیه؟؟؟

باز هم غلط های ریز و نکته دار
به هر زبانی!(همون C و خانوادش و BASIC و اسمبلی)
خیر، هنوز همه زبانهای برنامه نویسی برای همه میکرو کنترلر ها کامپایلر ندارند.
در مورد Basic هم مثل C هست فقط یه چند تا دستورش فرق میکنه و اینا کلیتش همونه
بیسیک و C کجاشون دقیقا مثل همه؟
روی AVR با ماکزیمم کلاک 16 (غیر از سری های جدیدش و XMEGA ها) هرکی سیستم عامل نوشت (واقعا سیستم عامل باشه و همه امکانات سخت افزاری رو در اختیار قرار بده، همراه با رابط GUI خوب) من جایزه می دم!
 
  • شروع کننده موضوع
  • #5

SR

کاربر فوق‌حرفه‌ای
ارسال‌ها
604
امتیاز
1,157
نام مرکز سمپاد
شهید اژه ای 1
شهر
اصفهان
سال فارغ التحصیلی
00
مدال المپیاد
درست نخوندم به جایی نرسیدم
رشته دانشگاه
مهندسی برق
پاسخ : میکروکنترلر چیه؟؟؟

به نقل از amparisay :
باز هم غلط های ریز و نکته دارخیر، هنوز همه زبانهای برنامه نویسی برای همه میکرو کنترلر ها کامپایلر ندارند.
100% دیگه فرصت نبود لیست کنم براتون چی به چیه
اما میکرو های معمول توی ایران هر سه رو دارند(منظورم PIC و AVR و ARM)هست
و گرنه هر روز یه میکروی جدید میاد و طول میکشه براش کامپایلر بسازند
به نقل از amparisay :
بیسیک و C کجاشون دقیقا مثل همه؟
نه درست منظورم رو نگرفتید منم با اینا کار کردم میدونم چی به چیه
منظورم روند کلی کاره
نگفتم دستوراشون مثل همه
گفتم ارتباطی که نحوه برنامه نویسیشون توی کامپیوتر و برای میکرو هست مثل همه
و گرنه اگه مثل هم بودند که یکی C نمیشد یکی Basic!!!
به نقل از amparisay :
روی AVR با ماکزیمم کلاک 16 (غیر از سری های جدیدش و XMEGA ها)
اشتباهه مثلا ATTINY2313 تا 20 مگا هرتز میتونه بره و این چیزیه که کارخونه تضمین کرده و اور کلاک نیست
به نقل از amparisay :
هرکی سیستم عامل نوشت (واقعا سیستم عامل باشه و همه امکانات سخت افزاری رو در اختیار قرار بده، همراه با رابط GUI خوب) من جایزه می دم!
والا مردم اینقدر بی کار نیستند
اگه نیازی باشه که بعیده همچین کاری میکنند
البته یکی تفریحی این کار رو کرده اینجا
 
بالا