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

ارسال‌ها: 47
موضوع‌ها: 16
تاریخ عضویت: تير ۱۳۹۰

تشکرها : 35
( 10 تشکر در 7 ارسال )
ارسال: #1
مشکل در AVR
با سلام
می خوام با AVR در کدویژن برنامه ای بنویسم که بایکبار فشار شاسی سیستم روشن وبا نگه داشتن آن خاموش بشه. لطفا راهنمایی کنید.
یه سوال دیگه اگه یه برنامه طولانی داشته باشیم وقتی سوییچ می کنیم برنامه باید تا آخر بره وبعد سوییچ می کنه می خواستم بدونم راهی هست که بمحض سوییچ برنامه متوقف بشه؟
ممنون
۲۱-تير-۱۳۹۰, ۰۹:۲۳:۰۰
ارسال‌ها
پاسخ
saeidjan آفلاین
كاربر دو ستاره
**

ارسال‌ها: 155
موضوع‌ها: 20
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 117
( 164 تشکر در 77 ارسال )
ارسال: #2
RE: مشکل در AVR
سلام
سیستمی که در ابتدا خاموش به نظر خودت میتونه چیزی رو کنترل کنه؟
مگر اینکه سیستم روشن باشه اما در حالت خواب یا همون WatchDog یا سگ نگهبان
بعد از فعال کردن این امکان به محض فشار یک کلید یا هر تحریک دیگه میکرو روشن میشه اگر کلید هنوز فشرده شده باشه، یه تایمر رو شرو به شمردن میکن و مثلا وقتی رسید به عدد 250 اگر کلید همچنان فشرده شده باشه از برنامه خارج میشه. چطور؟ در ادامه بخون
معمولا برنامه های میکرو در یک حلقه بی انتها قرار دارند که میتونی برای do loop یک شرط بزاری و یا به ازای فشار یک سوئیچ از دستور Exit Do استفاده کنی.
البته من به زبان شیرین بسکام نوشتم زحمت معادل سازی به زبان C با خودته.

دانشمندان امروز دانش آموزان دیروز بودند.
به امید این که فردا دانشمند باشم.
۲۱-تير-۱۳۹۰, ۱۲:۳۴:۰۱
ارسال‌ها
پاسخ
تشکر شده توسط : sheitunak, mhpc2009, رسول
alfaalarm آفلاین
كاربر تک ستاره
*

ارسال‌ها: 47
موضوع‌ها: 16
تاریخ عضویت: تير ۱۳۹۰

تشکرها : 35
( 10 تشکر در 7 ارسال )
ارسال: #3
RE: مشکل در AVR
ببخشید . منظوره من از روشن شدن سیستم خروجی های میکرو بود. چون من تا ورودی 1را (به عنوان مثال) 1می کنم خروجی 1 می شه ولی بمحض اینکه ورودی 0 می شه خروجی هم 0 می شه .
۲۱-تير-۱۳۹۰, ۱۶:۳۰:۴۰
ارسال‌ها
پاسخ
saeidjan آفلاین
كاربر دو ستاره
**

ارسال‌ها: 155
موضوع‌ها: 20
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 117
( 164 تشکر در 77 ارسال )
ارسال: #4
RE: مشکل در AVR
سلام
یه کاری کن، سورس برنامه تو بزار ببین موضوع چیه. شاید بتونم خدمتی کنم.

دانشمندان امروز دانش آموزان دیروز بودند.
به امید این که فردا دانشمند باشم.
۲۲-تير-۱۳۹۰, ۰۰:۲۸:۵۷
ارسال‌ها
پاسخ
alfaalarm آفلاین
كاربر تک ستاره
*

ارسال‌ها: 47
موضوع‌ها: 16
تاریخ عضویت: تير ۱۳۹۰

تشکرها : 35
( 10 تشکر در 7 ارسال )
ارسال: #5
RE: مشکل در AVR
کد:
while(1)
{
if(PIND.0==1)
{
PORTA=0b1;
}
if(pinD.0==0)


{PORTA=0b0;

}

};

}
(آخرین ویرایش در این ارسال: ۲۲-تير-۱۳۹۰, ۲۲:۲۳:۱۹، توسط h0x00i.)
۲۲-تير-۱۳۹۰, ۱۹:۵۵:۳۸
ارسال‌ها
پاسخ
yma-313 آفلاین
تازه وارد

ارسال‌ها: 2
موضوع‌ها: 0
تاریخ عضویت: اسفند ۱۳۸۹

