اوژن: به معنای افکننده و شکست دهنده است
دانایی، توانایی است-Knowledge is POWER
برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
سلام
من میخوام با پروتکل spi بین دو تا میکرو که یکیشون با بسکام نوشته شده و یکیشون با winavr ارتباط برقرار کنم
ولی با مشکل مواجه شدم
میشه لینک چند تا از منابع انگلیسی خوب برای آموزش winavr رو بزارید اینجا؟؟
اینارو خودم پیدا کردم:
http://orangutan-lib.sourceforge.net
http://www.4shared.com/file/58394115/46a0ea07/orangutan-lib-03.html
اگر لطف کنید آموزش بعدیتون رو به پروتکل spi اختصاص بدید خیلی عالی میشه
ولله این چند روزه من هر چی منتظر موندم نظری...جوابی...بدوبیراهی...تعریفی....یخدور!
من نمیدونم چطوری ادامه بدم. پس یا همراهی کنین یا بذارین نکته هارو توضیح بدم.
بعضی مواقع بنظر میاد اگه بشه مقدار یک متغیری رو که مکررا باهاش کار میشه در رجیستر ها قرار بدیم شاید سرعت عمل کدمون بیشتر بشه. این عمل رو در winavr میشه بصورت زیر انجام داد:
register unsigned char counter asm("r3"
منطقا این مورد استفاده درستیه اما در عمل ممکنه باعث بروز چند مشکل کوچیک بشه. اولا اگر رجیستری برای کاربرد خاصی غیر از اون که کامپایلر در نظر داره استفاده بشه عملا روال هدفمند تولید کد توسط کامپایلر رو بهم میزنه که میتونه باعث تولید کد غیر ضروری و اضافه بشه.
از طرف دیگه چون رجیسترهای 16 الی 31 برای کارهای عمومی استفاده میشه شاید بهتر این باشه که از رجیسترهای 2 الی 15 برای این کار استفاده بشه. و در این صورت اگر این متغیر در روال وقفه تغییر داده بشه معلوم نیست در کدوم روال (مثلا جمع دو عدد اعشاری) داره استفاده میشه و مقدارش عوض میشه.
خلاصتا توصیه میکنم از این مورد جز موارد خیلی خاص و داخل یک تابع استفاده نکنین.
یکی از موارد مهمی که من بارها باهاش دست به یخه شدم مسئله منطق های پایه هست. مثلا عموما عادت داریم که برای کار با uart از یک بافر برای ذخیره سازی اطلاعات دریافتی از سریال استفاده کنیم و در روال اصلی اطلاعات رو پردازش کنیم. این کار علاوه بر اونکه باعث کندی پردازش اولیه اطلاعات میشه میتونه در بعضی مواقع باعث بروز دردسرهای جنبی مثل عدم امکان پاسخ دهی مطلوب به سیستم دوم و یا مشکلاتی مثل power saving بشه.
معمولا من در اینگونه مواقع از ماشین حالت استفاده میکنم. مثلا در یک شبکه مبتنی بر rs485 روالی که برای وقفه سریال مینویسم اغلب عملیات مربوط به گرفتن یک فریم اطلاعاتی رو به همراه تشخیص خطا انجام میده و در پایان در صورتی که درخواست آماده پردازش بود مورد رو به روتین اصلی برای پردازش ارجاع میده. این عمل بصورت عادی فقط میتونه توسط محیط های چند برنامه ای تازه اونم با قدرت پایین انجام بشه.
اما البته این مسئله مورد منفیی هم داره و اون اینه که اگه از یک ابزاری برای تولید کد ماشین وضعیت استفاده نشه هر گونه تغییری در حالات این ماشین باعث کلی دردسر میشه. اگه خواستین از این روش استفاده کنین میتونین از VisualState کمپانی IAR برای طراحی و پیاده سازی ماشینهای متفاوت استفاده کنین. البته خودم کد نویسی خام رو ترجیح میدم.
از طرف دیگه برای پیاده سازی روالهای نسبتا پیچیده شاید محیط های multitask بنظر وسوسه انگیز بنظر بیاد ولی اگر سیستم از بابت حجم رم یا فلش در محدودیت شدیدی باشه باز هم استفاده از state machine یک راه حل بهینه و عالیه.
ولله این چند روزه من هر چی منتظر موندم نظری...جوابی...بدوبیراهی...تعریفی....یخدور!
من نمیدونم چطوری ادامه بدم. پس یا همراهی کنین یا بذارین نکته هارو توضیح بدم.
راستش من که افتادم تو خط arm، از طرفی هم درگیر پردازش تصویرم... اصلا دیگه فرصت نمیشه ...
با نکات اسمبلی در winavr خیلی موافقم. ادامه بده... ممنون
این pdf برای کسایی که مثل من از اسمبلی avr چیز زیادی نمیدونن. دستورات رو معرفی کرده
www.atmel.com/atmel/acrobat/doc1022.pdf
می تونه کمک کنه نکات آقا رضا رو بهتر بفهمین
سلام
من میخوام چند تا متغییر رو پشت سر هم با پروتکل spi از یه میکرو به میکرو دیگه انتقال بدم
یه متغییر رو میتونم انتقال بدم ولی بیشتر از یکی رو نمیتونم :angry:
میشه راهنمایی کنید :rolleyes:
من این دستور رو توی AVRStudio نوشتم ولی وقتی optimization رو روی O S- قرا میدم درست توی Simulator اجرا نمیشه ( یعنی اصلا اجرا نمیشه )
ولی وقی روی O 0- قرار میدم اجرا میشه :
for(j=0;j<5;j++)
asm("nop"
حالا باید چیکار کنم تا توی مود بهینه سازی هم کامپایل بشه ؟
فرق ما با جهان غرب در اینه که اونا هیچی نمیدونن! و تحقیق میکنند ولی ما همه چیزو می دونیم! و تحقیق برای ما معنی نداره!!!!!!!!!!!! .(از یه آدم اینکاره)
رو که میزنم دیگه for رو اجرا نمیکنه به جاش سه تا asm("nop" میزنه ولی اگه for رو مثلا 20 تایی که بزنی for اجرا میشه .
یا مثلا یه for خالی رو کامپایل نمیکنه .
دیدگاه