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

ارسال‌ها: 143
موضوع‌ها: 62
تاریخ عضویت: مرداد ۱۳۹۰

تشکرها : 108
( 101 تشکر در 52 ارسال )
ارسال: #1
نیازمند به یک دستور در بسکام
سلام
یه برنامه برای سنسور رطوبت سنج دارم که وقتی سنسور رو قطع میکنم کل برنامه متوقف میشه که در نهایت منجر به از کار افتادی کل مدار میشه دلیلش هم بخاطر استفاده از دستور (BIT WAIT) هست .برنامه از این قرار هست که ؛؛ پینی که سنسور بهش متصل هست توسط دستور BIT WAIT چک میشه .حالا اگر سنسور رو قطع کنم دستور BIT پالسی دریافت نمیکنه بنابراین برنامه متوقف میشه .

حالا من نیاز به یه دستور دارم که اگر سنسور رو قطع کردم برنامه روال عادی رو طی کنه و متوقف نشه که بخاد کل مدار از کار بیافته .ممنون میشم دوستان در این زمینه راهنمایی بفرمایند.

اینم برنامه


کد:
Declare Sub Read_timings
Declare Sub Humtemp_values
Declare Function Compare_chksum(byval Hsens_humidity As Word , Byval Hsens_temperature As Word , Byval Hsens_chksum As Byte) As Byte


Do
Led = 1
Call Humtemp_values

If Compare_chksum(humidityw , Temperaturew , Humsens_chksum) = 1 Then

Humiditys = Str(humidityw)
Temperatures = Str(temperaturew)

Strstring = "H:" + Format(humiditys , "0.0" )
'Strstring = Humiditys
Locate 1 , 9
Lcd Strstring

Strstring = "T:" + Format(temperatures , "0.0")
'Strstring = Temperatures
Locate 2 , 9
Lcd Strstring

Else
Strstring = "***ERROR***"
Cls
Locate 1 , 7
Lcd Strstring
End If
Waitms 100
Led = 0
Wait 1
Loop
End


Sub Read_timings
   Count = 1
   Config Pind.4 = Output : Portd.4 = 0
   Waitms 20
   Config Pind.4 = Input
   While Count < 43
      Bitwait Pind.4 , Set
      Start Timer0
      Bitwait Pind.4 , Reset
      Stop Timer0
      Signaltime(count) = Tcnt0
      Tcnt0 = 0
      Incr Count

  Wend

End Sub

Sub Humtemp_values

   Local X As Byte

   Humidityw = 0
   Temperaturew = 0
   Humsens_chksum = 0

   Call Read_timings

   For Count = 3 To 42

      Select Case Count

         Case 3 To 18
            X = 18 - Count
            If Signaltime(count) > Min_time Then Toggle Humidityw.x

         Case 19 To 34
            X = 34 - Count
            If Signaltime(count) > Min_time Then Toggle Temperaturew.x

         Case 34 To 42
            X = 42 - Count
            If Signaltime(count) > Min_time Then Toggle Humsens_chksum.x

      End Select
  Next
End Sub


Function Compare_chksum(byval Hsens_humidity As Word , Byval Hsens_temperature As Word , Byval Hsens_chksum As Byte) As Byte

Local Chksum As Byte

Chksum = Low(hsens_humidity ) + High(hsens_humidity )
Chksum = Chksum + Low(hsens_temperature)
Chksum = Chksum + High(hsens_temperature)

If Chksum = Hsens_chksum Then
Compare_chksum = 1
Else
Compare_chksum = 0
End If

End Function
(آخرین ویرایش در این ارسال: ۰۳-تير-۱۳۹۲, ۱۲:۱۸:۱۹، توسط علیدلی.)
۰۳-تير-۱۳۹۲, ۱۲:۱۴:۰۳
ارسال‌ها
پاسخ
تشکر شده توسط : nazaninf25
Ambassador آفلاین
مدیر بخش موبایل
*****

