سلام دوستان
می خواستم بدونم مشکل این کد چیه.برای ساختن فرکانس 38 کیلو هرتز هست برای فتوترانزیستور
کد:
$regfile = "m8def.dat"
$crystal = 8000000
Config Pind.1 = Output
Do
Set Portd.1
Waitus 13
Reset Portd.1
Waitus 13
nop
Loop
برای ساختن فرکانس بهتره از تایمر استفاده کنید
دستور wait برای این کار مناسب و دقیق نیست
میشه کامل توضیح بدید؟؟
برای ساختن فرکانس 38 کیلو هرتز چه کار کنم؟من اول راهم
مثلاً:
فرکانس 8 مگ
پری اسکیل 8
در نتیجه در یک ثانیه تا 1 میلیون میکرو میشمره
اگه از تایمر 1 استفاده کنید چون 16 بیتیه یعنی حداکثر تا عدد 65536 میشمره در نتیجه در یک ثانیه 15 بار تایمر یک از اول تا آخر میشمره بعد یک بار هم تا 16960 میشمره. یعنی در یک ثانیه 15 بار پرچم سر ریز بالا میره و تا 16960 هم میشمره.
تا اینجا مقدمه ای بود در مورد تایمر
حالا:
فرکانس 38 کیلو یعنی طول موج هر سیکل 26.3 میکرو ثانیه است
فرکانس 8 مگ با پری اسکیل 8 میشه 1 مگ شمارش در یک ثانیه یعنی کافیه هر 13 میکروثانیه (نیم سیکل) یک بار تغییر وضعیت بده. برای این کار هم کافیه تا عدد 13 بشمره که این کارو با تایمر های 0 و 2 که 8 بیتی هستند هم میشه انجام داد.
حالا برای اینکه دقت بالا بره پری اسکیلو 1 بگیرین و تا 210 بشمرین
یه برنامه نمونه طبق صحبت های ایلگار جون :
کد php:
$regfile = "m32def.dat" : $crystal = 8000000
Config Timer2 = Timer , Prescale = 1
On Timer2 Ant : Enable Interrupts : Enable Timer2 : Start Timer2
Ddrb = 255
Do
Loop
Ant:
Timer2 = 151
Toggle Portb.0
Return
سلام به دوستان
به به تاپیک زیر خاکی پیدا کردم :-)
میگم شرمنده ها،
اول اینکه توضیح بدین فرکانس یعنی چی ؟ تا بعد بگم چه فرکانسی می خوام تولید کنم.
من تا اسم فرکانس رو میشنوم ، یه شکل موج توصفحه اسیلوسکوپ میاد توذهنم ، بگین که همینطوریه :-)
اطلاعاتم فوران کرد :-)
نقل قول: اول اینکه توضیح بدین فرکانس یعنی چی ؟
خب مسلم جان، فرکانس، اندازه گیری تعداد تکرار اتفاقی در واحد زمان است. برای محاسبه فرکانس بر روی یک بازه زمانی ثابت، تعداد دفعات وقوع یک حادثه را در آن بازه می شماریم و سپس این تعداد را بر طول بازه زمانی تقسیم می کنیم. پس از فیزیک دان آلمانی هاینریش رودولف هرتز، در سیستم واحدهای SI فرکانس با هرتز(Hz) اندازه گیری میشود. یک هرتز به این معنی است که یک واقعه یک بار بر ثانیه رخ میدهد.
واحدهای دیگری که برای اندازه گیری فرکانس بکار میروند به این شرح هستند: سیکل بر ثانیه، دور بر دقیقه (rpm). سرعت قلب توسط واحد ضربان بر دقیقه اندازه گیری میشود. یک روش جایگزین برای محاسبه فرکانس، اندازه گیری زمان بین دو رخداد متوالی حادثهای است (دوره تناوب) و سپس محاسبه فرکانس به صورت عددی متقابل این زمان مانند زیر:
f=1/T
که در آن T دوره تناوب است.
خب یک از دوستان لطف کنه اون کد پست شماره 5 رو یه توضیح کوچولو بده، پست علی تریپ جان .
ایکه اون اعداد برا چی اون اعداد هستن و ...
[
attachment=9663]
سلام
خب من الان می خوام فرکانس 50 هرتز تولید کنم، توکد بالا باید چه تغییری بدم؟ اصلاً اون کد بالا فرکانس چند هرتز درست می کنه؟
بازم سلام
مرتضی جان میگم من توخم ابروی طرف موندم چه برسه به قلب و مغز طرف :-)
من اگه بخوام با تایمر 1 زمان و فرکانس تولید کنم فرمولش میشه این :
زمان = (تایمر بیت * Prescale) / مقدار کریستال
فرکانس = مقدار کریستال / Prescale
طبق مثال یک نفر امده با استفاده از کریستال 4 مگا هرتز و Prescale 64 مقدار 1.04 ثانیه تولید کرده، فعلاً می خوام بدونم که این اعداد چطوری داخل فرمول زمان قرار گرفتن که شده این؟ و تایمر 1 ،16 بیتیه دیگه؟
فرکانس شمارش : F_MCU/Prescale
زمان 1 شمارش تایمر ، می شه عکس رابطه ی بالا.
اگر تایمر 8 بیتی باشه ، مثل تایمر0 :
256 * رابطه ی زمانی بالا کنی ، زمانی که طول می کشه تایمر 8بیتی 1 بار سر ریز بشه بدست می یاد.
دوبارهه عکس اش کنی فرکانسش دست می یاد. که همون فرکانس سیگنالی هست که ساختی.
تمام چیزایی که می گم برای مود fast pwm هست.
در این حالت OCR0 یا در بسکام pwma ( ؟ ) می تونه بین 0 تا 255 تغییر کنه و DutyCycle سیگنال ساخته شده رو تغییر بدهه.
اگر بخوای فرکانس دقیق بسازی ، باید به رجیستر تایمر مقدار اولیه بدی که مثلا از 0 شروع نکنه به شمارش و از 25 شروع کنه .
یعنی :
Timer0 = 25
حالا به جای اینکه 256 تا بشمارهه ، تایمر0 - 256 می شمارهه و اینطوری می تونی فرکانس دقیق بسازی.
نکته !
بعد از سر ریز شدن تایمر0 ، مقدار تایمر0 از 0 شروع می شه ، نه اون 25 ای که اول کار بهش دادی . باید چکار کنیم؟
ساده ست ، وقفه ی سر ریز تایمر0 رو فعال می کنی و با وقوع وقفه ، در روال وقفه تایمر0 رو دوبارهه مقدار دهی می کنیم.
مثلا :
با این کار OCR رو بین تایمر0 تا 255 برای تایمر 8 بیتی میتونی مقدار دهی کنی.
-------------
یه تشکری کنم بابت سوالی که کردی :)
خودم با محاسبه کار می کردم می دیدم جواب چیزی نیست که می خوام ، تجربی تا حدودی حلش کردم ( حوصله نداشتم ببینم مشکل از کجاست :) )
الان باعث شد اشکال کار منم درآد :)
هم جدول کتابم مشکل داشت که دیتاشیت دانلود کردم و تصحیحش کردم ، هم فرکانس متری که ساخنه بودم و نتایج رو توش می دیدم :)
موفق باشی :)
منم یه سوال این وسط بپرسم ؟
بهترین راه برای نمونه برداری از یه فرکانس چیه (فرکانس که نمیشه گفت اما نمونه برداری از یک سری پالس با سرعت بالا یعنی بالاتر از یک وصفر شدن پین ) بعد چطور اینا را با همون ترتیب روی سیستم مانیتور کنم
کار با پورت سریال را بلدم