Presentation is loading. Please wait.

Presentation is loading. Please wait.

Session 7,8.

Similar presentations


Presentation on theme: "Session 7,8."— Presentation transcript:

1 Session 7,8

2 مطالب این جلسه: بررسی قابلیت های تایمر های AVR زمان سنجی
شمارنده (کانتر) تایمر صفر و دو در حالت پیشرفته تایمر یک در حالت پیشرفته کاربرد سیگنال های pwm تایمر watchdog

3 تایمر تایمر یکی از اجزای میکروکنترلر است که برای ما حسی از زمان را ایجاد می کند و با توجه به ساعت میکروکنترلر سرعت شمارش آن تنظیم می شود. مثل؟؟؟ شمارنده تایمر می تواند به عنوان شمارنده به کار رود و تعداد دفعات وقوع یک رخداد را بشمارد. مثل؟؟؟؟

4 چرا از تایمرها استفاده می کنیم؟
 تایمر کانتر یکی از بخش های مهم میکروکنترلرها می باشد. در بیشتر مواقع لازم که تعدادی وقایع خارجی (با سرعت بالا) شمارش شود و یا گاهی لازم است که در یک زمان خاص و دقیق، کاری صورت گیرد. تنها توسط تایمر کانتر ها می توان این کارهای دقیق و با سرعت بالا را انجاد داد. میکروکنترلرهای AVR حداکثر دارای شش عدد تایمر کانتر هشت بیتی و شانزده بیتی هستند. برخی از آنها دارای عملکرد ساده و برخی دیگر دارای امکانات بیشتر نظیر تولید موج PWM ، حالت مقایسه CTC ، حالت تسخیر، عملکرد غیر همزمان و ... می باشند. بطور مثال اگر بخواهیم میکروکنترلر: 1. هر چند وقت یک بار، به وسیله ADC ولتاژ سنسور دما را بخوانیم 2. هر ثانیه یک واحد به ثانیه شمار یک ساعت دیجیتال اضافه کند 3. به وسیله یک کلید، بین نمایش ساعت و دما تغییر کند 4. همواره نور صفحه را به وسیله ولتاژ خروجی یک مقاومت نوری، تنظیم کند انجام این چهار عمل به وسیله کدهای ساده و بدون استفاده از تایمرها غیر ممکن یا بسیار نامفهوم و دشوار خواهد بود!

5 ساختار تایمرها: همانطور که در شکل می بینید، تایمرها مجموعه ای از حافظه هایی (معروف به Flip-Flop) هستند که پشت سرهم قرار گرفته اند و نماینده یک عدد دودویی اند. در این نمونه یک تایمر 3 بیتی را می بینیند که به ازای هر کلاک، یک واحد دودویی به مقدار این 3 بیت اضافه می شود! و زمانی که به حداکثر مقدار خود می رسد، دوباره صفر می شود!

6 تعاریف موجود در واحد تایمر/کانتر
در حالت کلی میتوان عملکرد تایمر ها را در 4 مد تقسیم بندی کرد.از آنجایی که هر 4 مد در تمامی تایمر ها مشترک است ابتدا مد های تایمر ها رابررسی کرده و سپس رجیستر های مربوط به هر تایمر را شرح میدهیم.اما قبل از شروع کار نیاز به تعریف 3 اصلاح زیر داریم رسیدن مقدار ریجستر تایم به 0xff(8بیتی) یا 0xffff(16بیتی)را مقدار حداکثر تایمر یا مقدار ماکزیمم تایمر (max)می نامیم این اصطلاح را در مد نرمال به کار نمیگیریم زیرا top برابر max است و در مد های دیگر کاربرد دارد موقعه ای که مقدار رجیستر تایم به بزرگترین مرحله شمارش میرسد top اتفاق افتاده است . مقدار TOP در مد fast pwmو phase correct pwm برای تایمر های 8 بیتی مقدار ثابت 0xffو در تایم 16 بیتی میتواند اعداد ثابت 0x01ff,0x00ff و 00x03ffرا داشته باشد یا اینکه متغییر باشد رسیدن مقدار ریجستر تایمر به حداقل مقدار تعریف شده( در حالت پیش فرض0x00 یا 0x0000) را گویند.توجه کنید که مقدرا bottom لزوما صفر نیست و میتواند تعیین شود.

7 ساختار واحد تایمر و کانتر:
میکروکنترلر AVRاغلب دارای سه تایمر (Timer0 , Timer1, Timer2) می باشد تایمر 0و بیتی تایمر بیتی به ازای هر یک سه ثبات اساسی زیر وجود دارد: 1. TCNTn: مقدار کنونی تایمر شماره n در هر لحظه درون این ثبات می باشد! 2. OCRn: مقدار این ثبات در هر لحظه با ثبات TCNTn مقایسه می شود و در صورت برابر بودن، مطابقِ مُد تایمر کاربردهای مختلفی را برای ما دارند! 3. TCCRn:این ریجستر بر خلاف دو ریجستر قبلی یک ریجستر کنترلی است که خصوصیات تایمر مورد استفاده توسط ان تعیین می شود تایمرهای میکرو بوسیله یک منبع کلاکِ قابل انتخاب تغذیه می شود. که این منبع می تواند خارجی یا بوسیله کلاک اصلی سیستم باشد!

8 Timer Registers : TCCRn (Timer Counter control register)
TCNTn (Timer Counter Register) OCRn (Output Compare Register) TCCRn (Timer Counter control register) TIMSK (timer/counter interrupt mask register) TIFR(timer/counter interrupt flag register) نکته:n شماره تایمر مورد نظر است که به ازای هر تایمر رجیستر مورد نظر وجود خواهد داشت

9 نحوه عملکرد رجیستر TCNT: TCNTn (Timer Counter Register)
به عنوان مثال برای تایمر 0 داریم 1 1 1 TCNT0 = 0 TCNT0 = 254 TCNT0 = 255 TCNT0 = 253 تنظیمات CodeVision: 1. انتخاب تایمر 2. انتخاب منبع کلاک برای تایمر مورد نظر 3. تعیین مُد تایمر

10 نحوه عملکرد رجیستر OCRn: OCRn (Output Compare Register)
از این رجیستر بیشتر در مد هایPWM و مد مقایسه (CTC)استفاده شده ودرحالت مد نرمال که تایمر برای زمان سنجی استفاده میشود کاربرد خاصی ندارد و همانطور که قبلا اشاره شد زمانی که متحوای آن با رجیستر TCNT برابر شود (در اثر شمارش TCNT)رجیستر TCNT سریز میکند که میتوان از این خاصیت استفاده های گوناگونی را کرد که در ادامه با آنها آشنا می شویم نکته: محتوای این ریجستر مقدار TOP را در مد CTC و مبنای مقایسه را در مد های PWM تعیین می کند.

11 نحوه عملکرد رجیستر TCCRn: TCCRn (Timer Counter control register)
از این بیت تنها زمانی میتوان استفاده نمود که تایمر در مد PWM نباشد.با یک کردن این بیت یک مقایسه اجباری ایجاد کرده و با توجه به تنظیم بیت های COM0[1:0]پایه خروجی OCO تغییر حالت میدهد.از این بیت در کاربرد های خاص استفاده میشود و در حالت عادی آن را صفر میکنیم توسط این بیت ها مد عملکرد تایمر را تعیین میکنیم وظیفه این بیت ها تعیین تقسیم فرکانسی کلاک تایمر صفر می باشد. در صورتی که از مد های PWM یا CTC استفاده نماییم . تنظیم و عملکرد این دو بیت مطابق جدول می باشد.

12 انتخاب منبع کلاک تایمرها:
هر سه تایمر Timer0,Timer1,Timer2 این قابلیت را دارند که کلاک خود را از کلاک سیستم و یا تقسیمی از آن دریافت کنند. در این حالت به آن تایمر گفته می شود! هر دو Timer0 و Timer1 این قابلیت را نیز دارند که بوسیله پین های T0 (برای Timer0) و T1 (برای Timer1) بصورت خارجی و به ازای لبه بالا/پایین رونده سیگنال تأمین شوند. در این حالت به آن کانتر(شمارنده) گفته می شود! همچنین Timer2 این قابلیت را دارد که کلاک خود را به وسیله یک اسیلاتور خارجی و یا تقسیمی از آن تأمین کند. به این صورت که یک کریستال با فرکانس معینی بین دو پایه TOSC0 و TOSC1 متصل باشد! Timer2 برای کریستال ساعتی ( kHz) بهینه شده است و نسبت تقسیم های 8/32/64/128/256/1024 را برای آن فراهم آورده است! این کریستال در هر ثانیه بار یعنی 2^15 بار پالس تولید می کند و از آن بعنوان یک ثانیه شمار بسیار دقیق استفاده می کنند! پایه های OC0 و OC1A و OC1B و OC2 نیز پایه های خروجی متناظر با هر تایمر هستند. که در ادامه با این ها بیشتر اشنا می شویم!

