جناب انوری
www.aparat.com
سالک: این فیلم بالای یک ساعت است، مفاهیم را جناب انوری بحث کرده اول فیلم. یک مقدار خوبه با حوصله این فیلم را گوش بدهید. آقای انوری تلاش خودش را کرده تا مطلب شفاف و درست ارائه بشه و خوبه استفاده بکنیم از این فیلم. یک جاهایی کمی پیچیدگی حس میشه که باید تحمل کنیم.
اتمگا ۱۶ دارای ۳ تایمر است که شماره صفر و ۲ هشت بیتی و شماره ۱ آن ۱۶ بیتی است.
تایمرکانتر...... ((محتوای)) تایمر کانتر درون این قرار می گیرد. افزایشی اصلا معمولا
tcnt0 tcnt1 tcnt2.....shomareh 1 aan 16 biti ast
محتویات این رجیستر ، با متحویات tcnt تغییر می کند
ocr0 ocr1 ocr2
و با مقایسه این دو و با مودی که ما فعال کردیم کارهایی انجام میشه.
پایه ها در اتمگا ۱۶ ، یعنی پایه های مربوط به تایمر کانتر. در فیلم پایه ها را گفته
به شکل ورودی تعریف می شوند.
پایه تی صفر و تی یک ورودی کلاک تایمر هستند.
و tocs1 و tosc2 منبع کلاک خارجی تایمر ۲ است.
و پایه oc0 و oc2 خروجی تایمرهای صفر و یک هستند و oc1b و oc1a خروجی تایمر ۱ هستند.چون تایمر یک ۱۶ بیتی است دو پایه خروجی دارد.
چهار مود تایمر کانتر داریم،
در مود نرمال ، افزایشی است تا به نهایت خودش برسد در تایمر ۸ بیتی نهایتا به ۲۵۵ می رسد...در تایمر ۱۶ بیتی تا ۶۵ هزار می رود.
فلگ tov سر ریز است. که اگر یک شود یعنی تایمر سر ریز شده...
اگر تنظیم کرده باشیم که با سر ریز کاری انجام شده باشد وقفه ای را تنظیم می کنیم.
مود بعدی ، مود مقایسه ای
....زمانی که مقایسه یکی شد ، تایمر را صفر کنیم.tcnt با ocr مقایسه میشه
فلگ ocf یک میشه اگر مقایسه مثبت باشه.
و وقفه مقایسه فعال میشه.
کاربرد در مدولاسیون فرکانس یا fm است.
مود fast pwm :
برای ایجاد موج مربعی pwm با فرکانس بالا است. موج معکوس یا غیرمعکوس است.
کاربردها: در منابع تغذیه سویچینگ ، در یکسوسازی و در تبدیل سیگنال دیجیتال به آنالوگ
مود phase correct pwm:
توضیحاتی در فیلم داده شده.
رجیسترها:
رجیستر tccr ، رجیستری هشت بیتی ، ۳ بیت اولش cs00 و cs01 و cs02 است صفر بعد cs شماره تایمر است که در اینجا تایمر صفر را داریم بحث می کنیم ، این سه بیت مقدار n را برای ما تعیین میکنه. در فیلم فرمولهایی گفته شده که درش حرف n داره. و میگه با این سه بیت مقدار n را مشخص می کنیم. در فرمولهای فیلم ، فرکانس را تعیین می کردیم که یک فاکتورش همین n است.
جدول این سه بیت:
اگر هر ۳ تا صفر باشه ، یعنی اصلا تنظیمی انجام نشده
بعدی ها ، یعنی چقدر از فرکانس cpu بهش داده بشه...اینها میشن کلاک داخلی
دو تای آخری جدول هم ، کار با لبه بالا رونده یا لبه پایین رونده است.این دو تا میشن کلاک خارجی ، یعنی وصل کنیم به اون پایه های to و t1 و .... پایه های میکروکنترلر ، برای کلاک خارجی.
بیت های بعدی این رجیستر
بیت های ۳ و ۶ است که با نام wgm00 و wgm01 هستند...بیت ۶ کم ارزش و بیت ۳ پر ارزشه است.
بیت wgm01 در بیت ۳ است که بیت پر ارزش محسوب میشه.
اگر هر دو را صفر بدهیم ، مود کاری میشه نرمال
مود بعدی fast.....هر دو بیت اگر ۱ باشند میشه fast pwn
مود بعدی phase correctوقتی است که فقط wgm00 یک باشه
برای حالت ctc هم وقتی است که wgm01 یک باشه...clear timer on comape match
بیت بعدی ، شماره ۴ و شماره ۵ ...که com00 و com01 هستند.
عملکرد پایه های oc0 را مشخص می کند.
که با نگاه به این بیت ها ، چند حالت ایجاد میشه که جدول داره. یعنی خروجی این پایه ، چطوری عمل کند...که حالتهایی دارد ، گه در فیلم گفته شده....یعنی کلا چی بریزیم بیرون روی این پایه ها....
یک سری جدول برای هر حالت داره که کمی گیج کننده میشه قضیه.
بیت هفتم: زمانی که یک منطقی در این بیت قرار بگیرد ....در فیلم میگه استفاده ای نداره این بیت و درگیرش نشوید.
می رسیم به وقفه ها:
قدرت وقفه ها را اگر حس کنید علاقه مند می شوید
رجیستر timsk.....یک رجیستر ۸ بیتی است....رجیستر وقفه تایمرکانتر است.
اسم انگلیسی اش: تایمرکانتر اینتراپت ماسک رجیستر است.
دو بیت اول برای تایمرکانتر صفر است
۴ بیت بعدی برای تایمرکانتر یک است
و دو بیت آخر برای تایمرکانتر ۲ است.
در زیر اسم بیت ها را من ننوشتم.
بیت صفر اگر یک شود...سر ریز ، اگر اتفاق افتد سرویس وقفه فعال می شود.
بیت یک ، زمانی که تایمر با ocr یکسان شد ، سرویس وقفه را فعال کن.
بیتهای بعدی را نمی نویسم. همین دو بیت را توضسح دادم.
رجیستر tifr :
در این رجیستر اطلاعاتی هست که به کارمون می آید. ۸ بیت دارد.
باز دو بیت اول برای تایمر صفر و ۴ بیت بعدی برای تایمر یک و دو بیت آخر برای تایمر ۲ است.
دو بیت اول یکی نشان میدهد که سر ریز اتفاق افتاده و دیگری نشان می دهد compare یا مقایسه اتفاق افتاده.
جناب انوری بعد توضیحات تئوری اولین برنامه را کار کرده...
با تایمر صفر کار کرده...با نگاه به بیت یک رجیستر tifr فهمیده چه زمانی تایمر صفر سر ریز کرده.
سالک: رجیستر tifr یک رجیستر مونیتور است یعنی اطلاعات به ما نشان می دهد....
و جناب انوری در برنامه اولش ، با نگاه به بیت اول رجیستر tifr مواقعی که سر ریز رخ داده را پیدا کرده.. ایشان تابعی ساخته که با تایمر صفر بازی می کند و اون را می دواند. و این تابع با دواندن تایمر صفر ، یک زمان را طی می کند که بعدا به عنوان تابع delay برای ایجاد تاخیر استفاده کرده. و با داشتن این تاخیر ، یک پایه میکروکنترلر را با نوشتن یک خط کد ، صفر و یک کرده.
سالک: مثالهای بعدی را شرح ندادم.