تایمر

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

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

ارسال پست
Novice Poster
Novice Poster
پست: 60
تاریخ عضویت: پنج‌شنبه ۲۲ بهمن ۱۳۹۴, ۹:۰۳ ب.ظ
سپاس‌های ارسالی: 158 بار
سپاس‌های دریافتی: 27 بار

تایمر

پست توسط javad_2010 »

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


مثلا بخوام به صورت VOID درستش کنم یا DEFINE
Please Login or Register to see this code
Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه‌شنبه ۲۶ آذر ۱۳۸۷, ۴:۲۰ ب.ظ
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22106 بار

Re: تایمر

پست توسط sinaset »

با سلام

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

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

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

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

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.
Novice Poster
Novice Poster
پست: 60
تاریخ عضویت: پنج‌شنبه ۲۲ بهمن ۱۳۹۴, ۹:۰۳ ب.ظ
سپاس‌های ارسالی: 158 بار
سپاس‌های دریافتی: 27 بار

Re: تایمر

پست توسط javad_2010 »

با سلام
یعنی با تنظیمات انجام شده بالا.
فقط تنظیماتو انجام بدم.و بعد DELAY_MS(1000) رو بزنم یثانیه دقیق رپ انجام میده؟؟؟؟
من میخوام به صورت دقیق با وقفه 40 ثانیه ایی ال ای دی چشمک بزنه.
........................................................................................................
چون بدونه تنظیمات تایمر و استفاده از دستور delay زمانش دقیق نیست.اگر عدد4000 رو وارپ کنم دوره 40 ثانیه ایی نداره.
الان این تنظیمات رو انجام دادم نمیدونم درسته یا غلط بازم.تازه استفاده دقیق ازش رو هم نمیدونم.برای adc فهمیدم باید تبدیل به یه تابع بشه و بعد ازش استفاده کرد.ولی اینو نمیدونم
Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه‌شنبه ۲۶ آذر ۱۳۸۷, ۴:۲۰ ب.ظ
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22106 بار

Re: تایمر

پست توسط sinaset »

سلام بر شما

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

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

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

به عنوان مثال:
Please Login or Register to see this code


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

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

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

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.
Novice Poster
Novice Poster
پست: 60
تاریخ عضویت: پنج‌شنبه ۲۲ بهمن ۱۳۹۴, ۹:۰۳ ب.ظ
سپاس‌های ارسالی: 158 بار
سپاس‌های دریافتی: 27 بار

Re: تایمر

پست توسط javad_2010 »

دوباره سلام
ببخشید من اصلا این قسمت تایمرها رو نمیتونم کامل درک کنم
ساختن زمان دلخواه
استفاده بع عنوان یع تابع ازش.مثل دیفاین کردن یه پورت
...................
مثال بالا اول تایمر مقدار دهی شد بعد یه دستور گرفت.بعد اومد پایین دویاره رجیستر مقدار دهی شد بعد دوباره دستور گرفت مثل دستور قبل.کانلا تو مبحث تایمرا گیج شدم.
Colonel II
Colonel II
نمایه کاربر
پست: 7545
تاریخ عضویت: سه‌شنبه ۲۶ آذر ۱۳۸۷, ۴:۲۰ ب.ظ
سپاس‌های ارسالی: 9280 بار
سپاس‌های دریافتی: 22106 بار

Re: تایمر

پست توسط sinaset »

با سلام

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

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

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.
با عرض پوزش،دیگر در انجمن حضور ندارم،که به پیام ها پاسخ بدم.
ارسال پست

بازگشت به “میکروکنترلرهای AVR”