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

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

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

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

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

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

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

پست توسط sinaset » دو شنبه 3 اردیبهشت 1397, 9:23 am

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


با عرض پوزش بابت تاخیر
بهتر است وارد مبحث تایمر ها شویم !

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

تایمر ها،بسته به مدلشان،دقت بالایی دارند! چون مستقل کار می کنند!برای محاسبات دقیق می توان از انها کمک گرفت و با دقت کارها را پیش برد!

نحویه عملکرد واحد تایمر،بدین صورت می باشد! که به کمک میکروکنترولر دستوری برای واحد تایمر ارسال میشود! تا تایمر شمارش را شروع کند!( مثلا از 0 شروع کن تا به 1000 میکروثانیه برسی) سپس وقتی به میزان یا حد مد نظر رسید، Overflow میشود (یعنی سریز میشود) و به کمک وقفه به میکروکنترولر گزارش داده میشود!( دقیقا مثل زمانی که وقفه خارجی تابعش اجرا میشد! در تایمر ها، بعد از Overflow شدن، تابع Timer اجرا میشود)
در زمانی که تابع Timer اجر میشود، دوباره دستور دهی مقداری دهی به واحد تایمر داده میشود،تا از دوباره کارش را شروع کند ! همچنین در تابع نیز دستورات مورد نیاز خودمان نوشته میشود!

مثلا تصور کنید! می خواهید یک LED هر 500 میلی ثانیه یک بار خاموش و روشن بشود! (به صورت دائم) اگر بخواهید، این کار را با حلقه while انجام دهید! و کارهای زیادی دیگری در کنارش نیز انجام دهید! احتمالا دستورات دیگر با مشکل برخواهند خورد و کارها بدرستی شاید پیش نرود!
برای همین به سراغ واحد تایمر می روید! و در تابعه مربوط نیز دستورات لازمه برای روشن و خاموش شدن LED را می نویسیم! بدین طریق! دستورات شما در حلقه while اجرا میشود! در کنار ان هر وقت زمان 500 میلی ثانیه تمام شد! تابع وقفه تایمر اجرا میشود و دستورات مربوط به LED را اجرا میکند! بدین طریق، محاسبات و وقت CPU نیز برای کارها ارزشمندتری،گذاشته میشود ...

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

New Member
پست: 10
تاریخ عضویت: چهار شنبه 9 خرداد 1397, 11:58 am
سپاس‌های ارسالی: 9 بار
سپاس‌های دریافتی: 4 بار

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

پست توسط TeamDigital » پنج شنبه 10 خرداد 1397, 12:12 am

سلام خیلی عالی بود مرسی .. مبحث تایمرا ها رو ادامه ندادید؟ یا جای دیگه اموزش داده شده ؟

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

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

پست توسط sinaset » پنج شنبه 10 خرداد 1397, 11:51 am

باسلام

در ادامه!

تایمر یک واحد جدا درون میکروکنترولر می باشد! به تصویر زیر دقت کنید

تصویر
 ،از طریق،مرکز clock به واحد تقسیم فرکانسی فرستاده میشود! سپس در انجا (برا اساس تنظیمات،که اعمال کردیم،)کلاک تقسیم میشود،تایمر فعال میشود ،سپس در واحد timer count شمارش،شروع میشود، بعد از اتمام شمارش، یک سیگنال overflow فرستاد میشود و سپس در انتها، وقفه صورت می گیرد!      تایمر جزو ساده ترین تایمرهای میکروکنترولرهای AVR می باشد! که همگی به صورت 8 بیتی هستن! و معمولا در ا کثر میکروکنترولر ها تایمر 0 ، جزو ساده ترین ها می باشند و به جز شمارش 8 بیتی و OverFlow شدن چیزی دیگری ندارد!   اما شمارش هشت بیتی چیست؟! (یا تایمر با دقت 8 بیت،یا هشتی بیتی بودن تایمر!)   Timer count (در تصویر بالا ببینید) از مجموعه از فلایپ فلاپ ها تشکیل شده! و به ازایی 1 کلاک ،یک واحد افزایش پیدا می کند! حال اگر ما یک تایمر هشت بیتی داشته باشیم، یعنی مجموعه 256 (از 0 تا 255) شمارش میشود،یعنی باید 256 کلاک برای تایمر فرستاد شود تا تایمر به سقف خود برسد (255)،سپس Overflow (یعنی سرریز شدن )میشود و اینتراپت تایمر فراخوانده میشود .. و بعد تایمر ریست میشود و از دوباره شروع به شمارش میکند!  اما چطور زمان مد نظرمان را می توانیم،با تایمر درست کنیم!؟   کنید،قصد دارید هر 1 یا 10 یا 100 میلی ثانیه! تایمر Overflow شود ، و تابع تایمر 0 فراخوانده شود..    این منظور از همون تقسیم فرکانس(Prescalar) و تنظیم مقدار اولیه شمارش! استفاده میشود!   به ذکر است، همه زمان را نمی توان با تایمر 0 انجام داد! مثلا اگر 50 میلی ثانیه مد نظر شما باشد، ان را به 49.92 میلی ثانیه تغییر خواهد داد! و این بخاطره دقت هشتی بیتی ان می باشد!    چقدر دقت یک تایمر بیشتر باشد، می توان اعداد دقیق تر و بهتر .. را ساخت و به وجود اورد ...  ادامه دارد..   .  
 
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

New Member
پست: 10
تاریخ عضویت: چهار شنبه 9 خرداد 1397, 11:58 am
سپاس‌های ارسالی: 9 بار
سپاس‌های دریافتی: 4 بار

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

پست توسط TeamDigital » پنج شنبه 10 خرداد 1397, 12:15 pm

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

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

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

پست توسط sinaset » چهار شنبه 6 تیر 1397, 10:08 am

باسلام

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

ارسال پست

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