PDA

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



parham144
16-08-2012, 15:08
با سلام خدمت اساتيد محترم .من ميخوام دو پايه رو بصورت مداوم چک کنم مثلا با کانتر يا مثلا روش افزايش و کاهش مقدار متغيرر(incr,decr) يعني مثلا اگر پايه اول 10 بار صفر ميشه اين مقدار توي يک متغيير ريخته بشه و پايه ديگر هم همينطور چک بشه و اگر تعداد صفر شدن اين دو پايه برابر شد حالا يک کاري انجام بده. فقط ميخوام اين کار به صورت مداوم انجام بشه .ممنون ميشم در برنامه نويسيش با بسکام کمکم کنيد .

Ma3ood
16-08-2012, 16:06
اگه دو پایه میخوای د دقت و صحت کار واست مهمه از وقفه خارجی استفاده کن و مثلا هر باری که هرکدوم از وقفه ها اجرا شد مقدار را به متغییر اضافه کنه و......

parham144
16-08-2012, 16:22
اگه دو پایه میخوای د دقت و صحت کار واست مهمه از وقفه خارجی استفاده کن و مثلا هر باری که هرکدوم از وقفه ها اجرا شد مقدار را به متغییر اضافه کنه و......
با تشکر از شما . دقت برام مهمه .فقط میشه یک مثال بزنید که متوجه بشم چون زیاد وارد نیستم مخصوصا در مورد این وقفه ,تا اونجایی که میدونم میگیم یک جا برنامه وایسته و بپره روی یک برچسب ولی دیگه چجوریشو درست نمیدونم .ممنون

Ma3ood
16-08-2012, 18:48
با تشکر از شما . دقت برام مهمه .فقط میشه یک مثال بزنید که متوجه بشم چون زیاد وارد نیستم مخصوصا در مورد این وقفه ,تا اونجایی که میدونم میگیم یک جا برنامه وایسته و بپره روی یک برچسب ولی دیگه چجوریشو درست نمیدونم .ممنون

با کدوم کامپایلر کار میکنید؟

parham144
17-08-2012, 01:33
با بسکام کار میکنم . ازتون ممنون میشم یک برنامه ساده برای شمردن و مقایسه تعداد یک شدن یا صفر شدن دو پایه و ریختن این مقادیر و مقایسه آنها با هم ,حالا با هر روشی که سلاح میدونید و دقتش بیشتر هست برام بنویسد واقعا احتیاج دارم. ممنون .

agape
17-08-2012, 01:52
خوب دایی جان دو تا راه داری اول استفاده از وقفه هست ، که مثلا یه ورودی رو به یه وقفه و اون یکی رو تو یه وقفه دیگه میزاری و جوری تنظیم میکنی وقفه ها رو که مثلا با لبه پلیین رونده تریگر بشه ، حالا تو زیبر روال وقفه میآی و مدام مقدار یه متغیر رو افزایش میدی و همونجا با متغییر دیگه که اونم تو یه زیر روال وقفه مقدارش افزایش پیدا میکنه مقایسه میکنی و حالا بسته به شرط عکس العمل مورد نظرت رو انجام میدی !
راه دوم هم استفاده از تایمر کانتر هست که اونو تو مد کانتر قرار میدی و پایه خارجی رو برای تریگر فعال میکنی
که البته رو همه میکرو ها نمیتونی این کار رو انجام بدی چرا که همه از بیرون تریگر نمی شن ولی وقفه پیشنهاد خوبی هست

parham144
17-08-2012, 02:04
خوب دایی جان دو تا راه داری اول استفاده از وقفه هست ، که مثلا یه ورودی رو به یه وقفه و اون یکی رو تو یه وقفه دیگه میزاری و جوری تنظیم میکنی وقفه ها رو که مثلا با لبه پلیین رونده تریگر بشه ، حالا تو زیبر روال وقفه میآی و مدام مقدار یه متغیر رو افزایش میدی و همونجا با متغییر دیگه که اونم تو یه زیر روال وقفه مقدارش افزایش پیدا میکنه مقایسه میکنی و حالا بسته به شرط عکس العمل مورد نظرت رو انجام میدی !
راه دوم هم استفاده از تایمر کانتر هست که اونو تو مد کانتر قرار میدی و پایه خارجی رو برای تریگر فعال میکنی
که البته رو همه میکرو ها نمیتونی این کار رو انجام بدی چرا که همه از بیرون تریگر نمی شن ولی وقفه پیشنهاد خوبی هست

با تشکر ازشما. فقط چند نکته

یکی اینکه منظورتون از افزایش همین incr هست ؟ و دیگه اینکه راستش زیاد وارد نیستم میشه یک مثال ساده از همین روشی که توضیح دادید بزند.

در مورد کانتر هم منظورتون از پایه خارجی همون پایه t0 و t1 هست؟ اینا روی atmega 8 ,16 ,32 هستن دیگه؟ و دیگه اینکه چون میخام مدار 24 ساعت کار کنه دقت برام مهمه کدوم یکی از این روشها بهتره بنظرتون . فقط خواهش میکنم مثال با برنامه هم بزنید که بهتر جا بیافته .خیلی ممنون دایی جان :)

Ma3ood
17-08-2012, 02:26
راستش شرمنده من میتونم همین برنامه را واستون به زبان سی قرار بدم ولی کلا بسکام کار نمی کنم :wink: