با سلام و خوش آمد گویی به دوست عزیز hooshmand29
البته اینارو 10 روزیه که نوشتم ولی فرصت نکردم تو فروم بزارم.
اینم جواب سوالتون:
شما باید ابتدا بدونین که از میکروتون چه انتظاراتی دارین وچی میخواین. مثلا کار کردن با جدیدترین مدل میکروها خوبه ولی یه مبتدی برای شروع کار هیچ وقت مثلا یه میکرو 32 بیت و یا حتی 16 بیت گران و کمیاب و فاقد توجیه انتخاب نمیکنه. و یا نمیره دنبال یه میکرو از رده خارج. بعضی ها شاید به من بخندند و بگن که مثلا به 8051 میگه از رده خارج ، ولی اینطور نیست من به خوبی با اون آشنایی دارم و با اون کار کردم. الان ما تعدادی چیپ مخابراتی خیلی معروف داریم (مثل CC1010 ، CC2020 و ... اگه بخوام نام ببرم ایجا پر میشه) که از هسته 8051 استفاده میکنن و یا حتی شرکت اتمل ، موتورولا ، فیلیپس و ... دارن روی بالا بردن قابلیتهای اون کار میکنن. مثلا اتمل خانواده تک سیکل اونو معرفی کرد، اونو مجهز به تجهیزات جدید کرد. مثلا قبلا 8051 که مبدل آنالوگ به دیجیتال داشت کم پیدا میشد و یا میکرویی با مقایسه کننده آنالوگ داخلی کم پیدا میشد، اما ما حالا میبینیم که حتی 8051 هم مقایسه کننده آنالوگ داره.
برای شروع کردن، آشنایی قبلی با میکروهای دیگه میتونه به یادگیری بهتر و سریعتر کمک کنه ولی خیلی هم مهم نیست و الزام آور هم نیست.
من به عنوان راهنمایی به شما توصیه میکنم که با AVR شروع کنید. حالا کمی در باره فرق AVR با بقیه میکروها براتون میگم:
AVR یه میکرو RISC هست . خصوصیات میکروهای RISC و CISC رو براتون مینویسم تا بهتر متوجه بشین(این مطالب از کتاب میکروپروسسورها نوشته افن بک گرفته شده):
پروسسورهای RISC :
در اوایل دهه 1980 روند جدیدی در طراحی کامپیوتر ظهور یافت. کامپیوتر با مجموعه دستورالعمل مختصر (RISC). معنی لفظی چنین پروسسوری وجود مقدار کمی دستور (کمتر از 128) است. در مقابل این کامپیوترهای CISC است، یعنی کامپیوترها با مجموعه دستوالعمل پیچیده CISC دارای این ویژگیهاست:
1- تعداد زیادی دستور با طول متغیر
2- چند مود آدرس دهی (روشهای مختلف مشخص کردن حافظه)
3- تعداد اندکی رجیستر داخلی
4- دستورهایی که اجرای هر کدام چند سیکل ساعت طول میکشد.
میکروپروسسور Z80 دقیقا یک CISC است، زیرا بیش از 600 دستور دارد که هر یک بین 1 تا 4 بایت است. شش مود آدرس دهی دارد، ولی تنها 8 رجیستر همه منظوره داخلی دارد. زمان اجرای دستورات بین 4 تا 32 سیکل ساعت است.
Z80 را با پروسسور RISC i860 اینتل (که گاهی کری روی تراشه نامیده میشود) مقایسه کنید. این ویژگیها را ملاحظه میکنیم.
1- هشتاد و دو دستور، تماما 32 بیتی
2- چهار مود آدرس دهی
3- 32 رجیستر همه منظوره
4- اجرای تمام دستورها در یک سیکل ساعت
چون در RISC تمام دستورها طول یکسانی دارند و اجرایشان یک سیکل ساعت طول میکشد، واحد کنترل بسیار ساده تر از CISC است. این سادگی باعث میشود دستورها با مدارهای منطقی کمتر و سرعت بیشتری اجرا شوند. بررسیها نشان میدهد که در CISC واحد کنترل 50% مساحت تراشه را اشغال میکند، ولی در RISC این مقدار 10 درصد است. یعنی در پروسسورهای RISC جای بیشتری برای ویژگیهای دیگر چون فایل رجیستر، حافظه کاشه دستور و داده (حافظه برای ذخیره کردن دستورها و داده های اخیر) و پردازشگر ممیز شناور وجود دارد.
==================================================================
نوشته های بالا در مورد RISC كاملا در AVR رعايت نشده !!! اما اين موارد حتي كارايي اونو بالا برده. مثلا تعداد دستورالعملهاي AVR طبق آخرين اطلاعات من 135 تا است(در جدیدترین میکروها). Atmel ميگه كه AVR يك RISC با تعداد دستورالعمل بالا است. البته تمام دستورات AVR در يك كلاك سيكل اجرا نميشه.مثلا دستوراتي كه كد آنها بزرگتر از يك بايت است نياز به سيكلهاي بيشتري براي اجرا دارند و ... . تعداد دستورات AVR در نمونه هاي اوليه مثلا در AT90S1200 ، 89 عدد بوده و در ميكروهاي جديد افزايش يافته.
تعداد دستورالعمل بالا در كل موجب كاهش كدهاي توليد شده و افزايش سرعت برنامه شده.
يه بنچ مارك از اتمل رو خوندم كه در اون AVR رو با چند تا ميكرو معروف از نظر مقدار كدهاي توليد شده مقايسه كرده بود. در اين تست رتبه AVR در بيشتر موارد اول شده بود و در كل در رتبه اول جاي گرفت. اين بچ مارك رو ميتونيد در سايت اتمل پيدا كنيد.اگه يادم نره خودم لينكشو ميذارم.
تعداد رجيسترهاي بالا در AVR موجب راحت شدن برنامه نويسي به زبان اسمبلي و سطح بالا شده و نياز برنامه را به استفاده از حافظه RAM كاهش داده(و حتی در بیشتر موارد بی نیاز کرده) و همچنين در انتها موجب افزايش سرعت برنامه شده.
يكي از ويژگيهاي ديگه AVR استفاده از اسيلاتور كاليبره شده داخليه كه دقت اون +1% است(در هنگام ریست تراشه، بصورت سخت افزاری بایت کالیبراسیون را در رجیستر OSCCAL بار میکند و از این طریق اسیلاتور RC داخلی را کالیبره میکند. همچنین اسیلاتور بصورت مقدار دهی بایت OSCCAL در هنگام اجرای برنامه نیز میتواند در محدوده فرکانس ذکر شد در برگه های اطلاعاتی هر میکرویی کالیبره شود. یعنی در صورت استفاده از اسیلاتور داخلی کاربر میتواند فرکانس آن را در برنامه تغییر دهد. یعنی دیگه برو حال کن!!!). كه در اكثر موارد ما را از اسيلاتور خارجي بي نياز ميكند و هزينه هاي اضافي را كاهش ميدهد(در تولید انبوه کولاک میکنه).
دستگاههاي جانبي در AVR بسيار وسيع است. در اصل AVR يك ميكرو كاملا امروزيه . برخي از قابليتهاي اون مثل درايور LCD (مثلا در ATMega169) و مقايسه كننده آنالوگ و ... در كمتر ميكرويي ديده ميشه(تا به حال نديدم. البته ذكر كنم در AT89LP تقريبا تمام تجهيزات جانبي كه در AVR است گنجانده شده.).
بالاخره بايد بهتون بگم اگه دنبال يه ميكرو ارزون و قدرتمند و با انعطاف هستيد بهترين و به صرفه ترين انتخاب AVR هست.
البته بايد ذكر كنم كه AVR چندين نمونه و مدل داره كه ميخواستم ذكر كنم ولي كاتالوگش رو پيذا نكردم. بعدا لينكشو ميذارم.(مثلا سریهای:FPGA AVR, LCD AVR, DVD AVR, PWM AVR,CAN AVR and any more.)