PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل عملکرد میکرو در عمل



afza_saeghe
19-07-2012, 16:02
سلام به همه دوستان
تو مدار زیر من واسه میکرو با تایمر برنامه نوشتم که هروقت آشکار ساز عبور از صفر فعال شد بعد از گذشت یه زمانی توی خروجی های میکرو (2 خروجی) یه پالسی داشته باشم. این کار توی پروتئوس به خوبی جواب میده. وقتی تو عمل هم می بندمش قسمت آشکار ساز هم درست کار میکنه ولی خروجی میکرو پالس های درستی نمیده یعنی اگه مثلا قراره هر 10 میلی ثانیه یه پالس بده این زمان درست نیست و مثلا یه بار 3 میلی ثانیه و یه بار 7 میلی ثانیه و... میده. و روی اسیلوسکوپ موج حرکت میکنه.
امیدوارم منظورم رو تونسته باشم رسونده باشم.
من از کریستال استفاده نکردم و تنظیمات فیوز بیت ها رو هم نمیدونم چی به چیه؟ اگه فکر میکنید دلیلش این ها ست بهم بگید چیکار کنم.
بازم اگه جاییش مبهم بود بگید تا بهتون بگم.یا اگه لازم شد برنامشو بذارم
این شکل مدار:
You can see links before reply
اینم شکل موج:

You can see links before reply

sadmonew
19-07-2012, 23:28
بازم اگه جاییش مبهم بود بگید تا بهتون بگم.یا اگه لازم شد برنامشو بذارم
سلام مهندس
لطفا برنامه اي كه نوشتينو بذارين. اينطوري بهتر ميشه كمك كرد.
البته معمولا تو پروتئوس درست جواب ميده و وقتي عملي ميبنديم تازه متوجه ميشيم كه برنامه اشتباهي داره يا نه؟

afza_saeghe
20-07-2012, 11:58
این برنامه مربوط به قسمت تایمره:




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;


}}}
داداش هرکاری میکنم اینجا درست نشون نمیده یه زحمت بکش کپیش کن تو word تا بتونی درست ببینی

mrm
20-07-2012, 13:17
برای اینکه تایمر مقدار درست رو تولید کنه شما باید با ورود به اینتراپت تایمر ،
تایمر رو مقدار دهی کنید و بعد کدهاتون رو بنویسید که در این حالت میشه:

interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
TCNT2=0xca; // timer zamane 54us ra tolid mikonad.
fire=90;
.
.
.
البته کد رو هم بهتر میشه نوشت

sadmonew
20-07-2012, 17:00
این برنامه مربوط به قسمت تایمره:




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;

}}}

داداش هرکاری میکنم اینجا درست نشون نمیده یه زحمت بکش کپیش کن تو word تا بتونی درست ببینی
سلام مهندس
مقاديري كه براي تنظيم تايمر دادين، براي كريستال چند مگاهرتزيه؟
احتمالا مشكل مربوط به اين ميشه كه شما فيوزبيت رو درست تنظيم نكردين.

afza_saeghe
20-07-2012, 17:25
سلام مهندس
مقاديري كه براي تنظيم تايمر دادين، براي كريستال چند مگاهرتزيه؟
احتمالا مشكل مربوط به اين ميشه كه شما فيوزبيت رو درست تنظيم نكردين.
از کریستال استفاده نکردم و فرکانس داخلی میکرو 8 مگاهرتزه
فیوزبیت رو روی 8 مگاهرتز تنظیم کردم. این یکی رو میدونستم

sadmonew
20-07-2012, 22:54
سلام
مهندس تو عكسي كه نشون دادين، گراند رو درست انتخاب نكردين.

