نقل قول: مهندس من تا به حال دستور powerdown تو بیسیک ندیدم!!
میخوای با این دستور چیکار کنی؟ کار کلی برنامه چیه؟
نقل قول: ارتباط بین دو ماژول مخابراتی است.مگه اینطوری نباید باشه که وقتی وارد مد sleep میشه باید ولتاژ میکرو که 5 ولت است پایین(0) آید؟
فلسفه ي مود sleep چيه ...؟
وقتي ميكرو كار خاصي نمي كنه و در واقع بيكاره ، الكي دارهه انرژي مصرف مي كنه ، پس يه مود sleep براي ميكرو ها در نظر گرفته شدهه كه در زمان بيكاريه CPU ، ميكرو رو به مود sleep برهه. خوب چه اتفاقي مي يفته؟
واحدي كه كلاك رو بين peripheral ها تقسيم مي كنه ، كلاك اكثر واحد ها رو قطع مي كنه. البته بسته به مودهاي sleep دارهه ، مثلا همين powerdown فكر كنم كلاك CPU رو هم قطع مي كنه ، پس مصرف ميكرو كلي كاهش پيدا مي كنه ...
ولتاژ چي 5 هست بايد 0 بشه؟!
اگر 5v به ميكرو نرسه كه كار نمي كنه. P=V*I ، شما بايد جريان ميكرو رو اندازه بگيري!
در حالت sleep كلي جريان كشي ميكرو كمتر مي شه و در نتيجه توان كمتري مصرف مي شه... .
label درست هست ( و براي احتياط گفتم بذاريد. )
نقل قول: ممكنه حرف شما صحیح باشه که تا وارد مود sleep مي شه ، بلافاصله بعدش يه اينتراپتي رخ مي دهد كه باعث بيدار شدن ميكرو مي شه
ممكن!
خوب شما بايد زير و بم طراحيتون رو بدونيد و آناليز كنيد و همه چي رو در نظر بگيريد و بدونيد الان چه اتفاقي دارهه مي يفته و اينتراپت و ... رو بتونيد حس كنيد!
يه روش DEBUG هست كه نياز به JTAG دارهه.
روش دوم كه روش آزمون خطاست و بهتون توصيه اش مي كنم ، استفاده از چندتا LED هست ، شما وقتي وارد روال وقفه مي شيد ، LED يه خاصي رو روشن كنيد و در جاي مناسب خاموش كنيد ( مدت بايد به اندازه اي باشه كه چشمتون روشني LED رو sense كنه ... )
يا روي LCD شمارش رفتن به روال وقفه هاتون رو داشته باشيد.
اگر مرتب اينتراپت رخ مي دهه و ماژول بايد در ارتباط باشه ، پس چرا مي خوايد از SLEEP استفاده كنيد؟!
من دقيقا پروژه اتون رو نمي دونم ، اما اگر درگيري بين اجزاي پروژه 100% هست و ميكرو بيكار نمي شه ، استفاده از مود Sleep بدرد نمي خورهه و ميكرو هميشه بايد روشن باشه. مگر اينكه تغيير سخت افزاري بديد و ماژول رو از كار بندازيد كه اينتراپت براي ميكرو توليد نكنه ، در اين شرايط هم اگر فرستنده چيزي بفرسته گيرنده نمي تونه مطلع بشه! ( مي شه در يه بازه ي زماني گه گاهي ماژول رو روشن و خاموش كرد! شايد! )
مثلا من چطوري استفاده كردم ، گفتم اگر N ثانيه گذشت و اطلاعاتي دريافت نشد ، برو به مود Sleep .
اونطرف هم كه اطلاعات مي فرستاد قبل از هر ارسال يه اينتراپت هم سر int0 گيرنده مي انداخت و اينطوري گيرنده روشن مي شد و اطلاعات رو مي گرفت.
با توجه به اين توضيحات اميدوارم ايده هاي كافي رو براي اصلاح پيدا كرده باشيد ، چون شما بهتر بالا و پايين پروژه اتون رو مي دونيد.
باز موردي بود ، بگيد دوستان كمكتون مي كنن.
موفق باشيد.