امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 2
  • 1
  • 2
  • 3
  • 4
  • 5
فرکانس متر
نویسنده پیام
kelaran آفلاین
كاربر دو ستاره
**

ارسال‌ها: 76
موضوع‌ها: 14
تاریخ عضویت: اسفند ۱۳۹۱

تشکرها : 61
( 13 تشکر در 12 ارسال )
ارسال: #1
فرکانس متر
سلام .
یه برنامه در مورد فرکانس متر گرفتم اما نفهمیدم جربانش از چه قراره.کسی از دوستان میتونه سطر به سطر توضیح بده؟

کد php:
$regfile "m8def.dat"
$crystal 8000000
'----------
Cursor Off
'
-----------
Config Timer1 Counter Edge Rising
Ddrd.5 
0
Portd.5 
1
'-------
Config Timer0 = Timer , Prescale = 1024
'
---------------
Enable Timer1
Enable Timer0
Enable Interrupts

'---------------------
On Ovf1 Pulse_counter
On Ovf0 Yazdkit
'
-------------------
Dim A As Long As Byte As Long
0
'----------------------------

Cls
'
-----------------------
Start Timer0
'------------
Do
Loop
End                                                         '
end program
'--------------

Yazdkit:
Incr I
If I > 30 Then
Stop Timer0
Cls
A = B * 65536
A = A + Counter1

B = 0
I = 0
Counter1 = 0
Start Timer0
End If
Return
'
----------------------
Pulse_counter:
Incr B
Counter1 
0
Return 
(آخرین ویرایش در این ارسال: ۳۰-مرداد-۱۳۹۲, ۰۱:۴۹:۰۴، توسط babyy.)
۳۰-مرداد-۱۳۹۲, ۰۰:۱۱:۰۷
ارسال‌ها
پاسخ
EBKA آفلاین
مخترع
****

ارسال‌ها: 1,099
موضوع‌ها: 89
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 1655
( 2792 تشکر در 982 ارسال )
ارسال: #2
RE: فرکانس متر
سلام.. من یه بار قبلا توضیح داده بودم...
فرکانس یعنی چی؟؟ یعنی تعداد پالس در 1 ثانیه...
پس شما باید توسط یک تایمر 1 ثانیه رو ایجاد کنی و توسط یک کانتر تعداد پالس هاش رو بخونی...
کد:
$regfile = "m8def.dat"
تعریف میکرو و فرکانس کاری
$crystal = 8000000
'----------
خاموش کردن مکان نما
Cursor Off
'-----------
تایمر 1 رو کانتر تعریف کرده که حساس به لبه بالا رونده است
Config Timer1 = Counter , Edge = Rising
Ddrd.5 = 0
Portd.5 = 1
'-------
تایمر  صفر رو تاینمر تعریف کرده و به خاطر اینکه میخواد سر 1 ثانیه سرریز کنه مقدار prescal رو گذاشته 1024 یعنی

8000000 تقسیم بر 256(8 بیتی بودن تایمر 0)  و جوابش تقسیم بر 1024 میشه 30... یعنی اگر از 30 تا شمارشش بیشتر شد 1 ثانیه شده
Config Timer0 = Timer , Prescale = 1024
'---------------
فعال کرده تایمر 1 و 0 و وقفه کلی میکرو
Enable Timer1
Enable Timer0
Enable Interrupts