ارسال‌ها: 1,324
موضوع‌ها: 79
تاریخ عضویت: شهریور ۱۳۹۰

تشکرها : 30371
( 9873 تشکر در 3843 ارسال )
ارسال: #2
RE: نیازمند به یک دستور در بسکام
سلام

تا اونجایی من متوجه شدم برنامه میاد اینجا و منتظر میمونه تا پالس دریافت کنه و count رو اضافه کنه،
کد:
While Count < 43
      Bitwait Pind.4 , Set
      Start Timer0
      Bitwait Pind.4 , Reset
      Stop Timer0
      Signaltime(count) = Tcnt0
      Tcnt0 = 0
      Incr Count

  Wend
حالا اگه سنسور وصل نباشه پس پالسی نمیگیره و count افزایش نداره، در نتیجه توحلقه میمونه.

یه کاری که میشه کرد سخت افزاریه، شما بیاین همراه با سنسور یک از پایه های میکرو رو بعنوان ورودی تعریف کنید ، مثلاً اگه سنسور وصله اون پایه هم 1 هست و حالا وارد حلقه میشه، و اگر سنسور وصل نبود اون پایه هم 0 هست پس وارد حلقه نمیشه.lمثلاً pinb.3

کد:
While Count < 43 And pinb.3=1
      Bitwait Pind.4 , Set
      Start Timer0
      Bitwait Pind.4 , Reset
      Stop Timer0
      Signaltime(count) = Tcnt0
      Tcnt0 = 0
      Incr Count

  Wend
حالا باز دوستان میان بیشتر اطلاعات میدن...

START...

(آخرین ویرایش در این ارسال: ۰۳-تير-۱۳۹۲, ۱۲:۴۶:۱۷، توسط Ambassador.)
۰۳-تير-۱۳۹۲, ۱۲:۴۴:۳۹
ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, babyy, علیدلی, behzady, nazaninf25
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13641
( 14739 تشکر در 4686 ارسال )
ارسال: #3
RE: نیازمند به یک دستور در بسکام
سلام با دستور DEBOUNCE پایه رو چک کنین
البته از if هم می تونین استفاده کنین
آموزش هم توی سایت هست یکم بگردین پیدا می کنین

۰۳-تير-۱۳۹۲, ۱۲:۴۵:۵۲
ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador, babyy, علیدلی, behzady
mhpc2009 آفلاین
كاربر دو ستاره
**

ارسال‌ها: 206
موضوع‌ها: 29
تاریخ عضویت: مهر ۱۳۸۹

تشکرها : 801
( 579 تشکر در 198 ارسال )
ارسال: #4
RE: نیازمند به یک دستور در بسکام
سلام دوست عزیز اگر از دستورات وقفه یا interupt استفاده کنی و سنسور رو به یکی از پین های میکرو با نام int0 یا int1 وصل کنی مشکلی که ذکر کردید بوجود نمی یاد چون در برنامه نویسی بر اساس وقفه برنامه کار خودشو انجام می ده وقتی وقفه ای رخ بده برنامه به توابعی که برای وقفه تعریف کردیم پرش می کنه وبعد از اتمام کار به همون نقطه قبلی برنامه بر می گرده
۰۳-تير-۱۳۹۲, ۱۳:۳۵:۱۱
ارسال‌ها
پاسخ
تشکر شده توسط : Ambassador, hadikh73, omid_phoenix, babyy, علیدلی, kimiafars, behzady
علیدلی آفلاین
كاربر دو ستاره
**

ارسال‌ها: 143
موضوع‌ها: 62
تاریخ عضویت: مرداد ۱۳۹۰

تشکرها : 108
( 101 تشکر در 52 ارسال )
ارسال: #5
RE: نیازمند به یک دستور در بسکام
نقل قول: سلام دوست عزیز اگر از دستورات وقفه یا interupt استفاده کنی و سنسور رو به یکی از پین های میکرو با نام int0 یا int1 وصل کنی مشکلی که ذکر کردید بوجود نمی یاد چون در برنامه نویسی بر اساس وقفه برنامه کار خودشو انجام می ده وقتی وقفه ای رخ بده برنامه به توابعی که برای وقفه تعریف کردیم پرش می کنه وبعد از اتمام کار به همون نقطه قبلی برنامه بر می گرده
سلام
بدلیل اینکه از چند تا سنسور استفاده میکنم نمیتونم از interupt و پین های مربوطه استفاده کنم
۰۳-تير-۱۳۹۲, ۱۷:۲۴:۰۸
ارسال‌ها
پاسخ
علیدلی آفلاین
كاربر دو ستاره
**

ارسال‌ها: 143
موضوع‌ها: 62
تاریخ عضویت: مرداد ۱۳۹۰

تشکرها : 108
( 101 تشکر در 52 ارسال )
ارسال: #6
RE: نیازمند به یک دستور در بسکام
نقل قول: سلام با دستور DEBOUNCE پایه رو چک کنین
البته از if هم می تونین استفاده کنین
آموزش هم توی سایت هست یکم بگردین پیدا می کنین
سلام
این دستور رو تست کردم جواب نداد ضمن اینکه باید کلیت برنامه هم تغییر داد .که حالشو ندارم .ممنون
۰۳-تير-۱۳۹۲, ۲۱:۰۹:۵۷
ارسال‌ها
پاسخ
kimiafars آفلاین
کاربر با تجربه
****

ارسال‌ها: 819
موضوع‌ها: 71
تاریخ عضویت: فروردین ۱۳۸۶

تشکرها : 663
( 1139 تشکر در 512 ارسال )
ارسال: #7
RE: نیازمند به یک دستور در بسکام
بهترین دستور استفاده از if هست ورودی رو بخون و داخل متغیر بریز بعد با if چک کن ببین اونی که میخوای هست یا نه اگه بود ادامه برنامه اگه نبود بره اونجایی که میخوای

تولید دیمر قناری و دستگاههای کنترل سالن هیدروپونیک و اکواپونیک(انبردست)anbordast.ir[url=anbordast.ir][/url]
۰۴-تير-۱۳۹۲, ۰۹:۴۲:۴۴
ارسال‌ها
پاسخ
تشکر شده توسط : babyy, hadikh73, Ambassador, omid_phoenix, علیدلی
علیدلی آفلاین
كاربر دو ستاره
**

ارسال‌ها: 143
موضوع‌ها: 62
تاریخ عضویت: مرداد ۱۳۹۰

تشکرها : 108
( 101 تشکر در 52 ارسال )
ارسال: #8
RE: نیازمند به یک دستور در بسکام
کد:
بهترین دستور استفاده از if هست ورودی رو بخون و داخل متغیر بریز بعد با if چک کن ببین اونی که میخوای هست یا نه اگه بود ادامه برنامه اگه نبود بره اونجایی که میخوای

سلام
من برنامه رو در اول تاپیک قرار دادم ممنون میشم همین نظرتون رو بهش اضافه کنید تا بهتر منظورتون رو متوجه بشیم .پیشاپیش از زحمات شما سپاسگذاری میکنم
(آخرین ویرایش در این ارسال: ۰۴-تير-۱۳۹۲, ۱۷:۳۲:۴۳، توسط علیدلی.)
۰۴-تير-۱۳۹۲, ۱۷:۳۱:۵۸
ارسال‌ها
پاسخ
behzady آفلاین
مدیر بازنشسته
*****

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

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #9
RE: نیازمند به یک دستور در بسکام
کلا یه زمان تایم اوت باید بزارید
یعنی مثلا بین هر پالس حداکثر ۱ ثانیه ممکن هست وقفه بیفته حالا شما یه تایمر رو رو این زمان می زاری
به محض اینکه میخوای وضعیت یک پین رو چک کنی تایمر رو صفر و فعال می کنی حالا بجای بیت ویت از یه while استفاده می کنی توش هم یه If میزاری که اگه تایم اوت اتفاق افتاد کلا از زیر برنامه بیاد بیرون و مشکل شما حل میشه
اگه کلا دیگه نباید اون سنسور چک بشه که با یه متغییر غیر فعالش کنید اگه نه اگه همین جوری باید بمونه دیگه
ولی حواستون باشه اگه زمان تایم اوت زیاد باشه برنامه زیادی معطل میشه

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

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

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

