[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 تولید شده!
لطفا تو پیدا کرد مشکلش کمکم کنید. ممنون




دیدگاه