سلام
من برنامه زیر رو تو میکرو نوشتم که تو پروتئوس به خوبی جواب میده ولی تو عمل درست کار نمیکنه. برنامه طوریه که وقتی آشکار ساز عبور از صفر به وقفه میکرو پالس داد تایمر فعال میشه و بعد از گذشت یه زمانی توی خروجی ها یه پالسی دریافت میشه که این کار به صورت متناوب صورت میگیره. ولی تو عمل این زمان ها اصلا منظم نیستن و شکل روی اسیلوسکوپ حرکت میکنه.
من از کریستال استفاده نکردم و همچنین از تنظیمات فیوز بیت ها هم اطلاع ندارم. اگه کسی جواب مشکلمو میدونه ممنون میشم بهم کمک کنه.
این شکل مدار:

اینم شکل موج:

اینم برنامه:
من برنامه زیر رو تو میکرو نوشتم که تو پروتئوس به خوبی جواب میده ولی تو عمل درست کار نمیکنه. برنامه طوریه که وقتی آشکار ساز عبور از صفر به وقفه میکرو پالس داد تایمر فعال میشه و بعد از گذشت یه زمانی توی خروجی ها یه پالسی دریافت میشه که این کار به صورت متناوب صورت میگیره. ولی تو عمل این زمان ها اصلا منظم نیستن و شکل روی اسیلوسکوپ حرکت میکنه.
من از کریستال استفاده نکردم و همچنین از تنظیمات فیوز بیت ها هم اطلاع ندارم. اگه کسی جواب مشکلمو میدونه ممنون میشم بهم کمک کنه.
این شکل مدار:

اینم شکل موج:

اینم برنامه:
interrupt [EXT_INT0] void ext_int0_isr(void)
{
z=1; // har palse oboor az sefr z ra 1 karde va varede timer mishavad.
}
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
fire=90;
if(z==1)
{
TCNT2=0xca; // timer zamane 54us ra tolid mikonad.
x++; // har x barabar ba 1 daraje mibashad.
if(x==fire) // agar meghdare x barabar ba zavieye atash shod yek pulse be arze 10us tolid mikonad.
{
PORTC.2=1;
delay_us(10);
PORTC=0x00;
}
if(x==fire+180)
{
PORTC.3=1;
delay_us(10);
PORTC=0x00;
z=0; // ba sefr kardane z halghe montazere pulse oboor az sefre badi mishavad.
x=0;
}}}
{
z=1; // har palse oboor az sefr z ra 1 karde va varede timer mishavad.
}
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
fire=90;
if(z==1)
{
TCNT2=0xca; // timer zamane 54us ra tolid mikonad.
x++; // har x barabar ba 1 daraje mibashad.
if(x==fire) // agar meghdare x barabar ba zavieye atash shod yek pulse be arze 10us tolid mikonad.
{
PORTC.2=1;
delay_us(10);
PORTC=0x00;
}
if(x==fire+180)
{
PORTC.3=1;
delay_us(10);
PORTC=0x00;
z=0; // ba sefr kardane z halghe montazere pulse oboor az sefre badi mishavad.
x=0;
}}}
دیدگاه