آموزش میکروکنترولر AVR از ابتدا تا پیشرفته

در اين بخش مي‌توانيد آموزش و مثال‌های مرتبط با میکروکنترلرهای AVR را مشاهده بفرمایید

مدیران انجمن: SAMAN, sinaset, شوراي نظارت

مطالب برایتان مفید بود

عالی و ساده بود،ادامه دهید
21
81%
خوب و قابل فهم بود،ادامه دهید
5
19%
ساده و قابل فهم نبود.
0
بدون راي
تکراری و سخت بود.
0
بدون راي
 
مجموع رای گیری: 26

Novice Poster
Novice Poster
پست: 60
تاریخ عضویت: پنج شنبه 22 بهمن 1394, 9:03 pm
سپاس‌های ارسالی: 158 بار
سپاس‌های دریافتی: 24 بار

Re: آموزش میکروکنترولر AVR از ابتدا تا پیشرفته(+فهرست)

پست توسط javad_2010 » سه شنبه 11 اسفند 1394, 11:15 pm

یه سوال دیگه هم داشتم
ملاکای انتخاب یه میکرو چیه؟؟؟

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

Colonel II
Colonel II
نمایه کاربر
پست: 6925
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9170 بار
سپاس‌های دریافتی: 20867 بار
تماس:

Re: آموزش میکروکنترولر AVR از ابتدا تا پیشرفته(+فهرست)

پست توسط sinaset » چهار شنبه 12 اسفند 1394, 8:26 am

javad_2010 نوشته شده:سلام
یه سوال برام پیش اومده
یعنی با نوسان خود میکروکنترلر نمیشه یه تایمر و زمان سنج ساخت که دقیق باشع؟؟؟

خوده میکرو نمیتونه کارا رو دقیق اجرا کنه؟؟؟


سلام بر شما
تشکر از سوال شما.
-
نوسان ساز داخلی میکروکنترولر به مانند نوسان ساز بیرونی از کریستال کوارتز می باشد.منتها به دلیل اینکه این نوسان به ولتاژ و دما وابسته است، دقتش پایین می باشد. این که در مقاله اشاره کردم دقت کافی را ندارد! بدین معنا نیست،که بدرد نمی خورد.! این نوسان ساز حدود 3% ضریب خطا دارد.(که همانجور که گفتیم بسته به ولتاژ و دما کاهش و افزایش پیدا میکند)

اما زمانی که بخواهیم فرضا یک ساعت درست کنیم.کافیست یک کریستال 32.768 کیلوهرتزی به دوپایه مشخص شده (که بعدا معرفی میشود) وصل کنیم. و از طریق برنامه نویسی،ان را معرفی کنیم. ان وقت دقت اندازه گیری زمان سنج میکروکنترولر به مانند ساعت واقعی خواهد شد.

در رابطه با سوال دوم.
میکروکنترولر با توجه به کلاک دریافت کارهای خودش را انجام میدهد.منتها بدلیل اینکه، کریستال داخلی،به دما و ولتاژ وابسته است. در زمان بندی ارسال و دریافت دیتا ها بین واحد،ممکن است خطایی رخد دهد یا که بعضی دیتاها سالم به مقصد نرسن! (*که برای کارهای که نیاز به دقت بالایی ندارن،مشکلی بخصوصی نیست)
اما برای کارهای معمولی،به عنوان مثال نمایش یک متن بروی LCD یا روشن کردن LED و یا دماسنج(مدل ایسی) و یا .. هر کار دیگری که دقت بالایی نیاز نداشته باشد،مشکلی بخصوصی به وجود نمی اورد.
یه سوال دیگه هم داشتم
ملاکای انتخاب یه میکرو چیه؟؟؟
اصلا نمیدونم چطور باید یه میکرو رو انتخاب کنیم
اصلا خیلی سطحم در این ضمینه پاینه و فقط دارم با اموزش های شما پیش میام تا همه چی دستم بیاد

چندان کار مشکلی نیست!
بخصوص در سری AVR که همگی شبیه به هستن! (تفاوتشون بیشتر در امکاناتشونه)
به عنوان مثال، سی پی یو ها بیشتر میکروکنترولرهای AVR سری 8 بیت، شبیه به هم هستن! فقط تعداد دیگر واحدهای میکروکنترولرشون با هم تفاوت دارد.!

