/ تایمرهای صفر و یک و دو
/ وقفه ها
/ ارتباط سریال SPI ، USART و TWI
/ مقایسه گر آنالوگ و تبیدل آنالوگ به دیجیتال
/ روش های مختلف Programming شامل Boot Loader، SPI، Parallel، JTAG
/ ارائه طرح یک بورد آزمایش (Training Board) که کلیه ی مثال ها در این بورد بدون اشکال اجرا میشوند
خدایا لیاقت و شایستگی معلم بودن و
همت یاد گرفتن را به ما عنایت بفرما
بنام پرودگار یکتا
خداوند متعال را سپاس میگویم که توفیق آنرا یافتم تا مجموعه ای را که ملاحظه خواهید فرمود با همت و تلاش زیاد آماده نمایم. قبل از هر سخنی این زحمت و تلاش را به کسانی تقدیم میکنم که همیشه در راه تعلیم و تعلم دشواری ها را به جان می خرند و از تحمل آن خشنود میباشند.
بیاد دارم سالها پیش که استطاعت کوهپیمائی داشتم در یکی از این کوهپیمائی ها در نزدیکی قله توچال به شخصی با سن هفتاد وچندی سال بر خوردم که در سر یکی از آخرین پیچهای منتهی به قله ایستاده بود و نفسی تازه میکرد. بعد از سلامی در جواب خسته نباشید من گفت , خسته که هستم ولی چنان لذتی از این خستگی میبرم که نمیتوانم توصیف کنم. الان بعد از سالها یاد گفته آن عزیز افتاده ام و وصف الحال خود را بی شباهت به گفته ایشان نمی بینم.
مدتها بود که به دلیل ارائه پروژه هائی از طرف فرزندان دانشجویم که در آنها از میکروکنترلر AVR استفاده میشد احساس نیاز میکردم که در مورد این میکروکنترلر شناختی کامل پیدا کنم و این فرصت به یاری خدا فراهم شد و با مطالعه منابع موجود در این زمینه احساس کردم که اگر مجموعه تلاش خود را به صورت کتابی تدوین نمایم شاید بتواند کمک موثری به دانشجویان و کسانی که علاقمند فراگیری کلیه قابلیت های این میکروکنترلر میباشند، به نماید.
بعد از سالها تدریس و از دید معلمی که همیشه به نتیجه کار خود اهمیت داده است و صرفا به عنوان تکلیف به حرفه معلمی نپرداخته، اعتقاد دارم مطالبی که قرار است به صورت آموزشی تدوین گردد؛ می بایست بدون ابهام و با مثالهائی قابل لمس و درک همراه باشد. در این مجموعه تلاش شده که این دو نکته رعایت شود و سعی گردیده تمامی مطالب شکافته شده و به دقت مورد بررسی قرار بگیرند و به همین ترتیب در مورد کلیه موضوعات مثالهائی که بدون خطا و اشکال اجرا میشوند و نیز از سادگی لازم بر خوردارند تهیه شود.
مطالب کتاب به گونه ای تنظیم گردیده که برای کلیه کسانی که علاقمند به یادگیری مجموعه میباشند با
هر سطح معلومات امکان استفاده از آن میسّر باشد. فصل اول ودوم برای کسانی مفید خواهد بود که بدون نیاز به زمینه قبلی و شناخـتی از میکروپروسسور میتوانند با مطالعه این دو فصل آمادگی لازم را برای یادگیری بقیه مطالب پیدا کنند و آنهائی که این شناخت را دارند میتوانند از فصل سوم شروع به مطالعه نمایند.
در تهیه مطالب کتاب، منبع اصلی , مدارک و اطلاعات ATMEL سازنده این میکروکنترلرها می باشد ولی مطالب تهیه شده ترجمه محض نبوده و سعی شده است که در عین حفظ اصالت مطالب، جزئیات آنها بررسی شده و بصورت قابل درک بیان شوند و در این راستا برای دسترسی به برخی از موارد با کاستی هائی در این مدارک مواجه بوده ام که با همت و تلاش و با یاری خداوند بزرگ در حل آنها توفیق حاصل شد.
از جمله این کاستی ها نحوه استفاده از قابلیت تبادل اطلاعات سریال TWI و Programming توسط
pin های JTAG و (Boot loader)Self-Programming و دیگر انواع برنامه ریزی با این میکروکنترلر بوده که با صرف وقت فراوان مثالهای مربوطه بدون اشکال و خطا تهیه و تنظیم گردیده اند.
در خاتمه سخن لازم میدانم از کلیه کسانی که در این راه مرا یاری کردند از جمله آقای مجیدرضا زروئی و دیگر همکاران ایشان در انتشارات فدک ایساتیس که همیشه مشوق اینجانب در این نوع تلاش ها بوده اند تشکر کنم.
از آقای حبیب شبستری که در تهیه PCB و قطعات مورد نیاز برای ساخت Training-Board مرا کمک کردند سپاسگزاری میکنم.
از آقای مهندس پیمان حاج حسینی که Programmer , JTAG ICE را به اینجانب معرفی کردند تشکر میکنم که استفاده از آن تاثیر بسیار زیادی در پیشرفت سریع کار داشت.
از خانم ایلیات که در ویرایش کتاب اینجانب را یاری داده اند تشکر می کنم.
بدون شک مجموعه تدوین شده خالی از اشکال نخواهد بود. کلیه اساتید و عزیزانی که زحمت مطالعه کتاب را بر خود هموار میکنند, بنده حقیر را رهین منت خود خواهند کرد اگر اشکالات کتاب را به اینجانب متذکر شوند.
کلیه مثالهای کتاب که به زبان assembly میباشند در محیط نرم افزار AVR Studio4 و مثالهائی نیز که به زبان C میباشند در محیط نرم افزار Codevision AVR و بدون استفاده از Wizard خود نرم افزار Codevision نوشته شده و Compile شده اند, یعنی از دو نرم افزار فوق که در CD پیوست کتاب وجود دارند, بعنوان یک Compiler استفاده شده است.
توضیح در رابطه با نحوه نوشتن مثالها در دو محیط فوق را در پیوست های3 و4 می توانید ملاحظه کنید.
برای بدست آوردن تسلط و مهارت کافی در نوشتن برنامه به زبان C در حد مورد نیاز, پیوست 2 کتاب میتواند مفید واقع شود.
برای اجرای برنامه های مربوط به مثالهای کتاب یک بورد آزمایش ( Training-Board ) پیشنهاد شده که به صورت کامل ابتدای فصل پنجم در مورد طرح و ساخت آن صحبت شده است.
کلیه مثالها میتوانند توسط یک Programmer برروی ATmega16, Program شده و در بورد آزمایش, اجرای درست برنامه ها ملاحظه گردند.
در روی بورد آزمایش pin های اتصال به سوکت JTAG ICE پیش بینی شده است و اگر از این Programmer استفاده شود دیگر نیازی به در آوردن ATmega16 نبوده و Program کردن به صورت
On Board انجام میشود.
در خاتمه توفیق همه عزیزان و پویندگان دانش و بینش را از خدای بزرگ خواستارم.
حمید شبستری
hamidshabestari@yahoo.com
فهرست مطالب
فصل اول ـ سیستم مبنای اعداد 8
سوالات فصل اول 23
فصل دوم ـ آشنائی با میکروپروسسورها 24
سوالات فصل دوم 45
فصل سوم ـ ساختار داخلی میکروکنترلر AVR 48
سوالات فصل سوم 64
فصل چهارم ـ دستورالعمل های میکروکنترلر AVR 65
سوالات فصل چهارم 114
فصل پنجم ـ بررسی رجیسترهای I/O و قابلیت های ATmega16
معرفی مطالب مطرح شده در این فصل 115
رجیسترهای PORT ها و سایر رجیسترهای با کاربرد عمومی 119
رجیسترهای مربوط به تایمر شمارشگر0 و شرح طرزکار این تایمر 154
مثال های تایمر شمارشگر0 164
رجیسترهای مربوط به تایمر شمارشگر1 و شرح طرزکار این تایمر 173
مثال های تایمر شمارشگر1 181
رجیسترهای مربوط به تایمر شمارشگر2 و شرح طرزکار این تایمر 188
مثال های تایمر شمارشگر2 191
رجیسترهای مربوط به ارتباط سریال SPI و شرح طرزکار این ارتباط 197
مثال های ارتباط سریال SPI 200
رجیسترهای مربوط به ارتباط سریال USART و شرح طرزکار این ارتباط 205
مثال های ارتباط سریال USART 219
رجیسترهای مربوط به ارتباط سریال دوسیم TWI و شرح طرزکار این ارتباط 233
مثال های ارتباط دوسیم TWI 259
رجیسترهای مربوط به مقایسه گر آنالوگ و شرح طرزکار این مقایسه گر 276
مثال های مقایسه گر آنالوگ 279
رجیسترهای مربوط به تبدیل آنالوگ به دیجیتال و شرح طرزکار این تبدیل 284
مثال های تبدیل آنالوگ به دیجیتال 293
فصل ششم ـ روش های مختلف برنامه ریزی (Programming)
معرفی فصل و مطالبی در رابطه با کلیات برنامه ریزی و بخش Boot 304
برنامه ریزی توسط خود میکروکنترلر (Self Programming) 312
مثال های Self Programming 328
برنامه ریزی موازی (Parallel Programming) 335
برنامه ریزی با استفاده از pin های ارتباط سریال SPI (SPI Programming) 347
مثال های SPI Programming 352
برنامه ریزی با استفاده از pin های JTAG (JTAG Programming) 365
مثال های JTAG Programming 383
پیوست 1 ـ LCD و Keyboard و چند مثال با ATmega16 447
پیوست 2 ـ آشنائی با برنامه نویسی به زبانC
بخش اول ـ تعاریف و مقدمات زبان C 461
سوالات بخش اول و پاسخ این سوالات 468
بخش دوم ـ طرز برنامه نویسی به زبان C 470
سوالات بخش دوم و پاسخ این سوالات 476
بخش سوم ـ حلقه های تکرار و حلقه های شرطی 480
سوالات بخش سوم و پاسخ این سوالات 487
بخش چهارم ـ توابع و زیر برنامه ها 502
سوالات بخش چهارم و پاسخ این سوالات 509
بخش پنجم ـ array و string 517
سوالات بخش پنجم و پاسخ این سوالات 532
پیوست 3 ـ راهنمای استفاده از نرم افزار Codevision AVR 536
پیوست 4 ـ راهنمای استفاده از نرم افزار AVR Studio4 542
پیوست 5 ـ راهنمای استفاده از نرم افزار Proteous 547
پیوست 6 ـ جداول مربوط به میکروکنترلرهای AVR و ATmega16 552