ارسال‌ها: 162
موضوع‌ها: 11
تاریخ عضویت: شهریور ۱۳۸۹

تشکرها : 125
( 463 تشکر در 142 ارسال )
ارسال: #10
RE: نیازمند به یک دستور در بسکام
سلام دوست گرامی
تا اونجایی که من تاپیک ها رو خوندم و از برنامه شما متوجه شدم ، قرار هست زمان بین یک(1) شدن تا صفر(0) شدن را اندازه گیری کنید .
خب این کار رو می تونی با دستور PULSEIN انجام بدی . هم می تونی زمان 1 و هم زمان صفر رو بسنجی
توضیح کاملش هم داخل help بسکام هست می تونی از اونجا یاد بگیری .

موفق باشی .....



در راه علم هیچ وقت نگید نمی تونیم ، همه چیز تونستنی هست و فقط کمی اراده میخواد ، که شما دارین .Cool


http://robo-elec.blogfa.com

۰۵-تير-۱۳۹۲, ۰۳:۱۸:۲۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : babyy, Ambassador, hadikh73, علیدلی, kimiafars


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  [سوال] خواندن داده های یک فایل روی هارد در برنامه بسکام Ambassador 1 739 ۲۸-تير-۱۳۹۹, ۱۶:۱۴:۱۴
آخرین ارسال: Ambassador
  مشکل با eeprom بسکام کمک sky_man847 2 4,380 ۱۲-مهر-۱۳۹۷, ۰۰:۴۷:۰۸
آخرین ارسال: lrn1380
  [سوال] کانتر در بسکام questnet 7 3,486 ۱۲-مرداد-۱۳۹۷, ۰۱:۵۵:۵۴
آخرین ارسال: questnet
  شمارش تعداد پالس های یک دستور؟ Ambassador 2 2,996 ۲۷-اردیبهشت-۱۳۹۶, ۱۶:۲۰:۵۶
آخرین ارسال: Ambassador
  مشکل در کار با تایمر 1 در بسکام klick 3 4,535 ۳۰-بهمن-۱۳۹۵, ۰۴:۰۴:۴۲
آخرین ارسال: omid_phoenix
  افکت کم نور و پر نور شدن تدریجی با بسکام؟ رسول21 19 18,305 ۲۱-بهمن-۱۳۹۵, ۱۴:۲۹:۴۲
آخرین ارسال: hadikh73
  راهنمایی برای حل مشکل برنامه در بسکام fedagh 2 3,420 ۱۲-دى-۱۳۹۵, ۱۸:۳۰:۵۹
آخرین ارسال: fedagh
Question [فوری] اتصال lcd گرافیکی به پایه های دلخواه میکرو در بسکام behzadsen 4 4,337 ۰۵-دى-۱۳۹۵, ۱۵:۲۵:۳۰
آخرین ارسال: behzadsen
  دستور delay_ms واقعی کار نمیکنه 67Sama 3 3,180 ۱۱-آبان-۱۳۹۵, ۰۰:۲۱:۳۷
آخرین ارسال: behzady
  ولتمتر با AVR و بسکام electroavr 163 141,219 ۰۹-شهریور-۱۳۹۵, ۰۹:۱۹:۲۴
آخرین ارسال: alimogmov

پرش به انجمن:


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

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