13 نحوه انتخاب CLOCK بر اساس بیت های کنترلی ریجستر0 TCCR:
Bit -- -- -- -- -- CS02 CS01 CS00 Read/Write R R R R R/W R/W R/W R/W Initial value

14 انتخاب کلاک و مدار تقسیم کننده کلاک

15 TIMER0 تایمر صفر و تایمر دو در خانواده AVR تا 90 درصد شبیه به هم بوده لذا در اینجا تمامی خصوصیات برای تایمر صفر بیان می شود در هنگام برخورد با مسائل تایمر ها باید مراحل زیر را بدانیم: 1-تعیین مد کاری تایمر (مد های 4 گانه) 2-تعیین فرکانس کاری تایمر (تنظیم بیت های prescale) 3-تنطیم خصوصیات شکل موج خروجی تایمر (در صورت نیاز) 4-در صورت نیاز به وقفه فعال کردن بیت فعال کننده آن در ریجستر TIMSK نکته:سه مورد اول بر روی رجیستر TCCR اثر گذاری میکنند لذا اولین قدم در برنامه نویسی تایمر ها تنظیم این رجیستر است.

16 Timer Modes : 1- Normal Mode 2- CTC (Clear Timer On Compre Match)
3- Fast PWM :(Fast Pulse Width Modulation) 4- Phase Correct PWM نکته:این مد ها برای هر تایمر به صورت جداگانه توسط 2 بیت WGM در رجیستر TCCR تنظیم میگردد

17 نحوه انتخاب مد عملکرد تایمر/ کانتر صفرتوسط ریجسترTCCR :

18 این بیت در کدام رجیستر قرار دارد؟
مُدهای مختلف تایمرها: 1. مُد نرمال در این مُدِ ساده و ابتدایی، ثبات TCNTn همواره بصورت افزایشی کار می کند و زمانی که به حداکثر مقدار خود ( 0xFFبرای Timer0، Timer2 و 0xFFFF برای Timer1) برسد مقدار TCNTn صفر می شود و پرچم سرریز TOVn را یک می کند و درصورت فعال بودن وقفه سرریز تایمر، مسیر برنامه را برای اجرای روتین وقفه تغییر می دهد! استفاده از ثبات OCRn برای مقایسه با ثبات TCNTn نیز در این مُد فعال می باشد و می تواند در ازای برابری این دو ثبات، یک وقفه را ایجاد کند! اما این کار در مُد نرمال توصیه نمی شود چرا که از لحاظ سخت افزاری CPU را بسیار مشغول می کند! سوال این بیت در کدام رجیستر قرار دارد؟

19 مُدهای مختلف تایمرها: 2. مُد CTC (Clear Timer on Compare match):
در این مُد، مشابه مُد نرمال زمانی که مقدار ثبات TCNTn با ثبات OCRn یکسان گردد، مانند مُد نرمال پرچم OCFn را یک می کند و مسیر برنامه را برای اجرای وقفه تغییر می دهد. اما برخلاف مُد نرمال که تایمر به شمارش ادامه می داد، در این مُد پس از یکسان شدن این دو ثبات، مقدار ثبات TCNTn صفر می شود!

20 نحوه تعیین حالت خروجی در مد CTC یا NORMAL

21 Example-15 یک قطار پالس مربعی 5 کیلو هرتز بر روی پایه OC0 ایجاد کنید
برای نوشتن این برنامه از تایمر صفر در مد CTC استفاده می کنیم