اما شما به نکته خوبی اشاره کردید،انشالله قبل از شروع مبحث برنامه نویسی مدل های معروف میکروکنترولرهای Avr و قابلیت هاشون رو یک معرفی کوتاه می کنیم.

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Novice Poster
Novice Poster
پست: 60
تاریخ عضویت: پنج شنبه 22 بهمن 1394, 9:03 pm
سپاس‌های ارسالی: 158 بار
سپاس‌های دریافتی: 24 بار

Re: آموزش میکروکنترولر AVR از ابتدا تا پیشرفته(+فهرست)

پست توسط javad_2010 » چهار شنبه 12 اسفند 1394, 11:55 am

ممنون که مثل همیشه با دقت و شکیبایی به سوال های ما پاسخ میدین و مباحثو به طور کامل توضیح میدین
ممنون
:D
یه سوال دیگه هم داشتم در مورد مصرف انرژی میکروها و جریان مصرفی خودشون

Colonel II
Colonel II
نمایه کاربر
پست: 6925
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9170 بار
سپاس‌های دریافتی: 20867 بار
تماس:

Re: آموزش میکروکنترولر AVR از ابتدا تا پیشرفته(+فهرست)

پست توسط sinaset » پنج شنبه 13 اسفند 1394, 3:23 pm

بنام خداوند بخشنده و مهربان
با سلام


قبل از هر چیز،انشالله مسئله که گفتید به وقتش بررسی خواهیم کرد .

اما وضعیت پورت ها در AVR
پورت ها

همانجور که به خاطر دارید،در مبحث IO ها گفتیم،تعداد زیادی از پایه هایی میکروکنترولر مخصوص IO (یا همان دریافت یا انتقال اطلاعات) هستن. حال می خواهیم این مبحث را باز تر کنیم.
تصویر
همانجور که در تصویر بالا (میکروکنترولر Atmega32) میکروکنترولر مورد نظر ما از 40 پایه تشکیل شده،که مجموعا 32 پایه ان برای IO در نظر گرفته شده است . اما برای اینکه کارما راحتر باشد،شرکت سازنده،هر پایه را به یک اسم مشخصی، معین کرده است.


همانجور که در تصویر می ببینید، هر 8 پایه ، با یک نام مشخص شده که معمولا اول ان PORT بعد به دسته بندی های PORT B و PORT C و PORT D و PORT A تقسیم شده اند. که هر دسته بندی شامل 8 پایه می باشند. که این پایه ها در هر دسته بندی از 0 تا 7 نام گذاری میشوند.(در تصویر بالا به صورت مخفف نوشته شده PD وPCوPAوPB که P اول مخفف PORTمی باشد)
دلیل اصلی این نام گذاری ها،برای راحتی کار در برنامه نویسی می باشد. بعنوان مثال. اگر خواستیم دیتایی را به کمک پایه 1 میکروکنترولر ارسال کنیم. بگویم PORTB 0 دیتا را بفرست!
دلیل دیگر نیز، می توانیم به کمک یک دیتایی 8 بیتی (یا همان 1 بایتی) ، با یک دستور،به 8 پایه بدون دردسر،دستور دهیم! اما دلیل دیگری نیز وجود دارد،که انشالله در اینده به ان می شوید.

پس به طور کلی دسته بندیی ها در میکروکنترولر مد نظر:

دسته PORTB
تشکل شده از 8 پایه با نام هایی
PORTB 0
PORTB 1
PORTB 2
PORTB 3
PORTB 4
PORTB 5
PORTB 6
PORTB 7

دسته PORTC
تشکل شده از 8 پایه با نام هایی
PORTC 0
PORTC 1
PORTC 2
PORTC 3
PORTC 4
PORTC 5
PORTC 6
PORTC 7


دسته PORTA
تشکل شده از 8 پایه با نام هایی
PORTA 0
PORTA 1
PORTA 2
PORTA 3
PORTA 4
PORTA 5
PORTA 6
PORTA 7


دسته PORTD
تشکل شده از 8 پایه با نام هایی
PORTD 0
PORTD 1
PORTD 2
PORTD 3
PORTD 4
PORTD 5
PORTD 6
PORTD 7


در باقی میکروکنتروهای avr نیز بسته به تعداد پایه ها دسته بندهی ها کمتر و یا بیشتر می شوند.

وضعیت پورت در AVR

اما نکته بسیار مهم دیگر، وضعیت پورت در AVR می باشد. هر پایه IO در میکروکنترولر AVR می تواند 4 وضعیت مختلف را درک کند!