afza_saeghe
22-07-2012, 21:01
اگه منظورتون پایه های avcc و aref هستش اونا رو تغییردادم چون می خوام از ADC هم استفاده کنم این دو پایه رو به هم متصل کردم و بعد به سر وسط یه سلف و خازن وصل کردم و سلف رو به vcc و خازن رو به gnd وصل کردم ولی هنوز تستش نکردم.
این کارم درسته مهندس؟
ولی اگه منظورتون جای دیگه ی مداره متوجه منظورت نشدم. شکلی هم که گذاشتید باز نمیشه.
میشه بیشتر راهنماییم کنید؟

afza_saeghe
22-07-2012, 21:07
عکس رو تونستم ببینم
آره تو عمل این زمین رو ندارم اینو واسه این گذاشتم که پروتئوس درست کار کنه.
خروجی آشکار ساز عبور از صفر درست کار میکنه
اما یه سوال
آیا من باید زمین امیتر ترانزیستور رو با زمین میکرو یکی درنظر بگیرم؟ من جدا در نظر گرفتمشون

KHM
22-07-2012, 21:33
عکس رو تونستم ببینم
آره تو عمل این زمین رو ندارم اینو واسه این گذاشتم که پروتئوس درست کار کنه.
خروجی آشکار ساز عبور از صفر درست کار میکنه
اما یه سوال
آیا من باید زمین امیتر ترانزیستور رو با زمین میکرو یکی درنظر بگیرم؟ من جدا در نظر گرفتمشون
آره رفیق..باید زمین q3 با میکرو مشترک باشه

afza_saeghe
24-07-2012, 15:25
آره رفیق..باید زمین q3 با میکرو مشترک باشه
زمین رو هم درست کردم بازم درست نشد
cry::cry::cry::cry::

sadmonew
24-07-2012, 17:05
سلام مهندس
به نظرم اول از درست كار كردن سخت افزار مطمئن بشين. مثلا با اوسكوپ سيگنال هاي خروجي رو چك كنيد.(منظورم به صورت عملي). خودم بعضي مواقع با همچين مشكلاتي روبرو شدم.
برنامه درست بود اما جواب درستي نميتونستم ازش بگيرم و در نهايت مشكل اصلي از سخت افزار بود كه سيگنال خروجي درستي به ميكرو ارساي نميكرد و همين مسئله كلي مارو سر كار ميذاشت و وقتمون رو الكي ميگرفت.

M_GH
24-07-2012, 19:28
ببین اصلا شاید اتصالی ترک خوردگی چیزی داری
(اتصال و ترک لحیم هات رو هم چک کن)

afza_saeghe
25-07-2012, 11:05
سلام مهندس
به نظرم اول از درست كار كردن سخت افزار مطمئن بشين. مثلا با اوسكوپ سيگنال هاي خروجي رو چك كنيد.(منظورم به صورت عملي). خودم بعضي مواقع با همچين مشكلاتي روبرو شدم.
برنامه درست بود اما جواب درستي نميتونستم ازش بگيرم و در نهايت مشكل اصلي از سخت افزار بود كه سيگنال خروجي درستي به ميكرو ارساي نميكرد و همين مسئله كلي مارو سر كار ميذاشت و وقتمون رو الكي ميگرفت.
همین کار رو هم کردم و برنامه رو تغییر دادم و گفتم بدون تحریک پالس ورودی خروجی میکرو به صورت متناوب پالس بده و دوباره همون مشکل وجود داشت. یعنی ایراد از مدار آشکار ساز عبور از صفر نبود.
امکان داره به خاطر اینکه من از کریستال استفاده نکردم این مشکل به وجود اومده باشه؟
واسه این میگم چون میکرو قراره پالس های با عرض کمی مثل 55 میکروثانیه رو تولید کنه بعد این ها رو بشماره و مثلا 90 تا که شد یه خروجی بده.

afza_saeghe
25-07-2012, 11:07
ببین اصلا شاید اتصالی ترک خوردگی چیزی داری
(اتصال و ترک لحیم هات رو هم چک کن)

روی برد برد بستمش و چند بار چکش کردم