'---------------------
ovf0 اگر تایمر 0 خورد بپر به
و اگر تایمر 1 که 16 بیتی است و مقدارش با 65536 پر میشه سرریز کرد انوقت برو به
On Ovf1 Pulse_counter
On Ovf0 Yazdkit
'-------------------
تعریف متغییر ها
Dim A As Long , B As Byte , I As Long
B = 0
'----------------------------
پاک کردن ال سی دی
Cls
'-----------------------
شروع کار تایمر
Start Timer0
'------------
حلقه برنامه
Do
Loop
End                                                         'end program
'--------------
زیر برنامه برای تایمر
یعنی هر بار ی که برش میکنه به این زیر برنامه یکی به i اضافه میکنه تا زمانی که مقدارش بیشتر از 30 شد
انوقت میفهمیم که 1 ثانیه شده و باید مقدار کانتر رو بخونیم...
Yazdkit:
Incr i
اگر مقدار i از 30 تا بیشتر شد انوقت
If I > 30 Then
تایمر خاموش
Stop Timer0
Cls
اگر کانتر مقداری  که خونده بود از 65536 بیشتر شده یکی به b در برنامه اضافه میشه و اینجا
د ر 65536 ضرب میشه تعداد باری که سریز کرده و بعد مقدارش ریخته میشه تو ی a
A = B * 65536
مقدار a  جمع میشه با کانتر
A = A + Counter1
اینچا  متغیر ها صفر میشن
که دقیقا همین جا باید مقادیر رو روی ال سی دی نمایش بدی
B = 0
I = 0
Counter1 = 0
Start Timer0
End If
Return
'----------------------
اینجا همون جاییه که اگر کانتر 1 کا 16 بیتی است و با 65535 پر میشه و با 65536 سرریز میکنه
و یکی به b  اضافه میکنه
فرض کن تعدا پالس که خونده در 1 ثانیه   1000000 پاس بود انوقت مقدار b  15 است
Pulse_counter:
Incr B
Counter1 = 0
Return

ابراهیم خوانین زاده
 ساعت کار بدن انسان بیشتر وقتها, کمتر از 657.000 ساعت است و بعد از آن از کار می افتد  :():کمی فکر کنیم.....

259-734

[/url]
وبلاگ من


وب سایت من
[url=http://www.ebka-intelligent.com/]
آموزش کار با rfm12b,آموزش کامل ای سی ds1307, آموزش اتصال ماژول em18,سنسور رنگ ,سنسور گاز, و ... در وبلاگ من خواهید دید



(آخرین ویرایش در این ارسال: ۳۰-مرداد-۱۳۹۲, ۱۰:۲۷:۰۷، توسط EBKA.)
۳۰-مرداد-۱۳۹۲, ۱۰:۲۳:۱۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador, babyy, aKaReZa75, hadikh73, helma, kelaran, رسول, omid_phoenix
kelaran آفلاین
كاربر دو ستاره
**

ارسال‌ها: 76
موضوع‌ها: 14
تاریخ عضویت: اسفند ۱۳۹۱

تشکرها : 61
( 13 تشکر در 12 ارسال )
ارسال: #3
RE: فرکانس متر
ممون.ولی کلمات فارسی که نوشتی جابجا شده.واسه همین جملات نا مفهومه.یه سوالی داشتم.فرض کن میخاوم تو مدت زمان یه سیکل هر وقت یکی از پایه های میکرو رو یک کردم زمان تا اونجا محاسبه بشه.فرض کن من یه پالس ورودی با فرکانس 300 هرتز دارم با پهنای پالس 200 میکرو.حالا یکی از پایه های دیگه رو هم به عنوان ورودی دارم.میکرو در حالت عادی میاد پالس رو بررسی میکنه تا ببینه که من در مدت یک سیکل ورودی داشتم یا نه.حالا هر وقت من پایه مورد نظر رو یک کردم میکرو از زمانی که پالس 300 هرتز من یک شد تا زمانی که اون یکی از پایه ها یک شد زمان رو محاسبه کنه.ایا میشه؟
۳۱-مرداد-۱۳۹۲, ۰۰:۱۰:۰۹
ارسال‌ها
پاسخ
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #4
RE: فرکانس متر
(۳۱-مرداد-۱۳۹۲, ۰۰:۱۰:۰۹)kelaran نوشته است: کلمات فارسی که نوشتی جابجا شده.واسه همین جملات نا مفهومه

دوستمون زحمت کشیده واستون نوشت هرکدوم چکار میکنند؛ یکم هم شما زحمت بکشید و جملات رو درست کنید

---------------------------------------------------

کد php:
$regfile "m8def.dat" 
تعریف میکرو و فرکانس کاری
کد php:
$crystal 8000000 

خاموش کردن مکان نما
کد php:
Cursor Off 

تایمر 1 رو کانتر تعریف کرده که حساس به لبه بالا رونده است
کد php:
Config Timer1 Counter Edge Rising
Ddrd.5 
0
Portd.5 


تایمر صفر رو تاینمر تعریف کرده و به خاطر اینکه میخواد سر 1 ثانیه سرریز کنه مقدار prescal رو گذاشته 1024 یعنی

8000000 تقسیم بر 256(8 بیتی بودن تایمر 0) و جوابش تقسیم بر 1024 میشه 30... یعنی اگر از 30 تا شمارشش بیشتر شد 1 ثانیه شده
کد php:
Config Timer0 Timer Prescale 1024 

فعال کرده تایمر 1 و 0 و وقفه کلی میکرو
کد php:
Enable Timer1
Enable Timer0
Enable Interrupts 


ovf0 اگر تایمر 0 خورد بپر به
و اگر تایمر 1 که 16 بیتی است و مقدارش با 65536 پر میشه سرریز کرد انوقت برو به
کد php:
On Ovf1 Pulse_counter
On Ovf0 Yazdkit 

تعریف متغییر ها
کد php:
Dim A As Long As Byte As Long


پاک کردن ال سی دی
کد php:
Cls 

شروع کار تایمر
کد php:
Start Timer0 

حلقه برنامه
کد php:
Do
Loop
End                                                         
'end program 
زیر برنامه برای تایمر
یعنی هر بار ی که برش میکنه به این زیر برنامه یکی به i اضافه میکنه تا زمانی که مقدارش بیشتر از 30 شد
انوقت میفهمیم که 1 ثانیه شده و باید مقدار کانتر رو بخونیم...
کد php:
Yazdkit:
Incr i 
اگر مقدار i از 30 تا بیشتر شد انوقت
کد php:
If 30 Then 
تایمر خاموش
کد php:
Stop Timer0
Cls 
اگر کانتر مقداری که خونده بود از 65536 بیشتر شده یکی به b در برنامه اضافه میشه و اینجا
د ر 65536 ضرب میشه تعداد باری که سریز کرده و بعد مقدارش ریخته میشه تو ی a
کد php:
65536 
مقدار a جمع میشه با کانتر
کد php:
Counter1 
اینچا متغیر ها صفر میشن
که دقیقا همین جا باید مقادیر رو روی ال سی دی نمایش بدی
کد php:
0
0
Counter1 
0
Start Timer0
End 
If
Return 

اینجا همون جاییه که اگر کانتر 1 کا 16 بیتی است و با 65535 پر میشه و با 65536 سرریز میکنه
و یکی به b اضافه میکنه
فرض کن تعدا پالس که خونده در 1 ثانیه 1000000 پاس بود انوقت مقدار b 15 است
کد php:
Pulse_counter:
Incr B
Counter1 
0
Return 
۳۱-مرداد-۱۳۹۲, ۰۰:۱۹:۱۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, رسول, aKaReZa75, omid_phoenix, helma, Ambassador, ghazaleomid
omid_phoenix آفلاین
مدیر بخش
*****

ارسال‌ها: 2,238
موضوع‌ها: 108
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 12682
( 15433 تشکر در 4574 ارسال )
ارسال: #5
RE: فرکانس متر
(۳۱-مرداد-۱۳۹۲, ۰۰:۱۰:۰۹)kelaran نوشته است: یه سوالی داشتم.فرض کن میخاوم تو مدت زمان یه سیکل هر وقت یکی از پایه های میکرو رو یک کردم زمان تا اونجا محاسبه بشه.فرض کن من یه پالس ورودی با فرکانس 300 هرتز دارم با پهنای پالس 200 میکرو.حالا یکی از پایه های دیگه رو هم به عنوان ورودی دارم.میکرو در حالت عادی میاد پالس رو بررسی میکنه تا ببینه که من در مدت یک سیکل ورودی داشتم یا نه.حالا هر وقت من پایه مورد نظر رو یک کردم میکرو از زمانی که پالس 300 هرتز من یک شد تا زمانی که اون یکی از پایه ها یک شد زمان رو محاسبه کنه.ایا میشه؟

سلام
توضیحاتتون کمی گنگه
میخواهید با یه کلید تعیین کنید که میکرو پالس رو دریافت کنه یا نه؟
این کار رو میتونید طی وقفه انجام بدید

۰۱-شهریور-۱۳۹۲, ۱۲:۳۷:۲۸
ارسال‌ها
پاسخ
تشکر شده توسط : aKaReZa75, babyy, kelaran, Ambassador
kelaran آفلاین
كاربر دو ستاره
**

ارسال‌ها: 76
موضوع‌ها: 14
تاریخ عضویت: اسفند ۱۳۹۱

تشکرها : 61
( 13 تشکر در 12 ارسال )
ارسال: #6
RE: فرکانس متر
ممنون.ببینید من دوتا پین رو به عنوان ورودی تعریف میکنم.مثلا PINB و PINC .در حقیقت هردوتا پین ورودی پالس هستند.یعنی PINB ورودی PWM و PINC ورودی تک پالس.فرض کنید ورودی PINB ما پالسی با فرکانس 500هرتز و پهنای پالس 200میکرو.طبق شکل A زمان سیکل مااز X تاY.و حرف Z هم ضربه ورودی به PINC حالا میخوام مدت زمان X تا Z رو محاسبه کنم.امیدوارم تونسته باشم منظورم رو رسونده باشم


فایل‌(های) پیوست شده بندانگشتی (ها)
   
۰۱-شهریور-۱۳۹۲, ۲۰:۴۲:۰۰
ارسال‌ها
پاسخ
omid_phoenix آفلاین
مدیر بخش
*****

ارسال‌ها: 2,238
موضوع‌ها: 108
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 12682
( 15433 تشکر در 4574 ارسال )
ارسال: #7
RE: فرکانس متر
سلام
برای اندازه گیری زمان یک سیکل باید سیکل ورودی رو به یکی از پایه های وقفه خارجی int میکرو بدید و وقفه رو روی لبه بالارونده تنظیم کنید
زمانیکه سیکل شروع شد، با لبه بالارونده وقفه سرریز شده و طی وقفه میتونید یک تایمر رو فعال کنید تا شروع به شمارش زمان سیکل کنید
بعد منتظر بمونید که pinc فعال شود تا تایمر رو از وقفه خارج کنید و زمان طی شده رو محاسبه کنید


خوش باشید.

۰۵-شهریور-۱۳۹۲, ۱۲:۰۱:۲۰
ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador, babyy, helma, kelaran


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] تفاوت کلاک و فرکانس babyy 3 2,150 ۱۸-خرداد-۱۳۹۷, ۲۲:۲۵:۴۴
آخرین ارسال: salehjg
  [فوری] ایجاد موج مربعی با دو کلید و نماش فرکانس در ال سی دی mamadr 0 2,041 ۰۹-تير-۱۳۹۶, ۱۶:۲۰:۲۹
آخرین ارسال: mamadr
  [سوال] تنظیم دقیق فرکانس داخلی میکرو xxabasxx 6 5,823 ۰۴-آذر-۱۳۹۵, ۰۲:۱۲:۱۳
آخرین ارسال: xxabasxx
  [سوال] اندازه گیری فرکانس پالس مربعی mohza 6 6,886 ۳۰-اردیبهشت-۱۳۹۴, ۲۱:۴۴:۵۶
آخرین ارسال: sharin
  مشکل با فرکانس 16 مگ میکرو pontiac132 3 3,237 ۰۳-اسفند-۱۳۹۳, ۱۳:۲۸:۲۸
آخرین ارسال: pontiac132
  کمک برای شرط گذاشتن برای یک فرکانس خاص sinohe 5 4,170 ۱۱-آذر-۱۳۹۳, ۰۰:۱۵:۱۸
آخرین ارسال: sinohe
  پالس خروجی با قابلیت تغییر duty cycle و فرکانس متین 4 6,530 ۰۲-مرداد-۱۳۹۳, ۱۶:۱۵:۵۲
آخرین ارسال: رسول
  مبدل فرکانس به ولتاژ mazdayadak 5 7,199 ۰۲-اسفند-۱۳۹۲, ۰۱:۴۴:۳۴
آخرین ارسال: mahdi_jan
  فرکانس متر ساده hadikh73 14 15,446 ۲۵-شهریور-۱۳۹۲, ۱۶:۰۲:۳۰
آخرین ارسال: parsegade
  سوالاتی راجع به کار تایمر و اندازه گیری فرکانس rezarazeghi 9 7,863 ۰۱-آذر-۱۳۹۱, ۱۸:۱۷:۱۵
آخرین ارسال: aKaReZa75

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS