با سلام و خسته نباشيد.
با بسكام اين برنامه رو بايد بنويسم.
چطوري بايد اين كار رو انجام بدم؟
زمان روشن بودن يك شكل موج مربعي با فركانس 50 هرتز.
كريستال 8 مگا هرتز استفاده ميكنم و ميكرو هم مگا 8 هستش.
ممنون ميشم كمك كنيد.
سلام
سیگنال رو به adc میکرو بدید و توسط تایمر زمان 0 و 1 بودن رو محاسبه کنید
برنامه رو شروع کنید
مشکلی بود خودم یا دوستان کمک می کنیم
خوش باشید.
(۱۸-مهر-۱۳۹۲, ۲۰:۳۲:۰۲)r0b0 نوشته است: [ -> ]سلام
سیگنال رو به adc میکرو بدید و توسط تایمر زمان 0 و 1 بودن رو محاسبه کنید
برنامه رو شروع کنید
مشکلی بود خودم یا دوستان کمک می کنیم
خوش باشید.
ميشه بيشتر راهنمايي ميكنيد.
سيگنال رو به adc بدم ، با تايمر محاسبه كنم؟
چطوري؟
البته يه چيزايي نوشتم. ولي فكر كنم چون دقيق نميدونم چطوري بنويسم به مشكل خوردم.
(۱۸-مهر-۱۳۹۲, ۲۰:۴۱:۴۹)shervin24 نوشته است: [ -> ]ميشه بيشتر راهنمايي ميكنيد.
سيگنال رو به adc بدم ، با تايمر محاسبه كنم؟
چطوري؟
البته يه چيزايي نوشتم. ولي فكر كنم چون دقيق نميدونم چطوري بنويسم به مشكل خوردم.
سیگنال رو بصورت 0 و 1 میدید به یکی از پایه های adc میکرو
طی برنامه مقدار adc رو میخونید و با شرط if تعریف می کنید که اگه پایه adc برابر 1 شد به زیربرنامه x برو و تایمر رو فعال کن و تا زمانی که پایه 0 نشده ، تایمر رو غیرفعال نکن
بعد با یه شرط دیگه تعریف می کنید که اگه مقدار adc برابر 0 شد، تایمر رو نگه دار و مقدار تایمر رو در تو یه متغیر بریز
بعد مقدار متغیر رو میخونید و با یه سری محاسبات مقدار زمان 1 بودن پایه رو حساب می کنید.
واسه محاسبه زمان 0 بودن پایه هم همین کار رو انجام میدید و یه طی یه زیربرنامه دیگه، مقدار زمانی که تایمر 0 بوده رو در یه متغیر دیگه میریزید و میخونید
نهایتا کافیه از دوتا مقدار زمان 0 و 1 بودن پایه درصد بگیرید تا دیوتی سایکل duty cycle بدست بیاد...
خوش باشید.
البته نيازي به ADC هم نيست. به يه پايه ي معمولي هم مي تونيد بديد و سطح رو چك كنيد و تايمر رو راه بندازيد.
يا با وقفه خارجي و تايمر.
معقول تر اينه كه با يه تايمر اين كار رو كنيد ، خود بسكام هم فكر مي كنم يه تابع براي تعيين عرض پالس دارهه كه يكي از تايمر ها رو درگير مي كنه.
(۱۸-مهر-۱۳۹۲, ۲۲:۰۷:۰۷)sharin نوشته است: [ -> ]البته نيازي به ADC هم نيست. به يه پايه ي معمولي هم مي تونيد بديد و سطح رو چك كنيد و تايمر رو راه بندازيد.
يا با وقفه خارجي و تايمر.
معقول تر اينه كه با يه تايمر اين كار رو كنيد ، خود بسكام هم فكر مي كنم يه تابع براي تعيين عرض پالس دارهه كه يكي از تايمر ها رو درگير مي كنه.
من اين برنامه رو نوشتم. فكر ميكنم درست باشه. ولي توي پروتئوس كه شبيه سازي ميكنم جواب نميگيرم.(فايل اتچ شده)
البته با دستور pulsein هم برنامش رو نوشتم تئوري توي پروتئوس جواب ميده ، ولي در عمل من بستم، جواب نگرفتم.
فكر ميكنم ميكروم هنگ ميكنه.
(اون رو هم ميذارمش)