امتیاز موضوع:
  • 2 رأی - میانگین امتیازات: 1.5
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده از مد sleep
نویسنده پیام
parsegade آفلاین
در حال پیشرفت
***

ارسال‌ها: 251
موضوع‌ها: 47
تاریخ عضویت: آبان ۱۳۸۸

تشکرها : 162
( 62 تشکر در 44 ارسال )
ارسال: #1
استفاده از مد sleep
سلام.میخوام بدونم چطور در طول برنام میشه از مد sleep استفاده کرد.فرض کنید من یه برنامه دارم حالا میخوام قبل از یه دستور مد sleep رو فعال کنم و بعد از اجرای اون خط از دستور دوباره از حالت sleep خارج بشم
۲۰-تير-۱۳۹۳, ۱۰:۱۸:۰۲
ارسال‌ها
پاسخ
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #2
RE: استفاده از مد sleep
در مود sleep هیچ دستوری اجرا نمی شه و با وقفه های مشخصی برنامه از sleep خارج میشه و شروع می کنه به ادامه ی کار
توی بسکام کافیه دستور sleep رو توی هلپش سرچ کنی و برای دستور های C باید توی دستاشیت نمونه برنامه هاش رو ببینی

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
۲۰-تير-۱۳۹۳, ۱۰:۵۶:۳۰
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : parsegade, babyy
parsegade آفلاین
در حال پیشرفت
***

ارسال‌ها: 251
موضوع‌ها: 47
تاریخ عضویت: آبان ۱۳۸۸

تشکرها : 162
( 62 تشکر در 44 ارسال )
ارسال: #3
RE: استفاده از مد sleep
ممنون.راستش میخوام دمای یک دستگاه رو (البته خیلی حساسه)با سنسور اندازه بگیرم.حالا میخوام زمانی که نمونه برداری ولتاژ میکنم سایر برنامه ها غیر فعال بشن(مد pwm هم نو برناه فعاله.واسه راه اندازی یه موتور)تو help سرچ کردم چیز خاصی ندیدم.راستی باید فیوزبیتها رو هم دستکاری کنم؟
۲۰-تير-۱۳۹۳, ۱۱:۰۳:۲۳
ارسال‌ها
پاسخ
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #4
RE: استفاده از مد sleep
کاری به فیوزبیت ها نداره
---
برای این کار شما دقیقا بعد از دستور getadc دستور idle رو بزار
البته قبلش وقفه adc رو فعال کن و توی تابعش فقط return بزار
البته برای استفاده از خود مود adcnoise باید با ریجیستر ها کار کنی و خود بسکام نمی تونه کاری بکنه
ولی این کاری که من گفتم رو بکنی خیلی تفاوتی ایجاد نمی کنه

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
۲۱-تير-۱۳۹۳, ۰۱:۰۰:۰۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : helma, babyy, kelaran, parsegade
parsegade آفلاین
در حال پیشرفت
***

ارسال‌ها: 251
موضوع‌ها: 47
تاریخ عضویت: آبان ۱۳۸۸

تشکرها : 162
( 62 تشکر در 44 ارسال )
ارسال: #5
RE: استفاده از مد sleep
پس باید رو ریجسترها کار کنم؟حالا اگه بخوام با c این کار رو انجام بدم چی؟بازم مثل بسکام داستان در میاره؟

یکم در مورد ریجسترها توضیح کوچولو میدی؟
(آخرین ویرایش در این ارسال: ۲۱-تير-۱۳۹۳, ۲۰:۴۷:۰۷، توسط parsegade.)
۲۱-تير-۱۳۹۳, ۲۰:۴۶:۰۰
ارسال‌ها
پاسخ
behzady آفلاین
مدیر بازنشسته
*****

ارسال‌ها: 1,169
موضوع‌ها: 57
تاریخ عضویت: آبان ۱۳۹۰

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #6
RE: استفاده از مد sleep
اگه برنامتو نوشتی با IDLE یه تستی بزن ببین چطوریه
اما اگه نه می تونی بجای دستورات بسکام از ریجیستر ها استفاده کنی
اگه کلا می خوای با C هم می تونی بنویسی
برای C از کدویژن استفاده کن دیگه کدو بهت میده شما فقط استفاده کنBiggrin
---------------
ریجیستر ها
کد:
ADMUX – ADC Multiplexer Selection Register
کد:
1-Bit 7:6 – REFS1:0: Reference Selection Bits
اینا مشخص می کنن که مرجع ADC چی باشه
0 -> AREF
1 -> AVCC
3 -> 2.56 داخلی
که چون باید 2 بیت آخر این ریجیستر باشن باید 6 بیت به چپ شیفت داده بشن یعنی تبدیل میشن به
0 و 64 و 192
کد:
2-Bit 5 – ADLAR: ADC Left Adjust Result
اگه اینو یک کنی طرز قرار گیری داده ها در ریجیستر هایی که نتایج ADC رو نشون میدن برعکس میشه
بیشتر مال موقعی هست که 8 بیتی از ADC استفاده می شه و در نتیجه فقط یک ریجیستر خونده بشه
شما اینو صفر بزار برای اطلاع بیشتر به دیتاشیت مراجعه کن مثال زده
کد:
3-Bits 4:0 – MUX4:0: Analog Channel and Gain Selection Bits
این پایه اندازگری و یا گین رو در مود Diff مشخص می کنه
که شما در مود معمولی داری از ADC استفاده می کنی
کلا 0 بدی پایه صفر 1 بدی پایه 1 و ... 7 بدی پایه هفتم رو اندازه گیری می کنه
۰
پس کلا این ریجیستر 3 نوع چیزو کنترل می کرد دومی که صفر شد اولی رو که انتخاب کردی باید توی یه متغییر ذخیرش بکنی
بعد با شماره پایه ای که می خوای اندازگیری کنی جمع کنی و به این ریجیستر بدی
مثلا اگه پایه 3 رو میخوای اندازه بگیری و مرجع هم AVCC هست پس میشه
کد:
ADMUX = 64 + 3
----
کد:
ADCSRA – ADC Control and Status Register A
کد:
1-Bit 7 – ADEN: ADC Enable
این بیت که 1 بشه ADC فعال میشه
(مثل start adc توی بسکام)
کد:
2-Bit 6 – ADSC: ADC Start Conversion
این بیت که یک بشه شروع به اندازه گیری می کنه
کد:
3- Bit 5 – ADATE: ADC Auto Trigger Enable
این مال وقتی هست که ADC قرار هست خودکار اجرا بشه کاری بهش نداریم برای اطلاع بیشتر به دیتاشیت مراجعه کنید
کد:
4-Bit 4 – ADIF: ADC Interrupt Flag
این مشخص می کنه که اینتراپت ADC رخ داده و داده های جدید بدست اومدن وقتی بردار وقفه اجرا بشه این بیت صفر می شه
کد:
5-Bit 3 – ADIE: ADC Interrupt Enable
وقتی این بیت یک بشه وقفه ADC فعال میشه
کد:
Bits 2:0 – ADPS2:0: ADC Prescaler Select Bits
این بیت ها کلاک ADC رو تعیین می کنن
2 به توان مقدار این ریجیستر تقسیم میشه بر کلاک اصلی و تبدیل میشه به کلاک ADC
مثلا اگه 16 مگا هرتز باشه کلاک اصلی و این بیت ها برابر 4 باشن
2 به توان 4 میشه 16
16 مگا تقسیم بر 16 میشه 1 مگا
پس ADC با سرعت 1 مگاهتز اجرا میشه
کد:
ADCL and ADCH – The ADC Data Register
این دوتا ریجیستر هم داده های ADC رو ذخیره می کنن
کد:
SFIOR – Special FunctionIO Register
این رجیستر هم کاربری برای ما نداره برای اطلاعات بیشتر به دیتاشیت
توی C که براش کلی مثال هست اما اگه می خوای توی بسکام از اینا استفاده کنی یه مثال برات می نویسم
کد:
$regfile = "m8def.dat"
$crystal = 16000000
Const Adc_ref = &H40                                        'AVCC
Enable Interrupts
On Adc Adc_isr
Dim Adc_val As Word
Admux = Adc_ref                                             'set Ref
Adcsra = &H8F                                               'set clock 125KHz - enable adc - enable adc int
Do
Admux = Adc_ref + 3                                         'get adc3
Waitus 10                                                   'wait to stable input
Adcsra = Adcsra Or &H40                                     'start convert
Config Powermode = Adcnoise
'adc_val ready
Loop
End
Adc_isr:
Dim T As Word
Adc_val = Adcl
T = Adch
Shift T , Left , 8
Adc_val = Adc_val + T
Return

به همه عشق بورز، به معدودی اعتماد کن و در حق کسی بدی نکن.
ویلیام شکسپیر

نباید ایمان به انسانیت را از دست دهید. انسانیت یک اقیانوس است؛ اگر قطرات اندکی از اقیانوس کثیف است، اقیانوس کثیف نمی‌شود.
مهاتما گاندی

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
۲۲-تير-۱۳۹۳, ۰۹:۰۵:۵۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, parsegade


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  سوال در مورد مدهای میکرو.sleep،powerdown علیدلی 4 6,599 ۱۵-خرداد-۱۳۹۱, ۰۰:۰۲:۳۱
آخرین ارسال: sharin
  مشكل در برنامه sleep hossein6355 0 1,438 ۱۹-بهمن-۱۳۹۰, ۲۰:۰۵:۱۹
آخرین ارسال: hossein6355

پرش به انجمن:


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

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