سلام
یک مدار میکرو دارم (روی Bread Board) ,پنج تا میکرو سوییچ به عنوان حسگر موقعیت حرکت یک قطعه مکانیکی (جک پنومات) روی یک مسیر مستقیم کار گذاشتم , دو تای ابتدا وانتهای حرکت وقفه خارجی (Change) و 3 تای دیگه با Debounce
2 تا کلید یکی برای عمل کردن جک (Expand) و دیگری برای جمع شدن جک (Retract) هم هست که اونا هم Debounce هستند.
timer 1 هم فعال هست. با خوردن هر سوئیچ زیر روال مربوطه عمل می کنه و نهایتا زمان خوردن هر سوییچ در LCD نمایش داده میشه.
مشکل اینجاست که از وقتی وقفه های خارجی در برنامه تعریف شده مشکلاتی پیش اومده.
1-در ابتدای روشن کردن میکرو برنامه به زیر روال مربوط به وقفه0 میره.
2-مجبور شدم یک متغیر (flag) تعریف کنم که وقتی کلید استارت زده میشه ,1 میشه. در زیر روال وقفه هم اول گفتم اگر متغیر شرط برابر 0 هست, دیگه ادامه نده و Return
3-وحالا اتفاق جالب بعدی اینه که در حالیکه شرط بر قرار نشده , زدن سوییچ هایی که عامل وقفه هستند باعث به هم ریختگی در اجرا می شه. برنامه به ابتدا میره.
:angry:
لطفا راهنمایی بفرمایید. :cry2:
اینم برنامه:
http://www.4shared.com/file/xQ6kiN6N/VelocityProbe_debaunce.html
یک مدار میکرو دارم (روی Bread Board) ,پنج تا میکرو سوییچ به عنوان حسگر موقعیت حرکت یک قطعه مکانیکی (جک پنومات) روی یک مسیر مستقیم کار گذاشتم , دو تای ابتدا وانتهای حرکت وقفه خارجی (Change) و 3 تای دیگه با Debounce
2 تا کلید یکی برای عمل کردن جک (Expand) و دیگری برای جمع شدن جک (Retract) هم هست که اونا هم Debounce هستند.
timer 1 هم فعال هست. با خوردن هر سوئیچ زیر روال مربوطه عمل می کنه و نهایتا زمان خوردن هر سوییچ در LCD نمایش داده میشه.
مشکل اینجاست که از وقتی وقفه های خارجی در برنامه تعریف شده مشکلاتی پیش اومده.
1-در ابتدای روشن کردن میکرو برنامه به زیر روال مربوط به وقفه0 میره.
2-مجبور شدم یک متغیر (flag) تعریف کنم که وقتی کلید استارت زده میشه ,1 میشه. در زیر روال وقفه هم اول گفتم اگر متغیر شرط برابر 0 هست, دیگه ادامه نده و Return
3-وحالا اتفاق جالب بعدی اینه که در حالیکه شرط بر قرار نشده , زدن سوییچ هایی که عامل وقفه هستند باعث به هم ریختگی در اجرا می شه. برنامه به ابتدا میره.
:angry:
لطفا راهنمایی بفرمایید. :cry2:
اینم برنامه:
http://www.4shared.com/file/xQ6kiN6N/VelocityProbe_debaunce.html
دیدگاه