22 مُدهای مختلف تایمرها: 3. مُد Fast PWM (Fast Pulse Width Modulation):
در این مُد نیز مقدار ثبات TCNTn بصورت پلکانی افزایش پیدا می کند و مقدار این ثبات همواره با ثبات OCRn در حال مقایسه می باشد. زمانی که محتوای این دو ثبات با هم برابر گردد، (در حالتِ Non-Inverted) سطح ولتاژِ پایه OCn، صفر (Low) می شود و زمانی که مقدار TCNTn به حداکثر مقدار خود برسد سطح ولتاژِ پایه OCn، یک (High) می شود. بدین وسیله می توانیم یک موج PWM در پایه OCn تولید کنیم. دقت شود که برای این کار بایستی پایه OCn بصورت خروجی تعریف شده باشد. فرکانس بالای این موج کاربردهای زیادی را برای ما دارد: 1. موتورها DC: برای کنترل سرعت 2. چراغ ها: برای تنظیم روشنایی 3. منابع تغذیه سویئچینگ: برای بدست آوردن ولتاژ خروجی 4. آمپلیفایرهای صوتی

23 مُد Fast PWM: Max Value 1 Non Inverted 1 Inverted

24 نحوه تعیین حالت خروجی موج PWM در مد Fast PWM

25 Example-16 یک پالس PWM با فرکانس 4 کیلو هرتز و زمان وظیفه 20% ایجاد کنید

26 H-Bridge برای کنترل موتورهای DC در دو جهت مختلف از این تکنیک استفاده می کنیم:

27 مُدهای مختلف تایمرها: 4. مُد Phase Correct PWM:
در این مُد، تایمر بصورت افزایشی تا حداکثر مقدار خود افزایش پیدا می کند ولی پس از رسیدن به مقدار ماکسیمم دیگر صفر نمی شود، بلکه بصورت کاهشی تا اینکه به صفر برسد کاهش پیدا می کند! در این مُد نیز همواره ثبات TCNTn با ثبات OCRn مقایسه می شود و در ازای مُدی که در آن قرار دارد (Non-Inverted یا Inverted) می تواند یک موج PWM برای ما تولید کند. دقت شود که حداکثر فرکانس موج PWM تولید شده در این مُد به دلیل دو شیبه بودن این تایمر(یک شیب از صفر تا رسیدن به ماکسیمم و یک شیب از مقدار ماکسیمم تا صفر) نصف مُد Fast PWM می باشد.

28 نحوه تعیین حالت خروجی موج PWM در مد Phase Correct PWM

29 وقفه ها در تایمر ها برای اینکه بتوان از وقفه ها در واحد تایمر میکرو کنترلر AVR استفاده کرد باید سه مرحله زیر را انجام دهیم: 1-ست کردن بیت هفتم ریجستر وضعیت با دستور asm(“sei”) 2-تنظیم ریجستر فعال کننده وقفه تایمر ها به نام TIMSK(timer/counter interrupt mask register) 3-تست پرچم های وقوع وقفه در ریجستر ی با نام TIFR(timer/counter interrupt flag register)

30 TIMSK(timer/counter interrupt mask register)
برای اینکه بتوانیم از سر ریز شدن تایمر برای ایجاد وقفه استفاده کنیم، باید از این رجیستر استفاده شود اگر این بیت را یک کنیم و وقفه کلی فعال باشد,در صورت تحریک شدن واحد capture توسط خروجی مقایسه کننده آنالوگ داخلی یا سیگنال اعمال شده به پایه ICP,وقفه مربوط به واحد تسخیر کننده فعال میگردد و میتوان محتوای ریجستر1 ICR را بررسی کرد اگر این بیت را یک کنیم و وقفه کلی فعال باشد با تطبیق مقایسه واحد Aیعنی برابری ریجستر TCNT1با ریجستر OCR1Aپرچم تطبیق واحد A تایمر یا کانتر یک , موجب ایجاد شدن وقفه تطبیق مقایسه میگردد اگر این بیت را یک کنیم و وقفه کلی فعال باشد با تطبیق مقایسه واحد B یعنی برابری ریجستر TCNT1با ریجستر OCR1Bپرچم تطبیق واحد B تایمر یا کانتر یک , موجب ایجاد شدن وقفه تطبیق مقایسه میگردد اگر در این بیت یک نوشته شود و وقفه همگانی فعال شده باشد و تطبیق مقایسه ای تایمر یا کانتر صفر یا دو انجام گیرد وقفه مربوط به مقایسه اجرا می شود. اگر این بیت را یک کنیم وقفه سر ریز تایمر صفر یا یک یا دو فعال میگردد و در صورتی که وقفه همگانی فعال باشد و محتوای تایمرمورد نظر(رجیستر tcnt) از حداکثر خود سریز کند وقفه سریز تایمر صفر یا یک یا دو اجرا می شود

