سلام کسی می تونه کپچر رو یه کم باز کنه توی کتاب کاهه نوشته به محض تحریک پایه کپچر تایمر یه بر چسب زمانی واسه اون میده که من نفهمیدم یعنی چی ببینید من یه عرض پالس رو به کمک وقفه تایمر 1 و دستور bit wait اندازه گرفتم می خواستم همین کار رو با پایه کپچر انجام بدم خب می خواستم بدونم به محض تحریک پایه کپچر تایمر تازه شروع به کار می کنه و تا اتمام عرض پالس می شمره یا اصلا یه جور دیگس بعدش هم با کپچر میشه مدت زمان سپری شده تا پالس بعدی یا همون زمان low رو بلافاصله اندازه گرفت؟
اطلاعیه
Collapse
No announcement yet.
توضیح ساده کپچر در avr
Collapse
X
-
پاسخ : توضیح ساده کپچر در avr
پاسخ تمام سوالات شما در Datasheet مربوط به AVR مورد استفاده وجود دارد. آیا شما مطالب لازم را در این مورد مطالعه کرده اید و هنوز سوال دارید و یا به Datasheet مراجعه ای نداشته اید.
بطور خلاصه عملیات Capture کردن یک تایمر، عملی شبیه عکس گرفتن از یک موجود متحرک است. به این ترتیب که ابتدا تایمر راه اندازی می شود و سپس با فرمان Input capture، یک کپی از وضعیت لحظه مورد نظر در Capture register قرار می گیرد و تایمر مورد نظر همچنان به شمارش خود ادامه می دهد. با دوبار انجام اینکار و تفاضل دو مقدار اندازه گیری شده می توان عرض پالس یا حتی فرکانس پالس را اندازه گرفت. اگر دو لبه فرمان دهنده هردو بالا یا پائین رونده باشند، زمان یک پریود موج و اگر از نظر لبه با هم متفاوت باشند، عرض پالس قابل اندازه گیری است. بعد از مطالعه دقیق Datasheet اگر همچنان سوالی بود، بفرمائید تا به آن پاسخ داد شود.
اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
دیدگاه
-
پاسخ : توضیح ساده کپچر در avr
توی دیتا شیت به زبان سی توضیح داده ، من دارم سعی میکنم به زبان بیسیک بنویسمش . اگه ممکنه راهنماییم کنید
$regfile = "m8def.dat"
$crystal = 16000000
'lcd config
Config Lcdpin = Pin , Db4 = Pinb.3 , Db5 = Pinb.2 _
, Db6 = Pinb.1 , Db7 = Pinc.0 , E = Pinb.4 , Rs = Pinb.5
Config Lcd = 16 * 2
Config Lcdbus = 4
Config Pind.6 = Output
Config Timer1 = Timer , Prescale = 8 , Capture Edge = Rising
Dim a as Byte
Dim Timercounter As Word
On Capture1 Captmr
a=0
Timercounter = 0
timer1=0
Enable Interrupts
Enable Capture1
Do
Loop
Captmr:
incr a
if a=1 then
Config Timer1 = Timer , Prescale = 8 , Capture Edge = falling
else
stop timer1
Timercounter = Capture1
Config Timer1 = Timer , Prescale = 8 , Capture Edge = Rising
a=0
timer1 = 0
Cls
Lcd "pwidth:" ; "" ; Capture1
Waitms 500
endif
Return
End
یه مشکلی هست فقط ، توی شبیه سازی پروتنوس زمان خاموشی رو اندازه میگیره نه high بودن سیگنال رو ، بنظرتون باید کجای برنامه رو تغییر بدم ؟عظمت را در چشم کسانی دیدم که بی توقع مهربانند .
دیدگاه
-
پاسخ : توضیح ساده کپچر در avr
سلام.
روال مد کپچر به این شکله.
بعد از تنظیمات مد کپچر باید نوع وقفه کپچر تعیین بشه که کپچر به پالس بالا رونده حساس باشه یا لبه پایین رونده.اگه وقفه به پالس بالا رونده تنظیم بشه به محض اعمال یک پالس بالا رونده تایمر بکار میافته.حالا اگه میخوای عرض پالسو تعیین کنی باید نوع وقفه رو تغییر بدی و روی پالس پایین رونده تنظیم بشه.وقتی پالس از بالا به پایین رفت وقفه فعال شده و اعدادی تایمر در ریجیستر کپچر کپی میشن و با خواندن این اعداد عرض پالس اولی رو بدست بیارین.
دیدگاه
-
پاسخ : توضیح ساده کپچر در avr
نوشته اصلی توسط soheyl_60 نمایش پست هاسلام.
روال مد کپچر به این شکله.
بعد از تنظیمات مد کپچر باید نوع وقفه کپچر تعیین بشه که کپچر به پالس بالا رونده حساس باشه یا لبه پایین رونده.اگه وقفه به پالس بالا رونده تنظیم بشه به محض اعمال یک پالس بالا رونده تایمر بکار میافته.حالا اگه میخوای عرض پالسو تعیین کنی باید نوع وقفه رو تغییر بدی و روی پالس پایین رونده تنظیم بشه.وقتی پالس از بالا به پایین رفت وقفه فعال شده و اعدادی تایمر در ریجیستر کپچر کپی میشن و با خواندن این اعداد عرض پالس اولی رو بدست بیارین.
اول اینکه بعد از اومدن وقفه حساس به لبه بالا رونده باید
کپچر رو تنظیم به لبه پایین رونده تنظیم کنم و بعد از اومدن
وقفه دوم کپچر رو بخونم ؟
دوم اینکه تایمر رو باید در ادامه صفر کنم درسته ؟
تقریبا الانم تو برنامه همینکار رو کردم ولی تو شبیه سازی با پروتئوس
درست کار نمیکنه ، وقتی دیوتی سایکل رو زیاد میکنم مقدارش کم میشه
و بلعکس ، انگار داره زمان خاموشی رو محاسبه میکنه
نمیدونم شاید مشکل از پروتئوس باشهجدیدترین ویرایش توسط alonejax; ۲۰:۳۵ ۱۳۹۷/۰۳/۲۷.عظمت را در چشم کسانی دیدم که بی توقع مهربانند .
دیدگاه
دیدگاه