PDA

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



ahwazcity
28-04-2010, 03:38
سلام دوستان
من 1 مشکل عجیب و غریب دارم!!!
میخواستم 15-20 تا ورودی و خروجی رو با avr شبیه سازی کنم که به این مشکل که پایین میگم برخوردم و تا 2 تا ورودی قانع شدم ولی باز هم مشکلم پا برجاست

میخوام با 2 تا میکرو سویچ به 2 تا پایه mega8 به عنوان ورودی دستور بدم و اگر مثلا اولی زده شد 1 led روشن و اگر دومی زده شد 1 led خاموش بشه

مشکل: اینجاست که وقتی مدار رو درست وصل کردم و پاور رو متصل کردم led خود به خود روشن و خاموش میشه و اصلا مهلت نمیده که من بهش بگم روشن شو یا خاموش

کلید on رو که بزنم و نگه دارم روشن میمونه led و اگر بردارم به همون ترتیب قبل بدون هیچ ریتم و قانونی روشن و خاموش میشه و اگر کیلد off رو بزنم خاموش نگه میداره و اگر دستم رو ازش بردارم باز هم مثل on

یکی از دوستان گفت که به جای اینکه کلید ها رو پورت ورودی در نظر بگیرم و ولتاژ بدم بیام و زمینشون کنم.... یعنی دستور قدیمی که این هست:

$regfile = "M8def.dat"
$crystal = 8000000
Config Portd = Input
Config Portb = Output
Config Debounce = 30
Do
Debounce Pind.3 , 1 , On , Sub
Debounce Pind.4 , 1 , Off , Sub
Loop
End

On:
Set Portb.0
Return
Off:
Reset Portb.0
Return
End

تبدیل کردیم به این:
Config Portd = Input
Config Portb = Output
Config Debounce = 30
Do
Debounce Pind.3 , 0 , On , Sub
Debounce Pind.4 , 0 , Off , Sub
(فقط جاهایی رو که تغییر دادیم نوشتم)

با این حالت درست شد!!!!!!!!!!!!!!!!!!!!!!!!!! Shocked Shocked Shocked Shocked Shocked Shocked Shocked

حالا سوال من اینه که مشکل چیه؟
من میخوام وقتی که ورودی داشتم led ام روشن بشه!!!!

و 1 چیز هم به ذهنم میرسه که این داره میپره روی دستور on , off بدون اینکه وایسه منتظر دستور debounce

یعنی در کل میشه گفت زمانی که من دستور on رو از ground میدم و debounce ام 0 هست کار میکنه و به محضی که 1 میکنم و میخوام دستور بدم اگر ولتاژ گرفت ورودیم (یا 1 شد) قاطی میکنه


خواهشا کمکم کنید که داره سوت میکشه مغزم

هنرفر
28-04-2010, 19:09
دوست عزیز به احتمال زیاد فیوز بیت تایمر نگهبان(wathdog timer) صفر هست و میکرو دائم ریست میشه.در atmega8 این فیوز بیت به صورت پیش فرض صفر هست و این تایمر فعال هست.لطف کنید و موقع پروگرم کردن برنامه این فیوز بیت را یک کنید.(wtdon=1) انشا الله که حل میشه.

ahwazcity
28-04-2010, 23:06
میشه بگید دستورش رو کجا وارد کنم؟
خود دستور صحیح رو هم بهم بگید چی بنویسم

این کد منه که نمیتونم اجراش کنم دیگه برای یاد آوری:
$regfile = "M8def.dat"
$crystal = 8000000
Config Portd = Input
Config Portb = Output
Config Debounce = 30
Do
Debounce Pind.3 , 1 , On , Sub
Debounce Pind.4 , 1 , Off , Sub
Loop
End

On:
Set Portb.0
Return
Off:
Reset Portb.0
Return
End

morteza_rk
29-04-2010, 02:31
سلام دوست عزیز

من به سهم خودم ورود شمارو به این انجمن تبریک میگم ، امیدوارم یکی از اعضای پرکار و فعال این سایت بشید.

من برنامه ی شمارو هم در پروتیوس و هم در عمل تست کردم و هیچ مشکلی نداره! (برنامه ی دوم رو میگم) البته اون End که در آخرین خط برنامه نوشتید اضافه هست. این کلمه نشان دهنده ی پایان برنامه ی اصلی هست و زیر برنامه ها بعد از اون نوشته میشن ، مثل همین حالتی که شما برنامتونو نوشتید! یعنی Subroutineها بعداز End نوشته میشن. ولی بعداز Subroutineها نیازی به End نیست.

حالا می رسیم به اون فیوزبیتی که دوست بسیار عزیزم جناب آقای هنرفر بهش اشاره کردن. این فیوز بیت در حالت پیشفرض در نرم افزار پروتیوس برنامه ریزی شده هست. اما در واقعیت معمولا برنامه ریزی شده نیست! با این حال شما می تونید تست کنید.

در پنجره ی پروگرمر وقتیکه می خواید میکروتونو پروگرم کنید به قسمت فیوز بیتها (Lock aand Fuse Bits) برید. اونجا می تونید گزینه ی مربوط به این فیوزبیت رو مشاهده و تنظیم کنید.

heil
12-05-2010, 13:19
سلام
من خیلی با میکرو سوئیچ کار کردم و اصلا با این فیوز بیت کاری نداشتم و فکر هم نکنم که مشکلتون از این فیوز بیت باشه
فکر کنم مشکلتون از این باشه که ولتاژ روی پایه میکرو باقی میمونه
کافیه که پایه ورودی میکروتونو با یه مقاومت به زمین وصل کنید تا بعد از مدتی ولتاژ روی پایه میکرو تخلیه بشه (pull down)
. همین
تو برنامه دومتون این کمه :
portd=255
این دستور پورت d شما رو pull up میکنه
یعنی در حالت عادی این پورتتون یکه . و وقتی کلیدو می زنید 0 میشه و......
موفق باشید

morteza_rk
13-05-2010, 22:09
سلام

با تشکر از دوست تازه واردمون جناب heil و عرض تبریک بهشون بابت ورود به انجمن ، باید بگم که مشکل این دوستمون خیلی وقته که حل شده. من جای دیگه جوابشونو دادم.:wink: