در اين بخش مي‌توانيد در مورد تمامي مسائل مرتبط با میکروکنترلرهای AVR به بحث بپردازيد

تایمر

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


Novice Poster

Novice Poster



no avatar
پست ها

55

تشکر کرده: 148 مرتبه
تشکر شده: 17 مرتبه
تاريخ عضويت

پنج شنبه 22 بهمن 1394 21:03

آرشيو سپاس: 0 مرتبه در 0 پست

تایمر

توسط javad_2010 » جمعه 27 فروردین 1395 16:28

سلام
من تونستم زمان 1ثانیه رو بعد از کلی اینور و اونور تو کد ویژن درست کنم
الان نمیدونم چطور ازش استفاده کنم!!!!!!
تابع DELAY میشه استفاده کرد یا باید اینو تبدیل به تابع کنم!!!!
نمیدونم


مثلا بخوام به صورت VOID درستش کنم یا DEFINE
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

Colonel II

Colonel II



نماد کاربر
پست ها

5576

تشکر کرده: 1558 مرتبه
تشکر شده: 6860 مرتبه
تاريخ عضويت

سه شنبه 26 آذر 1387 16:20

آرشيو سپاس: 11653 مرتبه در 2024 پست

Re: تایمر

توسط sinaset » جمعه 27 فروردین 1395 20:03

با سلام

چه نوع زمانی و برای چه کاری می خواهید درست کنید؟!

اگر هدفتان فقط درست کردن زمان 1 ثانیه برای تاخیر می باشد .

می توانید در هر خط مد نظرتان تایپ کنید
;(delay_ms(1000

اما اگر می خواهید به صورت جداگانه زمان را درست کنید باید از وقفه تایمر استفاده کنید ، تا به صورت جداگانه زمان را محاسبه کند.
فرقی این زمان به تاخیر delay این است که همه چیز مجزا از برنامه اصلی کار می کند . این در حالی است که وقتی شما ;(delay_ms(1000 را در برنامه می نویسید. وقتی سی پی یو به این خط می رسد! کل برنامه را به مدت 1 ثانیه نگه میدارید (و در این لحظه دیگر هیچ خط برنامه اجرا نمی شود!)

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

javad_2010 از این پست سپاسگزاري کرده است

Novice Poster

Novice Poster



no avatar
پست ها

55

تشکر کرده: 148 مرتبه
تشکر شده: 17 مرتبه
تاريخ عضويت

پنج شنبه 22 بهمن 1394 21:03

آرشيو سپاس: 0 مرتبه در 0 پست

Re: تایمر

توسط javad_2010 » جمعه 27 فروردین 1395 20:57

با سلام
یعنی با تنظیمات انجام شده بالا.
فقط تنظیماتو انجام بدم.و بعد DELAY_MS(1000) رو بزنم یثانیه دقیق رپ انجام میده؟؟؟؟
من میخوام به صورت دقیق با وقفه 40 ثانیه ایی ال ای دی چشمک بزنه.
........................................................................................................
چون بدونه تنظیمات تایمر و استفاده از دستور delay زمانش دقیق نیست.اگر عدد4000 رو وارپ کنم دوره 40 ثانیه ایی نداره.
الان این تنظیمات رو انجام دادم نمیدونم درسته یا غلط بازم.تازه استفاده دقیق ازش رو هم نمیدونم.برای adc فهمیدم باید تبدیل به یه تابع بشه و بعد ازش استفاده کرد.ولی اینو نمیدونم

Colonel II

Colonel II



نماد کاربر
پست ها

5576

تشکر کرده: 1558 مرتبه
تشکر شده: 6860 مرتبه
تاريخ عضويت

سه شنبه 26 آذر 1387 16:20

آرشيو سپاس: 11653 مرتبه در 2024 پست

Re: تایمر

توسط sinaset » شنبه 28 فروردین 1395 07:32

سلام بر شما

البته باید بدانید چه فرکانسی هستید،سپس به کمک یک فرمول زمان تاخیر delay را بدست اورید .

اما اگر واقعا قصد شما،ساخت یک زمان دقیق است،باید از تایمر ها مجزا و به کمک وقفه های انها این مشکل رو حل کنید .
(که البته در مثال بالا شما از تایمر کانتر 1 ،که دقت بالایی دارد استفاده کردید.)

برای استفاده از تایمرها مجزا،شما باید بعد از مقدار دهی تایمر مد نظرتان. از توابع وقفه  استفاده کنید، و بعد دستورات مد نظرتان را در انجا قید کنید.

به عنوان مثال:
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 



برای استفاده از بهتر از تایمرها،همیشه باید،از توابع وقفه ی استفاده کنید.

در مثال بالا،تایمر 0 میکروکنترولر، تا زمان 1 میلی ثانیه را می شمارد،(نسبتا دقیق و برای دقت بالا باید از کریستال استفاده کنید) سپس overflow می شود،یه به عبارت ساده تر،از حد و سقف مشخص توسط ما بیشتر میشود،سپس بعد از overflow شدن، دستورات وقفه را اجرا می کند.
پس هر دستوری که شما در تابع وقفه، بگذارید،بعد از overflow شدن تایمر،خوانده میشود .

در مثال بالا یک شرط گذاشته شده ، درصورتی که x تا عدد 1000 رسید، پورت D باید فعال شود. تابع هر 1 میلی ثانیه ی یک بار اجرا میشود،پس وقتی x به عدد 1000 میلی ثانیه می رسد،یعنی 1 ثانیه شده است .

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

javad_2010 از این پست سپاسگزاري کرده است

Novice Poster

Novice Poster



no avatar
پست ها

55

تشکر کرده: 148 مرتبه
تشکر شده: 17 مرتبه
تاريخ عضويت

پنج شنبه 22 بهمن 1394 21:03

آرشيو سپاس: 0 مرتبه در 0 پست

Re: تایمر

توسط javad_2010 » شنبه 28 فروردین 1395 18:10

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

Colonel II

Colonel II



نماد کاربر
پست ها

5576

تشکر کرده: 1558 مرتبه
تشکر شده: 6860 مرتبه
تاريخ عضويت

سه شنبه 26 آذر 1387 16:20

آرشيو سپاس: 11653 مرتبه در 2024 پست

Re: تایمر

توسط sinaset » شنبه 28 فروردین 1395 20:10

با سلام

اجازه بدید،توضیحات کامل تر رو بعدا در تاپیک آموزش ها قرار بدهم.

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

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

javad_2010 از این پست سپاسگزاري کرده است


 


  • موضوعات مشابه
    پاسخ ها
    بازديدها
    آخرين پست

چه کسي حاضر است ؟

کاربران حاضر در اين انجمن: بدون كاربران آنلاين و 0 مهمان