[size=medium]
سلام، ببخشید من میخوام با تایمر 1، یه قطار موج مربعی با فرکانس 50Hz و دیوتی سایکل %10 بسازم. کد زیر رو نوشتم. اگه بهم کمک کنید که اشتباهم رو پیدا کنم، ازتون ممنون میشم.
اینم کد:
اینم روابطی که ازشون استفاده کردم.

و اینم تصویر خروجی پروتئوسش

همونطور که میبینید، شکل موج خروجی با فرکانس 200Hz و دیوتی سایکل %50 تولید شده!
لطفا تو پیدا کرد مشکلش کمکم کنید. ممنون
سلام، ببخشید من میخوام با تایمر 1، یه قطار موج مربعی با فرکانس 50Hz و دیوتی سایکل %10 بسازم. کد زیر رو نوشتم. اگه بهم کمک کنید که اشتباهم رو پیدا کنم، ازتون ممنون میشم.
اینم کد:
کد:
#include <mega32.h> interrupt [TIM1_OVF] void timer1_ovf_isr(void) // فعال کردن اینتراپت برای دادن مقدار مشخص شده به رجیستر TCNT1A در هر بار { TCNT1=63035; } void main() { DDRD=0x30; // تعریف OCA1 به عنوان خروجی PORTD=0x00; TCCR1A=0x42; // انتخاب مد fast PWM و انتخاب OC1A به عنوان خروجی TCCR1B=0x1a; // قرار دادن مقدار ICR1 در TOP وانتخاب تقسیم فرکانسی 64 ICR1L=0xff; // انتخاب 65535 برای رجیستر ICR1 ICR1H=0xff; TCNT1=63035; // مقدار لازم برای تولید موج با فرکانس 50HZ OCR1A=63285; // مقدار لازم برای تولید موج با دیوتی سایکل 10% TIMSK=0x04; // فعال کردن وقفه سرریز تایمر 1 #asm("sei") // صدور مجوز وقفه while(1); }

و اینم تصویر خروجی پروتئوسش

همونطور که میبینید، شکل موج خروجی با فرکانس 200Hz و دیوتی سایکل %50 تولید شده!
لطفا تو پیدا کرد مشکلش کمکم کنید. ممنون
دیدگاه