همانجور که قبلا گفتیم پین ها AVR را باید به دو صورت تعریف کنیم،یا به صورت ورودی ، یا به صورت خروجی . حالا در وضعیت ورودی می تواند دو وضعیت مختلف را درک کند و در حالت خروجی می تواند دو وضعیت مختلف را درک کند. که جمعا 4 وضعیت مختلف را می تواند درک کند.

تصویر
  که در تصویر بالا می ببینید. یک پین میکروکنترولر، دو حالت مختلف دارد، 1- به صورت ورودی که به ان PIN می گویند. 2- به صورت خروجی که به ان PORT می گویند. 

که ما به کمک DDR (که در تصویر بالا مشخص است ) وضعیت ورودی و خروجی بودن پین را مشخص می کنیم (که انشالله در اینده،با اشنا خواهید شد و خیلی زیاد با ان کار خواهید داشت)

تصویر
  که در تصویر بالا می ببینید،وقتی میکروکنترولر در وضعیت ورودی قرار بگیرد.می تواند ورودی ها 0 و 1 ارسالی به خودش را متوجه بشود و ان را برای میکروکنترولر بفرستد.   وقتی در وضعیت ورودی باشد، می توان پایه را در دو حالت مختلف قرار داد،تا اطلاعات بهتر و دقیق تر خوانده شود !  1- در وضعیت معمولی  2- در وضعیت امپدانس بالا.   وضعیت اول هیچ چیزی به پین اعمال نمی شود اما در وضعیت دوم ، امپدانس بالا، می روید. این یعنی اینکه،سطح منطقی ایسی نه 0 است و نه 5 ولت! (وضعیت که میکرو نمی تواند چیزی را تشخص دهد ) و این برای زمانی که می خواهیم کارها دقیق تر و بهتر انجام شود و یا جلوی نویزها گرفته شود بسیار خوب و کارکشاست. 
تصویر
 در وضعیت خروجی هم به مانند ورودی،می توان دو وضعیت مختلف را به وجود اورد.   که مقاومت پول اپ (آشنایی به مقاومت پول آپ ) فعال شود،و زمانی که مقاومت پول اپ خاموش باشد.    بازهم این کار برای دقت در کارها و جلوگیری از نویز و ... بسیار خوب و راهگشا می باشد.   انشالله در زمان کار کردن با میکرو بهتر این مسائل را درک خواهید کرد .  .  پشتیبان عکس ها([لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] )
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 6925
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9170 بار
سپاس‌های دریافتی: 20867 بار
تماس:

Re: آموزش میکروکنترولر AVR از ابتدا تا پیشرفته(+فهرست)

پست توسط sinaset » جمعه 14 اسفند 1394, 12:01 pm

بنام خداوند بخشنده و مهربان
با سلام

مبحث پورت ها و کارایی ها ان مبحث نسبتا طولانی می باشد،که انشالله در مبحث ها اینده بهتر و دقیق تر با اشنا خواهید شد.( و در پست بعدی به باقی پایه ها میکروکنترولر می پردازیم.)

اکنون می خواهیم با واحد جدیدی اشنا شویم .
سگ نگهبان Watchdog
واحد سگ نگهبان ، یا نگهبان دستورات نوشته شده ما.

تصور کنید،میکروکنترولر، به دلیلی هنگ کند!و ما به ان دسترسی نداشته باشیم! ان وقت ما نمی توانیم (!)،مدارمان را از دوباره ریست کنیم،تا از دوباره دستورات را اجرا کند! اما این مشکل با واچ داگ قابل حل است !


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

Colonel II
Colonel II
نمایه کاربر
پست: 6925
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9170 بار
سپاس‌های دریافتی: 20867 بار
تماس:

Re: آموزش میکروکنترولر AVR از ابتدا تا پیشرفته(+فهرست)

پست توسط sinaset » شنبه 15 اسفند 1394, 10:50 am

بنام خدا
با سلام



مروری دوباره بر پردازش 8 بیت و فرکانس در سی پی یو

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

سی پی یو میکروکنترولر AVR ( به غیر از سری avr32 و xmega و ..) 8 بیتی هستن. این بدین معناست،که واحدهای سی پی یو می تواند 8 بیت داده را همزمان دریافت کنند .

اما در رابطه با فرکانس.


فرکانسی که سی پی یو از کریستال دریافت می کند،به شکل موج سینوسی می باشد.
 تصویر   که در تصویر بالا می ببینید،ابتدا کلاک سینوسی توسط کریستال کوارتز (معروف به کریستال) تولید میشود،سپس به سمت میکرو فرستاده میشود،سپس میکرو ان را تبدیل به پالس یا همان موج های مربعی مورد استفاده واحد های خود می کند.  *دلیل استفاده از موج مربعی،ساختن 0 و 1 دقیق می باشد.(در موج ها دیگر به دلیل اینکه پیوسته پیوسته افزایش و یا کاهش پیدا می کنند،ساختن 0 و 1 دشوار است و چندان دقیق نمی باشد)   که توسط کریستال کوارتز تولید میشود به مانند شکل زیر می باشد.  تصویر   حرکت موج از 0 تا به بالا و بعد حرکت به سمت منفی و بازگشت به سطح صفر، چرخه اول کلاک گفته میشود   در صورتی که دوبار این حرکت تکرار شود،کلاک کاری گفته میشود .  تصویر.  چرخه اول کلاک.  که تبدیل به پالس مربعی مورد استفاده میکروکنترولر شده است 

اما این فرکانسی که توسط کریستال کوارتز تولید میشود، بین 1 تا 16 مگاهرتز می باشد.که این بدین معناست که در ثانیه 1 تا 16 میلیون نوسان یا موج سینوسی تولید میشود و به سی پی یو فرستاده میشود.
که بعد میکروکنترولر به کمک واحد کنترول کلاک،ان را بین اجزایی خود تقسیم می کند.بعد واحدها این ها فرکانس ها را تبدیل به 0 و 1 دیجیتال (داده ها) خود می کنند و بین هم دیگر ارسال می کنند.
انشالله اگر شد،مبحث معماری ریسک میکروکنترولر AVR و نحویه ارسال دستورات را در پست های بعدی بررسی خواهیم کرد.
باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 6925
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9170 بار
سپاس‌های دریافتی: 20867 بار
تماس:

Re: آموزش میکروکنترولر AVR از ابتدا تا پیشرفته(+فهرست)

پست توسط sinaset » یک شنبه 16 اسفند 1394, 11:05 am

بنام خداوند بخشنده و مهربان
با سلام

معماری ریسک در AVR تصویر 
اگر یک جستجو کوتاه در اینترنت انجام دهید،خواهید دید مقالات زیادی در این رابطه وجود دارد.! معماری ریسک ، یک از معروف ترین و پرکاربردترین معماری ها در CPU می باشد.(بخصوص موبایل های امروزی)

ما دو نوع معماری مهم داریم CISC و RISC .

مهمترین تفاوت این دو معماری در نحویه انجام دستورات می باشد.! تصویر 
در معماری CISC دستورات مهم و اساسی (که در مبحث CPU اشارهی به بعضی از انها شددرون خود CPU قرار داده شده! و این امر باعث میشود،ما با خط های برنامه نویسی کمتر،کارهای خودمان را انجام دهیم! اما نقطعه ضعف این معماری این است که، چون حجم زیادی از دستورات درون سی پی یو می باشد، و سی پی یو برای انجام پردازش بیش از 40 تا 60 درصد ترانزیستورهایی را به خودش اختصاص دهد! و این امر علاوه بر اینکه باعث ایجاد تلفات بالا (مصرف انرژی) می شود،در انجام کارهایی ما کارایی کمتری دارند! (طبق تحقیقات معتبر انجام شده)

در معماری RISC شکل و شمایل گذرگاه و .. با CISC متفاوت می باشد،و دستورات (که قبلا ذکر کردیم ) از بیرون داده میشود، و به کمک واحدهای حافظه(ثبات همه منظور (32 بایتی) (که قبلا معرفی شده)) ابتدا دستورات ذخیر موقت میشوند،سپس تغییرات اعمال میشوند. که همین امر باعث میشود که در پردازش ها درونی سی پی یو فقط 10% ترانزیستورها درگیر شوند! که این امر باعث کاهش انرژی و پروسس پردازش و .. میشود.اما! این از نقاط ضعف این معماری،نوشتن دستورات العمل ها بیشتر و پیچیده تر می باشد!

به عنوان مثال وقتی بخواهیم یک عمل جمع را در سی پی یو با معماری RISC انجام دهیم:

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

مثالی در معماری سی پی یو CISC:

خط اول.اعداد ادرس اول و دوم را دریافت کن و حاصل جمع را در ادرس اول قرار بده.


همانجور که در مثال بالا دیدید، پروسس برنامه نویسی در RISC بیشتر از CISC می باشد .
به عبارتی می توان گفت. پروسس برنامه نویسی در RISC پیچیده و پروسس پردازش در CISC سنگین تر می باشد !

لازم به ذکر است،در برنامه نویسی C ( یاهمانی برنامه نویسی که انشالله با ان اشنا خواهید شد) نیازی به نوشتن خط های برنامه نویسی،مثل مثال بالا نیست! چون خود نرم افزار کدهای مربوطه را تولید می کند .!(به زبان اسمبلی )
اما گفتن مسائل بالا بیشتر برای درک بیشتر ، پروسس پردازش در AVR و دیگر شرکت ها می باشد.
 تصویر   بالا برگه مشخصات Atmega32 می باشد. همانجور که می بینید، این سی پی یو از نوع 8 بیتی،کم مصرف و همچنین با معماری ریسک می باشد .   سی پی می تواند 131 دستورالعمل مختلف (مثل جمع،منها،تفریق،تقسیم، Not و or و xor و پرش ها خط و خیلی دستورات مهم دیگرها) را برای سی پی یو ارسال کند! که از نکات جالب ان این است که،بیش از 95 درصد ،این دستورالعمل ها را می تواند فقط با 1 کلاک ارسال کند!(*هر یک دستورالعمل،نه 131 دستورالعمل به صورت یکجا)   عبارت ساده تر! اینکه گفتیم میکروکنترولر AVR می تواند با 1 مگاهرتز فرکانس 1 میلیون محاسبه انجام دهد! مربوط به همین مسئله(و معماری ریسک) می باشد. در واقع هر 1 کلاک مساوی است با 1 دستورالعمل.  [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]مقاله برای مطالعه بیشتر معماری   پایان مبحث معماری.  . 
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 6925
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9170 بار
سپاس‌های دریافتی: 20867 بار
تماس:

Re: آموزش میکروکنترولر AVR از ابتدا تا پیشرفته(+فهرست)

پست توسط sinaset » دو شنبه 17 اسفند 1394, 2:42 pm

بنام خدا
با سلام


بهتر است با بعضی از پایه ها دیگر میکروکنترولر (به غیر از IO ها) آشنا شویم.

پایه تغذیه میکروکنترولر

همانجور که اطلاع دارید،میکرو و ایسی ها،برای فعالیت خود نیاز به جریان برق و تغذیه خوب و مناسب دارن.

در میکروکنترولر AVR دو پایه اصلی برای این کار، وجود دارد:
تصویر
یکی پایه ان مثبت که با VCC مشخص میشود و یک پایه منفی که با GND مشخص میشود.

اما چند مسئله در تغذیه میکروکنترولر مطرح است. چون ما در حال محاسبه هستیم،و محاسبات ما دقیق است وبا ولتاژ هم در ارتباط است، پس باید یک ولتاژ بدون نوسان،بدون نویز،بدون افت ، افزایش و در یک کلام ثابت و صاف، تحویل میکرو بدهیم .

این ولتاژ باید چقدر باشد؟!
تصویر
  بیشتر میکرکنترولر AVR ها ( حتا سایر شرکت ها) و ایسی ها . سقف ایده ال 5 ولت می باشد.یعنی میکروکنترولر ما در صورتی که یک ولتاژ صاف و ثابت +5 ولت برایش تهیه کنیم،به راحتی و بدون مشکل محاسبات و همه کارهای خودش را انجام میدهد (*لازم به ذکر است،میکروکنترولرها و ایسی های پیشرفته جدید با ولتاژ کمتر از 5 ولت کار می کنند.اما میکروها ما اکثر با ولتاژ 5 ولت کار می کنند)   برای اینکه بتوانیم یک برق خوب +5 ولت برای تغذیه میکرو تهیه کنیم ،باید به کمک رگولاتور(آشنایی با رگولاتور) ان را بر روی +5 ولت فیکس . و بعد در کنار ان به کمک چند عدد خازن ،نویز و نوسان ها برق را از بین ببریم. 
تصویر
 باهم دیگر دو مدار برای منبع تغذیه AVR را بررسی می کنیم: 
تصویر
  تغذیه،که دو مدار بالا به ان وصل می باشند،باید DC (مثل ترانس 7 تا 12 ولتی DC و یا باتری ها )باشند . و اگر AC باشد (که کمتر پیش می اید)باید DC شود(و از خازن صافی بگذرد) سپس به مدار های ما داده شود.   470 به کار رفته در مدار،زیاد می باشد،می توانید از یک خازن 100 میکروفاراد هم استفاده کنید . مدار دوم معرفی شده،کمتر مورد استفاده قرار می گیرد (ولی از لحاظ ایمنی و صافی و ..بهتر می باشد) .به شخصه مدار اولی را بیشتر مورد استفاده قرار میدهم .  مدارهای بیشتر در زمینه تامین منبع تغذیه میکروکنترولر وجود دارد،که می توانید خودتان در این زمینه تحقیق کنید .  انشالله در پست بعدی باقی پایه ها غیر IO را بررسی می کنیم..  . 
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 6925
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9170 بار
سپاس‌های دریافتی: 20867 بار
تماس:

Re: آموزش میکروکنترولر AVR از ابتدا تا پیشرفته(+فهرست)

پست توسط sinaset » سه شنبه 18 اسفند 1394, 9:50 am

بنام خداوند بخشنده و مهربان
باسلام


ادامه معرفی پایه های غیر IO میکروکنترولر

پایه RESET (ریست)

ما در کامپیوتر و موبایل و بیشتر دستگاهایی هوشمند،دکمه به نام ریستارت داریم،که با زدن ان،سیستم ریستارت میشود! اما ریستارت به معنی پاک کردن همه اطلاعات هارد دیسک و .. نیست! بلکه سیستم به نوعی خاموش میشود و از دوباره اطلاعاتش را بارگذاری می کند.

در میکروکنترولر چنین قابلیت ایجاد شده، و ما به کمک پایه RESET می توانیم از این قابلیت استفاده کنیم.(لازم به ذکر است در مبحث واچ داگ گفتیم،وقتی میکرو هنگ می کند،واچ داگ میکرو را ریستارت می کند.نوع ریست واچ داگ و پایه ریست که امروز می خواهیم معرفی کنیم،یکی می باشد و از یک منبع به وجود می ایند)

تصویر
تصویر




اما ما برای اینکه بتوانیم از پایه RESET میکرو استفاده کنیم،چه کاری باید انجام دهیم؟!


ما برای اینکه میکرو را ریست کنیم،باید برای چند لحظه خیلی کوتاه! پایه RESET را به GND یا همان زمین مدار(یا همان منفی) وصل کنیم ،سپس ان را رها کنیم .
برای این منظور نیاز به یک دکمه فشاری (تک وضعیته.آشنایی با کلیدها در اینجا) و یک طرف کلید را به GND بدهیم و خروجیش را به RESET بدهیم، حال وقتی برای چند لحظه دکمه را فشار دهیم و سپس رها کنیم،میکرو ریستارت میشود!

*اما یک نکته مهم.پایه RESET ،حساس به نویز می باشد.!پس ما باید یک جریان بسیار ضعیف مثبت به رویش بی اندازیم تا نویزها باعث ریستارت شدن میکرو نشود ( Pull-up).پس باید حتما یک مقاومت از 4.7 تا 10 کیلواهمی از مثبت،بر روی پایه RESET قرار دهید.(*در اکثر مواقع اگر جریان برقی بر روی پایه RESET نباشد،اصلا میکرو فعالیت نمی کند!به دلیلی مسائل که ذکر شد)

مدار پیشنهادی برای پایه RESET:
تصویر

بشخصه از دکمه ریستارت در میکروکنترولر زیاد استفاده نکردم! اما در کارهای حرفه ای،نیازش حتما احساس میشود. (*معمولا پایه RESET کمتر استفاده میکنم،برای همین مستقیم به VCC وصلش میکنم،پیشنهاد میکنم اگر شما خواستید چنین کاری انجام دهید،(و به پایه ریست نیازی نداشتید) با مقاومت 4.7 تا 10 کیلواهمی به VCC وصلش کنید.)

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

همانجور که تا به الان متوجه شدید،در میکروکنترولر ،می توان به روش های مختلف میکرو را ریستارت کرد. بهتر است یه نگاهی دقیق تری به جایگاهی که به وقفه ریست بی اندازیم.(یعنی جایی که میکرو را ریستارت میشود).

تصویر
 همانجور که در تصویر بالا می ببینید،مجموعا 5 واحد مختلف می توانند:  1- POWER-ON Rest Circuit : در صورتی که ولتاژ از مقدار Vpot (یک ولتاژ مشخص شده توسط کارخانه) پایین تر بی اید،میکرو را ریستارت می کند(که برای میکروکنترولر Atmega32 مد نظر ما،حدود 2.3 ولت می باشد)  2-Brown-out Rest Circuit : این منبع برای برای ریست،سفارشی می باشد،ما می توانیم به کمک تنظیمات میکرو(فیوزبیت ها)،یک سقف برای ریستارت شدن تایین کنیم.(که برای میکرو کنترولر مگا 32 سه وضعیت می باشد 1-غیرفعال 2- 2.7 تا 2.9 ولت 3- 4.0 تا 4.2 ولت )  3- Reset Circuit : این منبع هم که چند خط بالاتر توضیح دادیم،به وصل کردن یک کلید فشاری و فرستادن یک پالس از منفی،میکروکنترولر ریستارت   4-WatchDog: که در چند پست قبل تر توضیح دادیم،  5-JTAG: ( اگر فرصت شد در اینده گذری به ان خواهیم انداخت ) به کمک این منبع هم می توانید میکرو را ریستارت کنید.  . 
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 6925
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9170 بار
سپاس‌های دریافتی: 20867 بار
تماس:

Re: آموزش میکروکنترولر AVR از ابتدا تا پیشرفته(+فهرست)

پست توسط sinaset » چهار شنبه 19 اسفند 1394, 8:07 am

بنام خداوند بخشنده و مهربان
باسلام

در ادامه معرفی پایه های غیر IO امروز به پایه ....!

پایه های کریستال خارجی XTAL

در میکروکنترولر 2 پایه برای کریستال خارجی در نظر گرفته شده،که به کمک انها می توانیم کریستال از 1 تا 16 مگاهرتز به ان وصل کنیم. (که در پست های قبلی نوسان سازی با کریستال خارجی توضیح داده شده بود)

تصویر
تصویر
 اما وصل کردن کریستال کوارتز به دو پایه XTAL2 و XTAL1 چطور می باشد؟!   راحت! یک پایه را به XTAL1 میدهیم و دیگر پایه را به XTAL2 .(*فرقی نمی کند،که کدام پایه کریستال را به کدام پایه میکرو (بین XTAL1 و XTAL2 )بدهیم!)    همانجور که قبلا هم گفتیم،در میکروکنترولر و اطراف ان همیشه نویز وجود دارد.برای حل این مشکل بهتر است زمانی که از یک کریستال خارجی (بخصوص در فرکانس بالا) استفاده می کنیم،دو عدد خازن 22 پیکوفاراد به دو پایه کریستال بزنیم،تا مشکلی به وجود نیااید. 
تصویر
یک طرف خازن ها بر روی کریستال و طرف دیگر به سمت GND یا همان زمین مدار.
 --   پست های قبلی به این نکته اشاره کردیم که،برای ساخت ساعت باید از کریستال 32.768 استفاده کنیم.*اما کریستال 32.768 در میکروکنترولر مگا 32 به دو پایه XTAL1 , XTAL2 وصل نمی شود! بلکه برای ان دو پایه دیگر وجود دارد،که انشالله در اینده و در زمان کار با واحد های TIMER میکروکنترولر با اشنا خواهید شد.   تقریبا معرفی پایه های میکروکنترولر به پایان رسید و تنها سه پایه GND و AREF و AVCC باقی (پایه 32 و 31 و 30) که این پایه ها مربوط واحد ADC و برق اضافه برای میکرو می باشد.که انشالله در مبحث ADC (آنالوگ به دیجیتال) با ان اشنا خواهید شد.  پایان مبحث معرفی پایه ها میکرو.  . 
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 6925
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9170 بار
سپاس‌های دریافتی: 20867 بار
تماس:

Re: آموزش میکروکنترولر AVR از ابتدا تا پیشرفته(+فهرست)

پست توسط sinaset » چهار شنبه 19 اسفند 1394, 9:09 am

فیوز بیت ها FUSE BIT
تصویر
کلمه فیوز احتمالا به معنی ترکیب کردن می باشد. و احتمال فیوز بیت باید معنی بیت های ترکیبی رو بده .

اما فیوزها چی هستن و چرا اینقدر مهم می باشند؟!

فیوزبیت ها در یک کلام،عملکرد میکروکنترولر رو تعویض می کنند و به ان حالت مختلف و جدید می دهد. یک مقاله در گذشته می خواندم،بنظر امد این جمله رو ازشون نقل کنم. فیوزبیت ها از ساخت میکروکنترولرها متنوع جلوگیری می کنند! در واقع ما با یک سری بیت ساده،می توانیم مکانیزم میکرو را عوض کنیم !(به عنوان مثال سرعتش را زیاد کنیم، میکرو رو قفل کنیم، بعضی واحدهایش را خاموش کنیم و ...)

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

هر میکروکنترولر تعدادی فیوزبیت دارن که نسبت،به مدل ان متفاوت می باشد.(اما کثرا شبیه به هم می باشند و بعضی میکروکنترولرها گران قیمت تر و پایه دار تر،فیوزبیت های متنوع بیشتری دارند)


در پست بعدی،فیوزبیت های میکروکنترولر Atmega32 را معرفی خواهیم کرد.
باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 6925
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9170 بار
سپاس‌های دریافتی: 20867 بار
تماس:

Re: آموزش میکروکنترولر AVR از ابتدا تا پیشرفته(+فهرست)

پست توسط sinaset » جمعه 21 اسفند 1394, 10:33 am

بنام خداوند بخشنده و مهربان
باسلام

ادامه مبحث فیوزبیت ها.


همه فیوزبیت ها میکروکنترولر Atmega32 می باشد:
تصویر
  فیوزبیت اول LOW Fuse یعنی Bod level و Bod En مربوط به منبع ریست Brown-out Rest Circuit که چند پست قبل توضیح دادم(اگر بخاطر داشته باشید،گفتیم،که می توانیم یک سقف ولتاژ برای ریست کردن میکروکنترولر تایین کنیم)   کمک فیوزبیت BODLEVEL سطح ولتاژ (2.7 یا 4 ولت) را می توان تایین کرد و به کمک Boden هم می توان کلا این منبع را غیر فعال یا روشن کرد .  به کمک دو فیوزبیت STU1و STU0 می توانید، سرعت بارگذاری میکروکنترولر بعد از رسیدن برق به پایه هاش تایین کرد (که بیت چندان مهمی نیست ، و مانند تصویر بالا قرار بدید،تا 65 میلی ثانیه میکروکنترولر بعد از رسیدن برق فعال بشه)   بعدی، CKSEL صفر تا سه (0 تا 3) مربوط به تایین فرکانس کاری میکروکنترولر می باشد. که به کمک جدولی که در تصویر داده شده،می توانید فرکانس داخلی میکرکنترولر را تایین کنید.  تنظیم فیوزبیت ها برای کریستال کوارتز خارجی :  اما اگر بخواهیم از کریستال خارجی 1 تا 8 مگاهرتز استفاده کنیم باید وضعیت سه بیت CKSEL3 ,CKSEL2 ,CKSEL1 را همگی 1 کنیم (اگر CKSEL0 رو هم یک کنید،مشکلی پیش نخواهد امد)   اما اگر بخواهیم از کریستال خارجی 8 تا 16 مگاهرتز استفاده کنیم باید وضعیت سه بیت CKSEL3 ,CKSEL2 ,CKSEL1 را همگی 1 کنیم (اگر CKSEL0 رو هم یک کنید،مشکلی پیش نخواهد امد) و باید فیوزبیت * CKOPT را 0 کنید (یا همان فعال کنید)..در صورتی که این فیوزبیت فعال نشود،میکرو در فرکانس 8 مگاهرتز فعالیت می   *فیوزبیت CKOPT:در این وضعیت،میکروکنترولر موج های قوی تری تولید می کند(دامنه موج های خود را به +5 ولت افزایش میدهد) در نتیجه نویز و .. نمی تواند بر روی فرکانس تاثیر  
تصویر
  مهم،وقتی که از کریستال خارجی استفاده می کنیم.خود میکروکنترولر سرعت را می تواند تشخیص بدهد.(ما کریستال مد نظر خودمان را با سرعت مد نظر ،خریداری می کنیم و بعد به میکرو میدهیم )   یک نکته بسیار مهم دیگر،هیچ وقت فیوزبیت ها را به مانند شکل زیر،تایین نکنید( چهار وضعیت CKSEL همگی 0 ! در این وضعیت که به ان EXternal Clock می گویند ( و در چند پست قبل هم توضیح دادم ) قرار می گیرد و باید به پایه Xtal1 یک موج مربعی بدهیم
تصویر
  دارد...  . 
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

ارسال پست

بازگشت به “آموزش و مثال‌ها AVR”