تشکرها : 2
( 0 تشکر در 0 ارسال )
ارسال: #6
RE: مشکل در AVR
سلام رفقا
من توی کدویژن به یه مشکلی بر خوردم
میکرو رو درست انتخاب میکنم اما هی این ارور رو میده:
chip signature mismatch
read:byte0=0xFF :byte1=0xFF:byte2=0xFF
must be byte0=0x1E:byte1=0x95:byte2=0x02

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

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

تشکرها : 3714
( 8171 تشکر در 2772 ارسال )
ارسال: #7
RE: مشکل در AVR
(۲۲-تير-۱۳۹۰, ۱۹:۵۵:۳۸)alfaalarm نوشته است:
کد:
while(1)
{
if(PIND.0==1)
{
PORTA=0b1;
}
if(pinD.0==0)


{PORTA=0b0;

}

};

}

سلام.

ببينيد ، بسته به فركانس كاري ميكرو ( مثلا 1MHZ ) اگر زمان اجرا شدن هر دستور رو به ازاي يك پالس كلاك بگيريم ، در هر ثانيه 1 ميليون دستور اجرا مي شه ...
برنامه هم دست كم چند هزار بار ...
با برنامه اي كه نوشتيد ، مشخصا هر وقت ورودي رو 0 كنيد شرط برقرار هست و هر وقت ورودي رو 1 كنيد ، شرط ديگري برقرار است و اين شرط ها لحظه اي چك مي شوند ... .
خوب حالا شما هر چقدر شاسي رو سري فشار بديد و رها كنيد ، در اين مدت چندين بار ورودي چك شده و لحظه ي تعيين كننده ، لحظه ي آخر هست كه دستتون رو بر مي داريد ...( يعني يه حالت تصادفي پيش مي ياد )
به همين جهت در بسكام از دستور debounce براي ايجاد كمي تاخير استفاده مي شه .
شما هم در codvision بايد بعد از شرط if حدود 100ms تاخير بذاريد ، كه تصادفي بودن اين حالت برطرف بشه ...( تا اون موقع دست بلند شده باشه )
----------------------
براي اينكه مثلا بعد از 2ثانيه گرفتن كليد ، خروجي صفر بشه ...
خوب اين هم ساده هست.
همون چيزيه كه بالا گفتم ، فقط اون زمان تاخير رو به اندازه ي 2 ثانيه مي گيريد و بعد دوباره شرط رو چك مي كنيد كه بايد همون شرط قبلي باشه ( يعني هنوز دست بايد دكمه رو فشار بده ... )
و بعد از اون هم يه تاخير 100 ميلي ثانيه ايه ديگه و دستور 0 كردن خروجي .

موفق باشيد.
يا علي.

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

ارسال‌ها: 155
موضوع‌ها: 20
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 117
( 164 تشکر در 77 ارسال )
ارسال: #8
RE: مشکل در AVR
(۲۱-تير-۱۳۹۰, ۱۶:۳۰:۴۰)alfaalarm نوشته است: ببخشید . منظوره من از روشن شدن سیستم خروجی های میکرو بود. چون من تا ورودی 1را (به عنوان مثال) 1می کنم خروجی 1 می شه ولی بمحض اینکه ورودی 0 می شه خروجی هم 0 می شه .

سلام
من سورس برنامه رو دیدم و به زبان بیسیک میشه این
pushed=0
if pina.0=1 then
pushed=1
i=0
while
incr i
if pina.0=0 then
pushed=0
exit while
endif
wend i>= 500
end if
waitms 10
set porta.1
'در اینجا اگر از تایمر استفاده کنی میتونی اون متغیر رو با ثانیه بشمری مثلا بگی اگر 5ثانیه شاسی فشرده شد حالا از حلقه خارج شده و هر کاری بخوای رو برات انجام میده. مثلا من پین 1 از پورت a رو روشن کردن.این متن کاملا تست شده است.

دانشمندان امروز دانش آموزان دیروز بودند.
به امید این که فردا دانشمند باشم.
(آخرین ویرایش در این ارسال: ۰۴-مرداد-۱۳۹۰, ۱۱:۵۲:۱۲، توسط saeidjan.)
۰۳-مرداد-۱۳۹۰, ۱۵:۳۶:۱۹
ارسال‌ها
پاسخ
تشکر شده توسط : رسول, rdscience, h0x00i


پرش به انجمن:


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

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