امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 1
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در INT 0
نویسنده پیام
a.mehran آفلاین
مدیر بخش
*****

ارسال‌ها: 1,029
موضوع‌ها: 93
تاریخ عضویت: فروردین ۱۳۹۲

تشکرها : 5125
( 4490 تشکر در 1882 ارسال )
ارسال: #12
RE: مشکل در INT 0
بایدم حل میشد چون مدارت اشتباه بود :d

silent people have the loudest minds شادی − بهینه شده برای ورژن جدید شادی − بهینه شده برای ورژن جدید
سایت من Abrdade.com
۱۴-آبان-۱۳۹۳, ۲۰:۱۰:۲۸
ارسال‌ها
پاسخ
تشکر شده توسط : hosseinip
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #13
RE: مشکل در INT 0
کد php:
#include <mega32.h>
#include <delay.h>
#include <stdio.h>
#include <alcd.h>

unsigned char i d[20];

interrupt [EXT_INT0void ext_int0_isr(void)
{
    
i++;
    
sprintf(d,"value=%d",i);
    
lcd_gotoxy(0,0);
    
lcd_puts(d);
}

void main(void)
{
    
GICR|=0x40;
    
MCUCR=0x02;
    
MCUCSR=0x00;
    
GIFR=0x40;
    
#asm("sei")


سوال یک:
برنامه بالا کار میکنه الان یا چون while رو حذف کردم اجراش زود به پایان میرسه؟
۱۵-آبان-۱۳۹۳, ۱۳:۲۹:۰۲
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : a.mehran, hosseinip
sharin آفلاین
مدیر بازنشسته
*****

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

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #14
RE: مشکل در INT 0
چون while رو حذف کردی می رسه به END و میکرو دیگه کار نمی کنه.
البته عملا تست نکردم ، اما قاعدتا همینطورهه Biggrin

۱۵-آبان-۱۳۹۳, ۲۲:۱۷:۲۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : a.mehran, babyy, Ambassador, hosseinip
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #15
RE: مشکل در INT 0
(۱۵-آبان-۱۳۹۳, ۲۲:۱۷:۲۶)sharin نوشته است: چون while رو حذف کردی می رسه به END و میکرو دیگه کار نمی کنه.
البته عملا تست نکردم ، اما قاعدتا همینطورهه Biggrin

خب اینطوری هم که درست نیست توی یه حلقه بی نهایت برنامه رو اجرا کنیم!! اصلا بهینه نیست!
راه حل پیشنهادی چیست؟
۱۵-آبان-۱۳۹۳, ۲۳:۲۵:۴۷
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hosseinip
Ambassador آفلاین
مدیر بخش موبایل
*****

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

تشکرها : 30371
( 9873 تشکر در 3843 ارسال )
ارسال: #16
RE: مشکل در INT 0
سلام

چه راه حل پیشنهادی !
ابن که نرم افزاریه وقتی سخت افزاری هم کد میزنیم با هرسیکل یه سری دستورات اجرا میشن.کل سخت افزار هم همینه. همش تکراره

START...

۱۵-آبان-۱۳۹۳, ۲۳:۴۸:۲۶
ارسال‌ها
پاسخ
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #17
RE: مشکل در INT 0
(۱۵-آبان-۱۳۹۳, ۲۳:۴۸:۲۶)Ambassador نوشته است: چه راه حل پیشنهادی !
ابن که نرم افزاریه وقتی سخت افزاری هم کد میزنیم با هرسیکل یه سری دستورات اجرا میشن.کل سخت افزار هم همینه. همش تکراره

اینکه سخت افزار تکرار میشه وظیفه سخت افزاره که همین کارو کنه!

ولی توی نرم افزار اینکه کلا از حلقه بی نهایت استفاده بشه واسه اینکه برkامه به انتها نرسه فکر نمیکنم درست باشه ها!!
اگه قرار بود توی نرم افزار هم مدام یه سری دستورات اجرا بشن که وقفه‌ها رو ایجاد نمیکردند!
۱۶-آبان-۱۳۹۳, ۰۰:۰۰:۲۲
وب سایت ارسال‌ها
پاسخ
behzady آفلاین
مدیر بازنشسته
*****

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

تشکرها : 4094
( 6339 تشکر در 2085 ارسال )
ارسال: #18
RE: مشکل در INT 0
حقیقت امر اینه که وقتی میکرو به END میرسه باز هم فعاله ولی شرایطش قابل پیش بینی نیست بستگی به کامپایلر داره
ولی اصول اینه که وقفه هنوز کار کنه
اما حلقه بینهایت رو چرا میزارن؟ چون وقتی برنامه به END میرسه همینطوری که گفتم عملکردش قابل پیشبینی نیست و ممکن هست هر کاری بکنه و شاید ادامه Flash رو بخونه که اطلاعات درستی توش نیست برای همین حلقه رو میزارن که هیچ وقت به اون جا نرسه
(مثلا بیسکام این رو خودش اجرا می کنه یعنی دستور END درواقع یه حلقه هست!)
اما در مورد بهینه بودن
باید بگم این مورد توی avr صادق نیست
توی cpu یا دیگر دستگاه ها وقتی چیزی برای پردازش نباشه Thread ها و core ها غیر فعال میشن و یکی از thread ها می مونه که اونم تا حد امکان فرکانس کاریش پایین میاد
برای همین مصرف کم میشه
اما توی AVR اینطوری نیست سرعت عوض نمیشه و همواره درحال پردازش هست حتی اون موقعی که هیچ برنامه ای نیست!!! درواقع داره از flash دستور هیچی رو میگیره و همواره
اجرا می کنه برای همین هست که وجود و یا عدم وجود حلقه تاثیری در بهینه بودن برنامه نداره
(میدونم که بد توضیح دادم:d)

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

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

يَا أَيُّهَا الَّذِينَ آمَنُواْ اسْتَعِينُواْ بِالصَّبْرِ وَالصَّلاَةِ إِنَّ اللّهَ مَعَ الصَّابِرِينَ
۱۶-آبان-۱۳۹۳, ۰۱:۴۸:۰۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : رسول, Ambassador, a.mehran, hosseinip, babyy
hosseinip آفلاین
كاربر دو ستاره
**

ارسال‌ها: 107
موضوع‌ها: 27
تاریخ عضویت: مهر ۱۳۹۳

تشکرها : 105
( 40 تشکر در 15 ارسال )
ارسال: #19
RE: مشکل در INT 0
منم با نظر شما موافقم حقیقتن همین طوری که گفتید وقتی میکرو به END میرسه باز هم فعاله ولی شرایطش قابل پیش بینی نیست
خیلی خوب توضیح دادید.

"... the quieter you become the more you are able hear "
(آخرین ویرایش در این ارسال: ۱۶-آبان-۱۳۹۳, ۱۹:۲۶:۳۲، توسط hosseinip.)
۱۶-آبان-۱۳۹۳, ۱۹:۲۵:۰۰
ارسال‌ها
پاسخ
تشکر شده توسط : a.mehran, Ambassador, babyy


پرش به انجمن:


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

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