نکته ای در برنامه نویسی:
در عملیات محاسباتی با متغیرهایی از نوع صحیح، ترتیب انجام عملیات می تواند در دقت محاسبات موثر باشد. به عنوان یک مثال، نتیجه محاسبه
(a-b)/c
با نتیجه
(a/c)-(b/c)
در صورت صحیح بودن نوع متغیرهای a و b و c می تواند متفاوت باشد. در یکسری از عملیات محاسباتی، توجه به این ترتیب در محاسبات برای بالا بردن دقت مهم است.
مثال عددی با فرض حذف اعشار در محاسبات صحیح:
(12-1)/3=3
(12/3)-(1/3)=4
در این مثال، نتیجه محاسبه دوم یعنی 4 به نتیجه واقعی نزدیکتر است. بنابراین در صورت نیاز به استفاده از محاسبات صحیح و بسته به نوع رابطه و مثبت یا منفی بودن اجزاء محاسبه، می توانیم رابطه را به شکلی مرتب کنیم که نتیجه نهایی به نتیجه واقعی نزدیک تر باشد.
@Knowledgeplus
در عملیات محاسباتی با متغیرهایی از نوع صحیح، ترتیب انجام عملیات می تواند در دقت محاسبات موثر باشد. به عنوان یک مثال، نتیجه محاسبه
(a-b)/c
با نتیجه
(a/c)-(b/c)
در صورت صحیح بودن نوع متغیرهای a و b و c می تواند متفاوت باشد. در یکسری از عملیات محاسباتی، توجه به این ترتیب در محاسبات برای بالا بردن دقت مهم است.
مثال عددی با فرض حذف اعشار در محاسبات صحیح:
(12-1)/3=3
(12/3)-(1/3)=4
در این مثال، نتیجه محاسبه دوم یعنی 4 به نتیجه واقعی نزدیکتر است. بنابراین در صورت نیاز به استفاده از محاسبات صحیح و بسته به نوع رابطه و مثبت یا منفی بودن اجزاء محاسبه، می توانیم رابطه را به شکلی مرتب کنیم که نتیجه نهایی به نتیجه واقعی نزدیک تر باشد.
@Knowledgeplus
برای چسباندن مستحکم صفحات تاچ به LCD می توان از چسب های دو طرفه باریک مانند نمونه موجود در شکل استفاده کرد. در تهران این نوع چسب ها در خیابان فردوسی قابل تهیه است.
@KnowledgePlus
@KnowledgePlus
نکته ای در کار با درایور میکرواستپ:
در استفاده از تقسیمات بالای درایورهای میکرواستپ (مثلا
@KnowledgePlus
در استفاده از تقسیمات بالای درایورهای میکرواستپ (مثلا
۵۰۰۰۰
قسمت در یک دور)، توجه به حداکثر فرکانس پالس قابل پذیرش توسط درایور مورد انتخاب مهم است. چرا که در صورت پایین بودن محدوده پذیرش فرکانس پالس ورودی، امکان بالا بردن دور استپر موتور حتی در صورت تامین تغذیه کافی، میسر نخواهد بود.@KnowledgePlus
در کدنویسی برای refresh کردن 7segment ها و LED ها به روش Multiplex، برای جلوگیری از ایجاد سایه ای از اطلاعات بخش مجاور باید ابتدا خط Select جاری غیر فعال شود و سپس اطلاعات جدید روی خطوط دیتا قرار بگیرد و در مرحله بعدی خط Select جدید فعال شود.
@KnowledgePlus
@KnowledgePlus
نکته ای در تعمیرات بردهای الکترونیک:
مقاومت های آسیب دیده معمولا دچار افزایش مقدار یا قطعی کامل می شوند که اگر این آسیب در زمان کافی اتفاق بیافتد، می تواند باعث تغییر وضعیت ظاهری مقاومت و سیاه شدن آن شود. اما در مواردی بسته به آرایش مدار، مقاومت ها چنان به سرعت می سوزند که تغییری در ظاهر آنها ایجاد نمی شود و ممکن است یک مقاومت به ظاهر سالم، از داخل قطع شده باشد. یک روش سریع برای تست مقاومت ها در مدار، اندازه گیری مقاومت دو سر آنها توسط اهم متر است که اگر مقاومت خوانده شده بسیار بیشتر از مقدار نامی باشد، نشان دهنده آسیب دیدن مقاومت و یا پوکی قلع نگهدارنده آن (در صورت اندازه گیری از محل قلع اطراف پایه ها) است. اما مساوی یا کمتر بودن مقاومت خوانده شده در مقایسه با مقدار نامی لزوما دلیلی برای سالم یا خراب بودن آن نیست و بستگی به مدارات موازی با مقاومت دارد. در این شرایط در صورت عدم مشخص بودن آرایش مدارات موازی، حداقل یک سر مقاومت باید از مدار خارج شود و سپس مقدار آن اندازه گیری شود.
@KnowledgePlus
مقاومت های آسیب دیده معمولا دچار افزایش مقدار یا قطعی کامل می شوند که اگر این آسیب در زمان کافی اتفاق بیافتد، می تواند باعث تغییر وضعیت ظاهری مقاومت و سیاه شدن آن شود. اما در مواردی بسته به آرایش مدار، مقاومت ها چنان به سرعت می سوزند که تغییری در ظاهر آنها ایجاد نمی شود و ممکن است یک مقاومت به ظاهر سالم، از داخل قطع شده باشد. یک روش سریع برای تست مقاومت ها در مدار، اندازه گیری مقاومت دو سر آنها توسط اهم متر است که اگر مقاومت خوانده شده بسیار بیشتر از مقدار نامی باشد، نشان دهنده آسیب دیدن مقاومت و یا پوکی قلع نگهدارنده آن (در صورت اندازه گیری از محل قلع اطراف پایه ها) است. اما مساوی یا کمتر بودن مقاومت خوانده شده در مقایسه با مقدار نامی لزوما دلیلی برای سالم یا خراب بودن آن نیست و بستگی به مدارات موازی با مقاومت دارد. در این شرایط در صورت عدم مشخص بودن آرایش مدارات موازی، حداقل یک سر مقاومت باید از مدار خارج شود و سپس مقدار آن اندازه گیری شود.
@KnowledgePlus
در روش spwm برای کنترل دور موتور سه فاز، ولتاژ اعمال شده به موتور محدود به تقریبا 0.8 ولتاژ نامی است. برای اثبات این مطلب با فرض فیلتر شدن مولفه های فرکانس بالا توسط موتور، اگر ولتاژ بازوهای پل سه فاز را بصورت سه سینوسی با اختلاف فاز 120 درجه در نظر بگیریم که بین 0 و Vmax تغییر می کنند:
V1=Vmax*(1+sin(x))/2
V2=Vmax*(1+sin(x+120))/2
V3=Vmax*(1+sin(x+240))/2
و تفاضل هر یک از این عبارت ها را نسبت به یکدیگر با استفاده از روابط مثلثاتی بسط دهیم، در نهایت حاصل توابعی سینوسی خواهند شد که دامنه آنها 0.866Vmax است و این همان ولتاژهایی است که به ورودی های موتور اعمال می شوند.
@KnowledgePlus
V1=Vmax*(1+sin(x))/2
V2=Vmax*(1+sin(x+120))/2
V3=Vmax*(1+sin(x+240))/2
و تفاضل هر یک از این عبارت ها را نسبت به یکدیگر با استفاده از روابط مثلثاتی بسط دهیم، در نهایت حاصل توابعی سینوسی خواهند شد که دامنه آنها 0.866Vmax است و این همان ولتاژهایی است که به ورودی های موتور اعمال می شوند.
@KnowledgePlus
توصیه ای برای موفقیت در استخدام:
با توجه به بررسی رزومه ها و مصاحبه با افراد مختلف جویای کار، متاسفانه مشاهده می شود که اکثر قریب به اتفاق این افراد فاقد تسلط واقعی و کامل بر موارد اعلام شده به عنوان حوزه های تخصصی خود هستند و توانایی آنها بیشتر در حد آشنایی و راه اندازی و اجرای مثال های آماده برای نرم افزارها و سخت افزارهای مورد نظر است. مشاهده یک فهرست طولانی از نرم افزارها و سخت افزارهای اعلام شده از طرف فرد جویای کار به عنوان موارد ادعایی که بر آنها تسلط دارد، از طرف یک کارفرمای باتجربه و مسلط لزوما به عنوان نقطه قوت و مزیتی محسوب نمی شود و بلکه می تواند نشانه ای از عمق کم اطلاعات فرد مذکور باشد. بازار کار در حوزه های تخصصی برق و الکترونیک امروزه طالب افرادی است که با صرف وقت کافی و نه در حد آشنایی، در موضوعات مورد نیاز به صورت متمرکز فعالیت کرده باشند و در همان موارد محدود به حداکثر توانایی و تخصص رسیده باشند. بنابراین توصیه می شود در ارسال رزومه ها، نقاط قوت واقعی و قابل استناد (در صورت وجود) از موارد آشنایی عمومی و کلی، کاملا تفکیک و مشخص شود.
@KnowledgePlus
با توجه به بررسی رزومه ها و مصاحبه با افراد مختلف جویای کار، متاسفانه مشاهده می شود که اکثر قریب به اتفاق این افراد فاقد تسلط واقعی و کامل بر موارد اعلام شده به عنوان حوزه های تخصصی خود هستند و توانایی آنها بیشتر در حد آشنایی و راه اندازی و اجرای مثال های آماده برای نرم افزارها و سخت افزارهای مورد نظر است. مشاهده یک فهرست طولانی از نرم افزارها و سخت افزارهای اعلام شده از طرف فرد جویای کار به عنوان موارد ادعایی که بر آنها تسلط دارد، از طرف یک کارفرمای باتجربه و مسلط لزوما به عنوان نقطه قوت و مزیتی محسوب نمی شود و بلکه می تواند نشانه ای از عمق کم اطلاعات فرد مذکور باشد. بازار کار در حوزه های تخصصی برق و الکترونیک امروزه طالب افرادی است که با صرف وقت کافی و نه در حد آشنایی، در موضوعات مورد نیاز به صورت متمرکز فعالیت کرده باشند و در همان موارد محدود به حداکثر توانایی و تخصص رسیده باشند. بنابراین توصیه می شود در ارسال رزومه ها، نقاط قوت واقعی و قابل استناد (در صورت وجود) از موارد آشنایی عمومی و کلی، کاملا تفکیک و مشخص شود.
@KnowledgePlus
نکته آموزشی:
عدد ذکر شده به عنوان فرکانس مرکزی کریستال مربوط به دمای مشخصی است که این دمای مرجع بسته به ساختار کریستال می تواند اعداد متفاوتی باشد. با تغییر دما نسبت به دمای مرجع، فرکانس نوسان کریستال به میزان معینی منطبق با معادله مشخصه آن تغییر می کند که در برخی از کاربردهای بسیار دقیق، این تغییر فرکانس ناشی از تغییرات دما بسیار مهم است. برای جبران سازی تغییر فرکانس کریستال به دلیل تغییر دما از روش های مختلفی استفاده می شود که در اینجا به دو نوع از آنها اشاره می شود. در نوسان سازهای TCXO یا Temperature-compensated crystal oscillator از طریق اندازه گیری دما و مدارات جبران ساز آنالوگ، فرکانس خروجی نوسان ساز نسبت به تغییرات دما تثبیت می شود. در روش دیگر کریستال در یک محفظه حرارتی (Oven) قرار می گیرد و گرم می شود و دمای بدنه آن توسط گرم کننده و کنترلر دما در دمای ثابتی تثبیت می شود که به این نوع نوسان ساز OCXO یا Oven-controlled crystal oscillator گفته می شود.
@KnowledgePlus
عدد ذکر شده به عنوان فرکانس مرکزی کریستال مربوط به دمای مشخصی است که این دمای مرجع بسته به ساختار کریستال می تواند اعداد متفاوتی باشد. با تغییر دما نسبت به دمای مرجع، فرکانس نوسان کریستال به میزان معینی منطبق با معادله مشخصه آن تغییر می کند که در برخی از کاربردهای بسیار دقیق، این تغییر فرکانس ناشی از تغییرات دما بسیار مهم است. برای جبران سازی تغییر فرکانس کریستال به دلیل تغییر دما از روش های مختلفی استفاده می شود که در اینجا به دو نوع از آنها اشاره می شود. در نوسان سازهای TCXO یا Temperature-compensated crystal oscillator از طریق اندازه گیری دما و مدارات جبران ساز آنالوگ، فرکانس خروجی نوسان ساز نسبت به تغییرات دما تثبیت می شود. در روش دیگر کریستال در یک محفظه حرارتی (Oven) قرار می گیرد و گرم می شود و دمای بدنه آن توسط گرم کننده و کنترلر دما در دمای ثابتی تثبیت می شود که به این نوع نوسان ساز OCXO یا Oven-controlled crystal oscillator گفته می شود.
@KnowledgePlus
در صورت ایجاد اتصالی با قلع بین پایه های آی سی های smd در هنگام لحیم کاری و در شرایطی که به دلیل نزدیکی پایه ها به هم، استفاده از قلع کش جواب نمی دهد، یک روش ساده و کم هزینه این است که سیم افشان با رشته های تا حد امکان نازک را با روغن مناسب مثل روغن لحیم یا فلکس آغشته کنیم و آن را روی محل اتصالی قرار دهیم. سپس باید هویه را روی مجموعه رشته های سیم افشان و قلع ایجاد کننده اتصالی فشار دهیم تا بصورت همزمان سیم داغ و قلع ذوب شود. در این حالت قلع ذوب شده از بین پایه های آی سی smd، جذب رشته های سیم افشان خواهد شد.
@KnowledgePlus
@KnowledgePlus
نکته ای در طراحی مدار چاپی:
اگر لازم باشد یک مدار چاپی پر تراکم حتما بصورت یک رو طراحی شود، استفاده از قطعات smd (علیرغم فضای کمتری که اشغال می کنند) لزوما بهترین گزینه نیست. زیرا بیشتر بودن فاصله پایه های قطعات، امکان عبور یک یا چند track را بسته به نوع قطعه از بین پایه های آنها فراهم می کند که این امکان می تواند برای طراحی مدارهای پر تراکم بصورت یک رو بسیار مفید باشد. البته این مورد کاملا بستگی به آرایش مدار و نوع قطعات و ... دارد و نمی توان آن را بصورت یک قاعده کلی بیان کرد. اما منظور از این مطلب این است که مدارهایی را می توان مثال زد که در صورت استفاده ازکلیه قطعات از نوع smd، امکان طراحی مدار چاپی در ابعاد مشخص بصورت یک رو برای آنها وجود نداشته باشد. اما همان مدار را می توان در همان ابعاد در صورت استفاده از بعضی قطعات غیر smd و با فواصل پایه بیشتر، بصورت یک رو طراحی کرد.
@KnowledgePlus
اگر لازم باشد یک مدار چاپی پر تراکم حتما بصورت یک رو طراحی شود، استفاده از قطعات smd (علیرغم فضای کمتری که اشغال می کنند) لزوما بهترین گزینه نیست. زیرا بیشتر بودن فاصله پایه های قطعات، امکان عبور یک یا چند track را بسته به نوع قطعه از بین پایه های آنها فراهم می کند که این امکان می تواند برای طراحی مدارهای پر تراکم بصورت یک رو بسیار مفید باشد. البته این مورد کاملا بستگی به آرایش مدار و نوع قطعات و ... دارد و نمی توان آن را بصورت یک قاعده کلی بیان کرد. اما منظور از این مطلب این است که مدارهایی را می توان مثال زد که در صورت استفاده ازکلیه قطعات از نوع smd، امکان طراحی مدار چاپی در ابعاد مشخص بصورت یک رو برای آنها وجود نداشته باشد. اما همان مدار را می توان در همان ابعاد در صورت استفاده از بعضی قطعات غیر smd و با فواصل پایه بیشتر، بصورت یک رو طراحی کرد.
@KnowledgePlus
نقل یک تجربه عملی:
در یک محیط صنعتی پرنویز که برق کامپیوتر با برق درایورهای سرو موتور و اینورتر مشترک بود، در هنگام جریان کشی توام همه درایورها و اینورترها، ارتباط rs422 در pc به دلیل مخدوش شدن اطلاعات قطع میشد. اما با قرار دادن یک emi filter دست ساز در مسیر تغذیه pc، این مشکل برطرف گردید.
@KnowledgePlus
در یک محیط صنعتی پرنویز که برق کامپیوتر با برق درایورهای سرو موتور و اینورتر مشترک بود، در هنگام جریان کشی توام همه درایورها و اینورترها، ارتباط rs422 در pc به دلیل مخدوش شدن اطلاعات قطع میشد. اما با قرار دادن یک emi filter دست ساز در مسیر تغذیه pc، این مشکل برطرف گردید.
@KnowledgePlus
سخنی با مخاطبین این کانال
در سال های گذاشته بر مبنای انگیزه به اشتراک گذاشتن اطلاعات و کمک به ارتقاء سطح علمی رشته الکترونیک در کشور، علاوه بر قرار دادن فیلم های آموزشی بصورت رایگان در اینترنت، انواع پروژه ها و مطالب آموزشی از طریق سایت KnowledgePlus.ir و قبل از آن انجمن eca برای استفاده در اختیار علاقه مندان قرار داده شده است. سورس های مختلفی از جمله سورس اینورتر سه فاز، تولید ملودی ای ایران با زبان های سی و بیسیک، فارسی نویسی در بسکام، اکوی دیجیتال و انواع پروژه های متعدد دیگر و همچنین مقالاتی مانند روش های مقابله با نویز در avr که برای اولین بار بصورت پستی در سایت eca منتشر شد و مطالب آموزشی در مورد استپر موتور و درایورهای آن و سایر موتورهای مورد استفاده در دستگاه های CNC از جمله نمونه هایی است که تنها برای کمک به پیشرفت علم الکترونیک با صرف زمان زیاد در اختیار دوستان علاقه مند قرار داده شده است. اخیرا هم از طریق این کانال سعی شده که یکسری نکات آموزشی و طراحی و تجربیات عملی برای استفاده همه به اشتراک گذاشته شود.
اما متاسفانه مشاهده می شود که بسیاری از پروژه ها و مقالات و پست های آموزشی از طرف گروهی از افراد بی تعهد و فاقد اخلاق کپی شده و بدون ذکر مرجع، آنها را به نام خودشان منتشر کرده اند و حتی گاهی برای فروش گذاشته اند. این روال اخیرا با ایجاد گروه تلگرام همچنان ادامه داشته و کانال هایی را می توان مشاهده کرد که علیرغم درخواست نسبت به فوروارد پست ها، مطالب را کپی و به نام خودشان منتشر می کنند و ظاهرا مورد اعتراض مخاطبین خود هم قرار نمی گیرند.
بنابراین برای مقابله با این عملکرد غیر اخلاقی و با حفظ انگیزه برای به اشتراک گذاشتن مطالب، از این به بعد در شیوه ارائه اطلاعات و تجربیات از طریق این کانال تجدید نظر خواهد شد.
@KnowledgePlus
در سال های گذاشته بر مبنای انگیزه به اشتراک گذاشتن اطلاعات و کمک به ارتقاء سطح علمی رشته الکترونیک در کشور، علاوه بر قرار دادن فیلم های آموزشی بصورت رایگان در اینترنت، انواع پروژه ها و مطالب آموزشی از طریق سایت KnowledgePlus.ir و قبل از آن انجمن eca برای استفاده در اختیار علاقه مندان قرار داده شده است. سورس های مختلفی از جمله سورس اینورتر سه فاز، تولید ملودی ای ایران با زبان های سی و بیسیک، فارسی نویسی در بسکام، اکوی دیجیتال و انواع پروژه های متعدد دیگر و همچنین مقالاتی مانند روش های مقابله با نویز در avr که برای اولین بار بصورت پستی در سایت eca منتشر شد و مطالب آموزشی در مورد استپر موتور و درایورهای آن و سایر موتورهای مورد استفاده در دستگاه های CNC از جمله نمونه هایی است که تنها برای کمک به پیشرفت علم الکترونیک با صرف زمان زیاد در اختیار دوستان علاقه مند قرار داده شده است. اخیرا هم از طریق این کانال سعی شده که یکسری نکات آموزشی و طراحی و تجربیات عملی برای استفاده همه به اشتراک گذاشته شود.
اما متاسفانه مشاهده می شود که بسیاری از پروژه ها و مقالات و پست های آموزشی از طرف گروهی از افراد بی تعهد و فاقد اخلاق کپی شده و بدون ذکر مرجع، آنها را به نام خودشان منتشر کرده اند و حتی گاهی برای فروش گذاشته اند. این روال اخیرا با ایجاد گروه تلگرام همچنان ادامه داشته و کانال هایی را می توان مشاهده کرد که علیرغم درخواست نسبت به فوروارد پست ها، مطالب را کپی و به نام خودشان منتشر می کنند و ظاهرا مورد اعتراض مخاطبین خود هم قرار نمی گیرند.
بنابراین برای مقابله با این عملکرد غیر اخلاقی و با حفظ انگیزه برای به اشتراک گذاشتن مطالب، از این به بعد در شیوه ارائه اطلاعات و تجربیات از طریق این کانال تجدید نظر خواهد شد.
@KnowledgePlus
مقاله ای درباره نحوه دسترسی به حافظه eeprom در AVR-GCC:
www.tinkerist.com/gps/docs/EEPROM.pdf
@KnowledgePlus
www.tinkerist.com/gps/docs/EEPROM.pdf
@KnowledgePlus
نکته ای در استفاده از سنسورهای صنعتی،:
توجه به مشخصه و زمان پاسخ یک سنسور صنعتی در برخی کاربردها می تواند بسیار مهم باشد. مثلا اگر بنا باشد یک سنسور حساس به فلزات برای محدود کردن طول حرکت یک سیستم سریع مکانیکی به عنوان Limit switch عمل کند و به کنترلر فرمان دهنده به موتور محرکه، حد نهایی انتهای مسیر را اعلام کند، در این کاربرد باید از سنسوری استفاده شود که زمان پاسخ آن به حد کافی سریع باشد تا سیستم مکانیکی از حد تعیین شده به عنوان انتهای مسیر فراتر نرود و آسیب احتمالی به سیستم مکانیکی به دلیل دیر عمل کردن سنسور وارد نشود.
@KnowledgePlus
توجه به مشخصه و زمان پاسخ یک سنسور صنعتی در برخی کاربردها می تواند بسیار مهم باشد. مثلا اگر بنا باشد یک سنسور حساس به فلزات برای محدود کردن طول حرکت یک سیستم سریع مکانیکی به عنوان Limit switch عمل کند و به کنترلر فرمان دهنده به موتور محرکه، حد نهایی انتهای مسیر را اعلام کند، در این کاربرد باید از سنسوری استفاده شود که زمان پاسخ آن به حد کافی سریع باشد تا سیستم مکانیکی از حد تعیین شده به عنوان انتهای مسیر فراتر نرود و آسیب احتمالی به سیستم مکانیکی به دلیل دیر عمل کردن سنسور وارد نشود.
@KnowledgePlus
در بررسی میدانی در بازار جمهوری در مورد انواع emi filter با قابلیت عبور جریان بالا، مشاهده شد که چند نوع فیلتر از انواع تقلبی تا نوع ژاپنی در بازار وجود دارد. اما برای کاربردهای تولیدی و تعداد بالا به دلیل موجود نبودن فیلترهای جریان بالای مناسب به تعداد کافی و گران بودن قیمت انواع موجود بهتر است فیلتر بصورت مجزا و با تهبه قطعات بسته شود.
@KnowledgePlus
@KnowledgePlus
نکته ای در کدنویسی:
نحوه برنامه نویسی برای سخت افزارهای مختلف بسته به نوع کاربرد می تواند به دو صورت باشد. در روش اول کدنویسی به گونه ای انجام می شود که با تغییر آرایش سخت افزاری، تنها با تغییر تعاریفی مانند پورت ها و شماره پین ها برنامه روی سخت افزارهای مختلف قابل اجرا باشد. اما در روش دوم به منظور افزایش هر چه بیشتر در سرعت اجرا، کدنویسی بصورت خاص و برمبنای سخت افزار مورد نظر انجام می شود.
به عنوان مثال در کدنویسی برای مقداردهی به بیت های دیتای یک LCD، اگر برای ایجاد قابلیت استفاده از کد برای سخت افزارهای مختلف فرض بر این باشد که ممکن است بیت های دیتا روی پورت های مختلف قرار بگیرند، در این صورت مقداردهی به هر بیت بصورت مجزا انجام میشود که این روش دارای دو خاصیت است. یکی این که در صورت نام گذاری و تعاریف مناسب می توان از همین کد برای آرایش های سخت افزاری مختلف استفاده کرد و تنها شماره پورت ها و پین ها را تغییر داد. خاصیت دوم، طولانی شدن زمان اجرای برنامه به دلیل تفکیک تک تک بیت ها است. در حالی که ممکن است تمام بیت های دیتا روی یک پورت قرار داشته باشند و مقداردهی به تمام آنها را بتوان در یک مرحله انجام داد. برای یک LCD کاراکتری که حجم ارسال دیتا پایین است، کدنویسی به شیوه اول می تواند روش مناسبی باشد. زیرا کندی ایجاد شده به دلیل تفکیک تک تک بیت ها برای کاربر محسوس نیست. اما مثلا برای یک LCD رنگی با رزولوشن بالا و تعداد نقاط زیاد، این روش به دلیل کندی زیاد ممکن است مناسب نباشد و در چنین شرایطی نوشتن کد بصورت بهینه برمبنای سخت افزار موجود می تواند باعث افزایش سرعت در عملکرد خروجی شود.
نتیجه اینکه کدنویسی به شکل عمومی و با قابلیت استفاده برای سخت افزارهای مختلف، همیشه هم روش مطلوبی نیست و در برخی شرایط لازم است کدنویسی بصورت خاص برای سخت افزار هدف انجام شود.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
@KnowledgePlus
نحوه برنامه نویسی برای سخت افزارهای مختلف بسته به نوع کاربرد می تواند به دو صورت باشد. در روش اول کدنویسی به گونه ای انجام می شود که با تغییر آرایش سخت افزاری، تنها با تغییر تعاریفی مانند پورت ها و شماره پین ها برنامه روی سخت افزارهای مختلف قابل اجرا باشد. اما در روش دوم به منظور افزایش هر چه بیشتر در سرعت اجرا، کدنویسی بصورت خاص و برمبنای سخت افزار مورد نظر انجام می شود.
به عنوان مثال در کدنویسی برای مقداردهی به بیت های دیتای یک LCD، اگر برای ایجاد قابلیت استفاده از کد برای سخت افزارهای مختلف فرض بر این باشد که ممکن است بیت های دیتا روی پورت های مختلف قرار بگیرند، در این صورت مقداردهی به هر بیت بصورت مجزا انجام میشود که این روش دارای دو خاصیت است. یکی این که در صورت نام گذاری و تعاریف مناسب می توان از همین کد برای آرایش های سخت افزاری مختلف استفاده کرد و تنها شماره پورت ها و پین ها را تغییر داد. خاصیت دوم، طولانی شدن زمان اجرای برنامه به دلیل تفکیک تک تک بیت ها است. در حالی که ممکن است تمام بیت های دیتا روی یک پورت قرار داشته باشند و مقداردهی به تمام آنها را بتوان در یک مرحله انجام داد. برای یک LCD کاراکتری که حجم ارسال دیتا پایین است، کدنویسی به شیوه اول می تواند روش مناسبی باشد. زیرا کندی ایجاد شده به دلیل تفکیک تک تک بیت ها برای کاربر محسوس نیست. اما مثلا برای یک LCD رنگی با رزولوشن بالا و تعداد نقاط زیاد، این روش به دلیل کندی زیاد ممکن است مناسب نباشد و در چنین شرایطی نوشتن کد بصورت بهینه برمبنای سخت افزار موجود می تواند باعث افزایش سرعت در عملکرد خروجی شود.
نتیجه اینکه کدنویسی به شکل عمومی و با قابلیت استفاده برای سخت افزارهای مختلف، همیشه هم روش مطلوبی نیست و در برخی شرایط لازم است کدنویسی بصورت خاص برای سخت افزار هدف انجام شود.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
@KnowledgePlus
نکته آموزشی:
در موتورهایی مانند استپر موتور که در ساختار آنها از آهنربای دائمی استفاده می شود، حتی در هنگام عدم عبور جریان از سیم پیچ های موتور هم گشتاور نگهدارنده ای از طرف موتور به دلیل همان خاصیت آهنربایی ایجاد می شود. به این گشتاور در اصطلاح Detent Torque یا Cogging Torque گفته می شود و مقدار آن ممکن است در مشخصات موتور ذکر شود.
@KnowledgePlus
در موتورهایی مانند استپر موتور که در ساختار آنها از آهنربای دائمی استفاده می شود، حتی در هنگام عدم عبور جریان از سیم پیچ های موتور هم گشتاور نگهدارنده ای از طرف موتور به دلیل همان خاصیت آهنربایی ایجاد می شود. به این گشتاور در اصطلاح Detent Torque یا Cogging Torque گفته می شود و مقدار آن ممکن است در مشخصات موتور ذکر شود.
@KnowledgePlus
آموزش سریع ایجاد پروژه در کامپایلر IAR برای کار با XMEGA یا AVR:
توجه: نسخه قدیمی تر این آموزش در سال های گذشته توسط مهندس کی نژاد در یکی از انجمن های برق و الکترونیک قرار داده شده است.
ابتدا از طریق منوی
Project/Create new project
گزینه C یا ++C شاخه
AVR Studio 4 compatible output
را انتخاب کنید. سپس در پنجره ای که باز می شود محل ذخیره سازی فایل پروژه را مشخص کنید. در مرحله بعدی فایل main برنامه توسط کامپایلر ایجاد می شود. سپس در ناحیه workspace بجای گزینه Debug، نسخه Release را انتخاب کنید. سپس در مسیر
Project/Options/General Options/Target/Processor configuration
نوع میکروکنترلر مورد استفاده را انتخاب کنید. در مسیر
Project/Options/General Options/System
تیک
Enable bit definitions in I/O include files
را بزنید.
بعد از نوشتن کد مورد نظر در محیط کامپایلر، با زدن F7 پنجره ای باز می شود و محل ذخیره فایل با پسوند eww را سوال می کند. با انتخاب نام مناسب و محل فولدر تشکیل شده برای این پروژه، برنامه کامپایل می شود. فایل های خروجی با پسوند Hex برای flash و eeprom در فولدر Release/Exe ذخیره می شوند. برای آگاهی از میزان مصرف حافظه در مسیر
Project/Options/Linker/List
تیک
Generate linker listing
و تیک های داخل آن را بزنید و بعد از کامپایل با مراجعه به محتوای فایل با پسوند map که در فایل های خروجی پروژه در ناحیه Workspace بخش Output قابل دسترس است، میزان مصرف CSTACK و RSTACK در هر مرحله را بررسی کنید. در صورت کافی نبودن میزان این بخش های حافظه، ظرفیت این بخش ها را در مسیر
Project/Options/General Options/System
در مقدار دلخواه تعیین کنید. برای استفاده از برخی از کتابخانه های موجود ممکن است لازم باشد در مسیر
Project/Options/General Options/Library Configuration
نوع کتابخانه ها را از وضعیت CLIB به گزینه های دیگر مانند Normal DLIB تغییر دهید.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
@KnowledgePlus
توجه: نسخه قدیمی تر این آموزش در سال های گذشته توسط مهندس کی نژاد در یکی از انجمن های برق و الکترونیک قرار داده شده است.
ابتدا از طریق منوی
Project/Create new project
گزینه C یا ++C شاخه
AVR Studio 4 compatible output
را انتخاب کنید. سپس در پنجره ای که باز می شود محل ذخیره سازی فایل پروژه را مشخص کنید. در مرحله بعدی فایل main برنامه توسط کامپایلر ایجاد می شود. سپس در ناحیه workspace بجای گزینه Debug، نسخه Release را انتخاب کنید. سپس در مسیر
Project/Options/General Options/Target/Processor configuration
نوع میکروکنترلر مورد استفاده را انتخاب کنید. در مسیر
Project/Options/General Options/System
تیک
Enable bit definitions in I/O include files
را بزنید.
بعد از نوشتن کد مورد نظر در محیط کامپایلر، با زدن F7 پنجره ای باز می شود و محل ذخیره فایل با پسوند eww را سوال می کند. با انتخاب نام مناسب و محل فولدر تشکیل شده برای این پروژه، برنامه کامپایل می شود. فایل های خروجی با پسوند Hex برای flash و eeprom در فولدر Release/Exe ذخیره می شوند. برای آگاهی از میزان مصرف حافظه در مسیر
Project/Options/Linker/List
تیک
Generate linker listing
و تیک های داخل آن را بزنید و بعد از کامپایل با مراجعه به محتوای فایل با پسوند map که در فایل های خروجی پروژه در ناحیه Workspace بخش Output قابل دسترس است، میزان مصرف CSTACK و RSTACK در هر مرحله را بررسی کنید. در صورت کافی نبودن میزان این بخش های حافظه، ظرفیت این بخش ها را در مسیر
Project/Options/General Options/System
در مقدار دلخواه تعیین کنید. برای استفاده از برخی از کتابخانه های موجود ممکن است لازم باشد در مسیر
Project/Options/General Options/Library Configuration
نوع کتابخانه ها را از وضعیت CLIB به گزینه های دیگر مانند Normal DLIB تغییر دهید.
(لطفا از کپی کردن پست ها خودداری و تنها به شکل فوروارد منتشر شود)
@KnowledgePlus
با توجه به مشترک بودن اکثر دستورات اسمبلی در خانواده های AVR و XMEGA، علاقه مندان به فراگیری برنامه نویسی اسمبلی برای خانواده XMEGA می توانند به بخش های 76 تا 91 فیلم های آموزش AVR مراجعه کنند.
@KnowledgePlus
@KnowledgePlus