31 TIFR (Timer/Counter Interrupt Flag Register)
تنظیم این بیت ها بستگی به تنظیمات مد ها در ریجستر TCCR هر تایمر دارد . در مد NORMALو مد CTC زمانی که سریز رخ دهد پرچم متناظر با تایمر مورد نظر فعال می شود.زمانی که بردار وقفه اجرا می شود در برگشت از وقفه به طور اتوماتیک توسط سخت افزار این پرچم پاک میگردد . همچنین به روش POLLINGکاربر میتواند با نوشتن یک در این پرچم آن را صفر کند. این پرچم ها زمانی فعال میگردند که مقدار ریجستر TCNT تایمر مربوطه با مقدار OCRدر آن تایمر برابر شود . این پرچم ها می توانند موجب وقفه تطبیق تایمر 0 با 1 یا 2 گردند . همچنین به روش POLLING کاربر میتواند با نوشتن یک در این پرچم ان صفر کند. زمانی که واحد CAPTURE تحریک گردد این پرچم فعال می شود و موجب ایجاد وقفه تسخیر کننده میگردد و در برگشت از وقفه توسط سخت افزار پاک میگردد البته در زمانی که تایمر در مد PWM باشد این پرچم برای دستیابی به مقدار TOP در رجیستر ICR1فعال میگردد

32 Example-17 تولید موج مربعی با T=512us بر روی پورت A
#include<mega32.h> #define xtal void delay() { TCCR0=0x02; // Timer Clock = CLK/8 TCNT0=0; while(TCNT0!=255); // Wait Until Overflow TCCR0=0x00; // Stop Timer0 } void main() DDRA=0xFF; TCCR0=0x00; while(1){ PORTA.0=1; delay(); PORTA.0=0;

33 مثال: حل مسئله قبل با استفاده از وقفه:
#include<mega32.h> #define xtal interrupt [TIM0_OVF] void puls1(void) { PORTA.0=~PORTA.0; TCNT0=0X00; } void main() DDRA=0xFF; TCCR0=0x02; TIMSK=0x01; #asm (“sei”) while(1); مثال: حل مسئله قبل با استفاده از وقفه:

34 Timer 1 این تایمر از نظر عملکرد تمامی خصوصیات تایمر صفر را دارد با این تفاوت که 16 بیتی است و مقدار TOP آن در مد های PWM قابل تنظیم است .همچنین این تایمر دارای ویژگی مهم capture است.این تایمر دارای رجیستر های 16 بیتیOCR1A/B,TCNT1و ICR1 و رجیستر های 8 بیتی TCCR1A/B می باشد. واحد capture چیست؟ این واحد دارای ریجستر 16 بیتی ICR1 است .اگر بیت فعال کننده این واحد را در ریجستر B1TCCR فعال کرده باشیم در هنگام روشن کردن تایمر ،تایمر با توجه به سرعت کلاک خود شروع به شمارش میکند. حال اگر یک سیگنال خارجی در لحظه t به پایه ICP اعمال گردد محتوای ریجستر تایمر یک یعنی TCNT1 در همان لحظه t درون ریجستر ICR1 کپی می شود. نکته:این واحد را نیز میتوان به صورت داخلی و توسط واحد مقایسه کننده آنالوگ نیز تحریک کرد. نکته:این واحد با لبه تحریک شده و می تواند جهت جلوگیری از ورود نویز توسط یک فیلتر دیجتال در 4 سیکل ماشین عملیات نمونه برداری صورت گیرد (برای فعال کردن واحد حذف کننده نویز باید بیت ICNC1 (Input Capture Noise canceler)واقع در TCCR1B را یک کرد).

35 کاربرد های واحد capture
از جمله میتوان به مواردی مانند: اندازه گیری duty cycle(سنسور smt160) اندازه گیری زمان برگشت پالس متر دیجیتال(متر دیجیتال) و...... اشاره کرد

36 رجیستر های کنترلی تایمر 1

37 مدهای کاری تایمر 1

38 تنظیمات کلاک برای تایمر 1 در ریجستر TCCR1

39 نحوه تعیین حالت خروجی در مد NORMAL)یا(CTC

40 نحوه تعیین حالت خروجی در مد Fast PWM

41 نحوه تعیین حالت خروجی در مدPhase Correct

42 Timer 2

43 تنظیمات کلاک برای تایمر 2 در ریجستر TCCR2

44 تولید موج سینوسی به وسیله تایمرها:
ولتاژ خروجی میکروکنترلر نمی تواند منفی شود، اما برای تولید ولتاژ سینوسی به مقادیر منفی نیاز داریم، لذا منابع سه فاز را مطرح می کنیم: اختلاف فاز موج سینوسی میان هر سه سیم، 120 درجه است و با این ایده میان هر دو سیمی که انتخاب کنیم موج کامل سینوسی را مشاهده می کنیم.

45 تولید موج سینوسی به وسیله تایمرها:
از یک تایمر برای تولید کمان و زاویه سینوسی مورد نظرمان استفاده می کنیم و از یک تایمر دیگر به عنوان تولید کننده موج PWM برای تولید ولتاژهای مختلف بر حسب زاویه سینوس استفاده می کنیم. به یکی از خروجی ها موج سینوسی با اختلاف فاز 0 می دهیم و به دیگری موج سینوسی با اختلاف فاز 120 درجه می دهیم. اما خروجی این دو پایه را می بایست فیلتر کنیم!!

46 RTC تایمر شماره 2 دارای یک قابلیت وِِیژه است که توسط یک ریجستر کنترلی یه نام ASSRکنترل می شود این تایمر دارای یک مد عملکرد آسنکرون است.این آسنکرون بودن موجب میشود که این تایمر بتواند در این مد کلاک کاری خود را جدا از سیتم توسط دو پینTOSC1وTOSC2 با اتصال به یک کریستال ساعت32.768K تامین کند.لذا میتواند به صورت بسیار دقیق زمان واقعی را اندازه گیری کند.

47 ASSR(Asynchronous status register)
پیکره بندی RTC با این ریجستر انجام می شود

48 Example-18

49 COUNTER

50 کانتر ها: کانتر چیست؟ در میکرو کنترلر های AVR دو پایه به نام t0, t1 داریم که به ازای اعمال یک لبه بالا رونده یا پایین رونده یک واحد به محتوای ریجستر تایمر یعنی tcnt اضافه میکند.با خواندن این ریجستر در برنامه و ذخیره آن می توان پی به تعداد پالس مورد نظر مثلا از یک سنسور برد چند مورد استفاده عملی از کانتر ها: 1-اندازه گیری فرکانس 2-اندازه گیری تعداد دور ماشین های الکتریکی 3-بدست آوردن اختلاف فاز دو سیگنال الکتریکی نسبن به یکدیگر 4-اندازه گیری مقدار سلف و خازن و... 5-بدست اوردن پارمتر های حیاتی مانند ضربان قلب یک بیمار 6-خواندن هرنوع سنسوری که بر حسب تغییرات فرکانسی عمل میکند

51 چگونگی استفاده از تایمر ها در مد کانتر:
برای استفاده از تایمر های میکرو کنترلر avr در مد کانتر باید توسط ریجستر TCCR و بیت های پری اسکالر (cs00,cs01,cs02) این کار صورت پذیرد پایه t0 کانتر با لبه پایین رونده پایه t0 کانتر با لبه بالا رونده پایه t1 کانتر با لبه پایین رونده پایه t1 کانتر با لبه بالا رونده

52 Example-19

53 Practice -6 1-برنامه ایی ینوسید که بر روی پایه خروجی A.5 یک موج مربعی با فرکانس 2 کیلو هرتز ایجاد کند. الف)استفاده از روش POLLING ب)استفاده از روش وقفه (Fosc=4MHZ) 2-برنامه ایی بنوسید که با استفاده از تایمر یک توسط دو عدد کلید فشاری یک موج PWM با قابلیت تنظیم حداقل و حداکثر duty cyce را ایجاد کند.زمان تناوب این موج را 20 میلی ثانیه در نظر بگیرید الف)از مد fast pwm استفاده کنید ب)از مد phase correct pwm استفاده کنید 3-برنامه بنوسید که LED متصل به پایه b.4 هریک ثانیه یک بار و LED متصل به پایه b.5 هر دو ثانیه یک بار چشمک بزند 4- با استفاده از تایمر ها برنامه مثال 18 را به گونه ای اطلاح کنید که ساعت بر روی lcd نمایش داده شود 5-برنامه مثال 19 را طوری اصلاح کنید که به طور همزمان تعداد بسته های عبوری بر روی lcd نمایش داده شود. تحقیق: 1-چگونه میتوان یک موتور dc را توسط موج pwm راه اندازی کرد؟ 2-استفاده موج pwm در منابع تغذیه سویچینگ به چه صورت است؟ 3-چگونه میتوان با استفاده از تایمر های avr یک موتور سروو را کنترل کرد؟ 4-چگونه میتوات توسط یک تایمر برنامه نوشت که یک تریستور و یک ترایاک را کنترل کند؟

54 منابع ریست در میکر کنترلر های AVR
1-Power on Reset: زمانی که ولتاژ تغذیه از حد ولتاژ آستانه (Vpot)کمتر شود 2-External reset:زمانی که سطح منطقی صفر برای مدتی طولانی تر از Trstبه پایه ریست اعمال شود 3-Watchdog Reset:زمانی که تایمر نگهبان سریز کند. 4-Brown-out Reset:زمانی که ولتاژ تغذیه کمتر از 4 یا 2.7 ولت باشد و فیوز بیت آشکار ساز Brown-out هم فعال شده باشد 5-JTAG AVR Reset:در حلقه ی سیستم JTAG تا زمانی که منطق یک در ریجستر RESETباشد

55 تایمر Watchdog

56 Watchdog چیست؟ WDT مخفف Watch Dog Timer است که به معنای سگ نگهبان می باشد . WDT یکی از قابلیت های مفید و کاربردی در تراشه های میکروکنترلر است که با کمک آن می توان بر روی عملکرد میکروکنترلر نظارت داشت و در صورتی که تراشه به هر علتی قادر به اجرای برنامه نبود (هنگ کرد) ، آنرا ریست کرد . WDT این امکان را دارد که پس از شمارش صعودی و سر ریز شدن تایمر ، میکروکنترلر را ریست کند . WDT در اکثر موارد از یک شبکه RC داخلی برای تامین کلاک(1مگاهرتزی) مورد نظر خود استفاده می کند که در این حالت حتی اگر کلاک اصلی میکروکنترلر نیز قطع شود ، باز هم WDT به کارش ادامه خواهد داد . همچنین امکان تعیین پرسکالر (پیش مقسم فرکانسی) بر روی کلاک اعمالی به WDT نیز وجود دارد که با کمک آن می توان زمان های سرریز WDT را تغییر داد .

57 تایمر Watchdog همانطور که می دانید، برنامه های زیادی وجود دارند که هر لحظه برای انجام کارهای خود به مقدار ذخیره شده در متغیرهایی نیاز دارد اگر قرار باشد تایمر Watchdog با ریست شدن، همواره مقدار این متغیرها را پاک کند، چه فایده ای برای ما دارد؟ چگونه می توان برنامه ای نوشت که به این گونه متغیرها نیاز دارد و در عین حال این تایمر کار ریست کردن خود را انجام بدهد!؟

58 نحوه استفاده از تایمر Watchdog در برنامه نویسی:
فعال کردن تایمر WDT: 1-نوشتن یک منطقی در بیت WDE 2-تنطیم زمان بازنشانی توسط بیت های WDP2,WDP1,WDP0مطابق جدول زیر ریست کردن(صفر کردن محتوا) تایمر WDT: استفاده از دستور اسمبلی #asm(“WDR”); غیر فعال کردن تایمر WDT: 1-نوشتن یک منطقی در بیت WDTOEو صفر منطقی در بیت WDE(WDTCR=0X18) یا -نوشتن صفر منطقی پس از چهار سیکل در بیت WDE نکته:همواره قبل از فعال سازی یا غیر فعال سازی تایمر سگ نگهبان وقفه ها را غیر فعال کنید

59 مدیریت توان در میکرو کنترلر های AVR
کتابخانه sleep.h 1-مد idle 2-مد ADC noise redution 3-مد power down 4-مد power save 5-مد standby 6-مد Extended standby


Download ppt "Session 7,8."

Similar presentations


Ads by Google