• ¡Welcome to Square Theme!
  • This news are in header template.
  • Please ignore this message.
مهمان عزیز خوش‌آمدید. ورود عضــویت


امتیاز موضوع:
  • 17 رای - 2.12 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
Title: آموزش کامل بسکام به همراه مثال
حالت خطی
#17
راه اندازي تايمر 1 در مد مقايسه اي (Compare :
در اين مد شما ميتوانيد مقدار تايمر 1 را با دو عدد دلخواه مقايسه کنيد و درصورت برابري يا نابرابري مقدار تايمر با مقدار دلخواه وضعيت پايه هاي oc1a و oc1b را تغيير دهيد. راه اندازي تايمر يک در مد مقايسه اي با دستورات زير انجام مي شود:
CONFIG TIMER1= TIMER,COMPARE A = CLEAR |SET|TOGGLE|DISCONNECT,COMPARE B = CLEAR |SET|TOGGLE|DISCONNECT, PRESCALE=1|8|64|256|1024,CLEAR TIMER =1|0
COMPARE A = CLEAR |SET|TOGGLE|DISCONNECT : زماني که مقدار شمرده شده توسط تايمر 1 با مقدار COMPARE A ، که بعدا معرفي مي شود ، برابر شد ،پايه خروجي OC1A مي تواند SET(يک) ,(صفر) CLEAR ,(برعکس ) TOGGLE و يا ارتباط پايه با مد مقايسه اي قطع شود (پايه oc1a به يک ورودي خروجي عادي تبديل شود).
COMPARE B = CLEAR |SET|TOGGLE|DISCONNECT : زماني که مقدار شمرده شده توسط تايمر 1 با مقدار COMPARE B ، که بعدا معرفي مي شود ، برابر شد ،پايه خروجي OC1B مي تواند SET(يک) ,(صفر) CLEAR ,(برعکس ) TOGGLE و يا ارتباط پايه با مد مقايسه اي قطع شود (پايه oc1b به يک ورودي خروجي عادي تبديل شود).
PRESCALE=1|8|64|256|1024 : عدد PREACALE فرکانس (دقت ) تايمر را معيين ميکند.
CLEAR TIMER = 1|0 : با انتخاب گزينه 1 ،محتواي تايمر/کانتر در زمان تطابق مقايسه اي RESET ($0000 ) مي شود و در صورت انتخاب 0 مقدار شمرده شده تغييري نميکند.
با دستورات زير ميتوان عددي را که محتواي تايمر بايد با آن مقايسه شود را تعيين کرد
Compare1a = x
Compare1b =x
به جاي x يک عدد ثابت يا يک متغيير قرار ميگيرد ، هنگامي که عدد شمرده شده توسط تايمر يک با اعداد گذاشته شده برابر شد ميکرو وضعيت پايه هاي مربوطه را همانگونه که در پيکربندي مشخص کرديد تغيير ميدهد.
مثال :
$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
Config Timer1 = Timer , Compare A = Set , Compare B = Toggle , Prescale = 1024 , Clear Timer = 0
Compare1a = 1000
Compare1b = 5000
Do
Locate 1 , 1
Lcd Timer1
Loop
End
هنگامي که تايمر 1 تا 1000 شمرد پايه OC1A يک مي شود و هنگامي که مقدار شمرده شده به 5000 رسيد پايه OC1B يک مي شود (OC1A پايه 19 و OC1B پايه 18 مگا 16 ميباشد).

استفاده از وقفه مد مقايسه اي تايمر 1 :
مد مقايسه اي داراي 2 منبع وقفه ميباشد که با دستورات زير فعال ميشوند:
Enable Interrupts
Enable Oc1a
Enable Oc1b
با دستور فعال سازي وقفه مقايسه ، هنگامي که مقدار شمرده شده توسط ميکرو با Compare1a برابر شد cpu ميکرو با دستور on oc1a lable به برچسب مورد نظر برش ميکند و در آنجا عمليات دلخواه را انجام ميدهد، هنگامي که مقدار شمرده شده توسط ميکرو با Compare1b برابر شد cpu ميکرو با دستور on oc1b lable به برچسب مورد نظر برش ميکند و در آنجا عمليات دلخواه را انجام ميدهد. در صورتي که در پايان برچسب دستور Return گذاشته شود CPU به حلقه ي اصلي پرش ميکند.
مانند :
$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
Config Timer1 = Timer , Compare A = Set , Compare B = Toggle , Prescale = 1024 , Clear Timer = 0
Compare1a = 2120
Compare1b = 63000
Enable Interrupts
Enable Oc1a
Enable Oc1b
On Oc1a Q
On Oc1b W
Do
Locate 1 , 1
Lcd Timer1
Loop
End
Q:
Locate 2 , 1
Lcd Timer1
Return
W:
Locate 2 , 8
Lcd Timer1
Return
در مثال بالا هنگامي که رقم شمرده شده توسط تايمر با مقدار Compare1a (2120) برابر شد cpu به برچسب q پرش ميکند و در آنجا مقدار شمرده شده توسط تايمر را بر روي lcd نمايش داده و با دستور return به حلقه ي اصلي برميگردد ، هنگامي که رقم شمرده شده توسط تايمر با مقدار Compare1b (63000) برابر شد cpu به برچسبw پرش ميکند و در آنجا مقدار شمرده شده توسط تايمر را بر روي lcd نمايش داده و با دستور return به حلقه ي اصلي برميگردد .همچنين در مورد اول پايه oc1a يک مي شود و در مورد دوم وضعيت پايه oc1b تغيير ميکند ( در صورت 0 بودن يک مي شود و بلعکس).

راه اندازي تايمر 1 در مد CAPTURE :
در صورتي که تايمر يک را در اين مد پيکربندي کنيد ، با اعمال يک پالس بالا رونده يا پايين رونده (که نوع آن در هنگام پيکر بندي مشخص مي شود ) به پايه icp (پايه 20 مگا 16 ) ، در همان لحظه مقدار شمرده شده توسط تايمر 1 در ريجيستر CAPTURE قرار ميگيرد ، محتواي رجيستر CAPTURE را مي توان با دستور VAR = CAPTURE در يک متغيير از جنس word قرار داد .
راه اندازي تايمر يک در مد CAPTURE با دستورات زير انجام مي شود:
Config Timer1 = Timer, Capture Edge= Falling | Rising ,Noise Cancel=1|0 , Prescale =1|8|64|256|1024
Capture Edge= Falling | Rising : اين گزينه مشخص ميکند ، پالس اعمالي به پايه icp بالا رونده (Falling) است يا پايين رونده (Rising).( CAPTURE به کدام پالس حساسيت نشان ميدهد)
Noise Cancel=1|0 : در صورت انتخاب يک از نويز هاي موجود بر روي پايه icp چشم پوشي مي شود و هر پالس با لبه ي تعين شده ميتواند CAPTURE را راه اندازي کند ،در صورت انتخاب صفر فقط پالس هاي با دامنه ي 5 ولت قادر به راه اندازي CAPTURE خواهند بود.
Prescale =1|8|64|256|1024 :دقت تايمر را نشان ميدهد (با استفاده از اين مقدار و مقدار کريستال ميتوانيد زمان شمرده شده توسط تايمر تا هنگام سرريزي را با فرمولي که در بالا گفته شد محاسبه کنيد) با دستور Enable Icp1 اين مد فعال مي شود و پايه icp اماده دريافت پالس ميگردد . مانند:
$regfile = "m16def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2
Config Timer1 = Timer , Capture Edge = Falling , Noise Cancel = 1 , Prescale = 1024
Do
Locate 1 , 1
Lcd Timer1
Locate 2 , 1
Lcd Capture1
Loop
End

در مثال بالا هنگامي که يک پالس بالا رونده به پايه icp اعمال مي شود مقدار شمرده شده توسط تايمر 1 درون ريجيستر Capture قرار ميگيرد و سپس بر روي lcd نمايش داده مي شود . مدار استفاده شده براي مثال بالا و ساير مثال هاي اين بخش را مشاهده مي فرماييد
[عکس: bnk.png]

برای ورود بر روی تصویر کلیک کنید.
www.avrprj.ir
 
پاسخ
  


پیام‌های این موضوع
RE: آموزش کامل بسکام به همراه مثال - توسط a.mehran - 09-26-2014، 04:24 PM

موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  آموزش اصطلاحات میکرو AVR a.mehran 1 4,820 09-26-2014، 04:45 PM
آخرین ارسال: a.mehran
  مدار فاصله سنج اولتراسونیک با بسکام a.mehran 2 4,075 09-02-2014، 07:56 AM
آخرین ارسال: a.mehran
  pwm با بسکام a.mehran 0 2,707 09-01-2014، 10:02 PM
آخرین ارسال: a.mehran
  راه اندازی سون سگمنت با بسکام a.mehran 0 2,781 09-01-2014، 09:56 PM
آخرین ارسال: a.mehran

پرش به انجمن:


Browsing: 2 مهمان