امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشكل در برنامه sleep
نویسنده پیام
hossein6355 آفلاین
تازه وارد

ارسال‌ها: 13
موضوع‌ها: 5
تاریخ عضویت: بهمن ۱۳۹۰

تشکرها : 2
( 0 تشکر در 0 ارسال )
ارسال: #1
مشكل در برنامه sleep
سلام به همگي
اين برنامه براي ارتباط بين دو ميكرو است ولی powerdown آن کار نمیکنه باید چه تغییری در برنامه بدهم
ممنون میشم
فرستنده:
$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
Print "start"
Config Int0 = Low Level
Config Portc = Input
Config Portd.2 = Input
Config Portb.0 = Output
Config Portd.4 = Output
Enable Int0
Enable Interrupts
On Int0 Int0_isr
Print "power down"
Dim B As Byte , A As String * 5 , D As Byte
Do
Reset Portd.4
Powerdown
Print "return from power down"
Loop
End
Int0_isr:
Set Portd.4
B = Pinc
A = Str(b)
For D = 1 To 10
Print "hoss" ; A ; Chr(13);
Waitms 50
Next
Return
End
۰۹-بهمن-۱۳۹۱, ۱۶:۵۰:۰۹
ارسال‌ها
پاسخ
omid_phoenix آفلاین
مدیر بخش
*****

ارسال‌ها: 2,238
موضوع‌ها: 108
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 12682
( 15433 تشکر در 4574 ارسال )
ارسال: #2
RE: مشكل در برنامه sleep
مهندس من تا به حال دستور powerdown تو بیسیک ندیدم!!
میخوای با این دستور چیکار کنی؟ کار کلی برنامه چیه؟

۰۹-بهمن-۱۳۹۱, ۱۷:۱۱:۲۷
ارسال‌ها
پاسخ
تشکر شده توسط : WhiteNoise
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #3
RE: مشكل در برنامه sleep
نحوه ي استفاده اش درست هست ، چه اتفاقي مي يفته كه مي گيد كار نمي كنه؟
البته شما يه label مثلا به نام main هم اول تنه ي اصلي برنامه اتون بذاريد.
تا اونجايي كه يادمه موقع wake up از همون lablel اول برنامه دوبارهه شروع مي كنه ...
من براي mega32 استفاده كردم ، اما براي 8 نه ، توي ديتاشيت چك كنيد ببينيد مود هاي sleep براي atmega8 چيا هستن ...

مورد ديگه اينكه توسط اينتراپت خارجي از مود sleep در مي ياد. ممكنه تا وارد مود sleep مي شيد ، بلافاصله بعدش يه اينتراپتي رخ مي دهه كه باعث بيدار شدن ميكرو مي شه!
اگر ارتباط بين ميكرو با PC يا ميكرو با ميكرو هست اين مورد رو چك كنيد.

اگر باز جواب نگرفتيد ، برنامه اتون رو خلاصه كنيد و يه تست بزنيد ببينيد وارد اين مود مي شه يا نه.
مثلا يه چشمك زن بسازيد و وسط برنامه از powerdown استفاده كنيد.
اگر باز جواب نداد مودهاي ديگه رو هم امتحان كنيد. lebel هم فراموش نشه!
مودهاي ديگه رو از توي help بسكام مي تونيد پيدا كنيد. همين powerdown رو سرچ كنيد بقيه اشون هم مي بينيد...

موفق باشيد.

۰۹-بهمن-۱۳۹۱, ۲۰:۲۵:۱۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hossein6355
hossein6355 آفلاین
تازه وارد

ارسال‌ها: 13
موضوع‌ها: 5
تاریخ عضویت: بهمن ۱۳۹۰

تشکرها : 2
( 0 تشکر در 0 ارسال )
ارسال: #4
RE: مشكل در برنامه sleep
ارتباط بین دو ماژول مخابراتی است.مگه اینطوری نباید باشه که وقتی وارد مد sleep میشه باید ولتاژ میکرو که 5 ولت است پایین(0) آید؟اگه درسته این طوری نمیشه/
label رو اضافه کردم.درسته؟
$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
Print "start"
Config Int0 = Low Level
Config Portc = Input
Config Portd.2 = Input
Config Portb.0 = Output
Config Portd.4 = Output
On Int0 Int0_isr
Enable Interrupts
Enable Int0
Print "power save"
Dim B As Byte , A As String * 5 , D As Byte
Main:
Do
Reset Portd.4
Powersave
Loop
End
Int0_isr:
Set Portd.4
B = Pinc
A = Str(b)
For D = 1 To 10
Print "hoss" ; A ; Chr(13);
Waitms 50
Next
Return
End
ممكنه حرف شما صحیح باشه که تا وارد مود sleep مي شه ، بلافاصله بعدش يه اينتراپتي رخ مي دهد كه باعث بيدار شدن ميكرو مي شه/
به نظرتون باید چه تغییری در برنامم بدم
ممنون میشم راهنمایی بفرمایید
(آخرین ویرایش در این ارسال: ۰۹-بهمن-۱۳۹۱, ۲۰:۴۵:۵۴، توسط hossein6355.)
۰۹-بهمن-۱۳۹۱, ۲۰:۴۱:۰۹
ارسال‌ها
پاسخ
sharin آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 2,053
موضوع‌ها: 28
تاریخ عضویت: مرداد ۱۳۸۹

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #5
RE: مشكل در برنامه sleep
نقل قول: مهندس من تا به حال دستور 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 گيرنده مي انداخت و اينطوري گيرنده روشن مي شد و اطلاعات رو مي گرفت.

با توجه به اين توضيحات اميدوارم ايده هاي كافي رو براي اصلاح پيدا كرده باشيد ، چون شما بهتر بالا و پايين پروژه اتون رو مي دونيد.

باز موردي بود ، بگيد دوستان كمكتون مي كنن.

موفق باشيد.

۰۹-بهمن-۱۳۹۱, ۲۱:۱۶:۵۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hossein6355
hossein6355 آفلاین
تازه وارد

ارسال‌ها: 13
موضوع‌ها: 5
تاریخ عضویت: بهمن ۱۳۹۰

تشکرها : 2
( 0 تشکر در 0 ارسال )
ارسال: #6
RE: مشكل در برنامه sleep
ممنون از راهنمایی کاملتون.
من مدsleep رو به خاطر این میخواستم استفاده کنم چون از باطری(3.3) برای تغذیه میکرو و ماژول استفاده می کنم میخواستم که تا هر وقت کلید را برای ارسال اطلاعات نزده ام میکرو برود به حالت sleep تا صرفه جویی بشه در توان مصرفی مدار(شارژ باطری الکی استفاده نشه که زود تموم بشه)
ممنون میشم اگر راهنمایی بفرمایید
(آخرین ویرایش در این ارسال: ۰۹-بهمن-۱۳۹۱, ۲۱:۳۳:۴۴، توسط hossein6355.)
۰۹-بهمن-۱۳۹۱, ۲۱:۳۳:۰۵
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  مشكل در برنامه sleep hossein6355 6 3,043 ۲۰-بهمن-۱۳۹۰, ۲۲:۲۳:۱۱
آخرین ارسال: hossein6355

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 3 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS