به اطلاع می رساند که برگزاری دوره های آموزشی بصورت کلاس های حضوری اعم از عمومی و خصوصی از سال
@KnowledgePlus
۱۳۹۴
تاکنون متوقف شده و تا اطلاع ثانوی هم تصمیمی برای برگزاری چنین دوره هایی وجود ندارد. چنانچه آموزشی هم ارائه شود تنها به شکل فیلم های آموزشی رایگان یا مقالات و نمونه کد و مانند آن خواهد بود.@KnowledgePlus
پیرو پست های زیر:
https://t.iss.one/KnowledgePlus/42
https://t.iss.one/KnowledgePlus/211
https://t.iss.one/KnowledgePlus/318
https://t.iss.one/KnowledgePlus/422
در بردهای میکروکنترلری که در معرض گرد و غبار قرار دارند این مسئله مشاهده شد که علیرغم اتصال پین ریست از طریق یک مقاومت به Vcc، به دلیل وجود براده های فلزی بسیار ریز در گرد غباری که روی پین های میکروکنترلر جمع شده بود، مسیر جریانی بین پین ریست و زمین مدار از طریق براده ها ایجاد میشد که موجب ریست شدن میکروکنترلر حتی با وجود اتصال مقاومت به Vcc میگردید. اما با حذف مقاومت و اتصال مستقیم پین ریست به Vcc از طریق یک جامپر، این مشکل مرتفع گردید. زیرا در این شرایط اگر براده ها مسیری را برای هدایت جریان تا زمین ایجاد کنند، به دلیل عبور جریان بالا بین زمین و Vcc از طریق براده و ابعاد بسیار کوچک آنها، براده ها فورا ذوب می شوند و تاثیر خود را از دست می دهند. اما در صورت سری کردن مقاومت با پین ریست چنین شرایطی محقق نخواهد شد.
@KnowledgePlus
https://t.iss.one/KnowledgePlus/42
https://t.iss.one/KnowledgePlus/211
https://t.iss.one/KnowledgePlus/318
https://t.iss.one/KnowledgePlus/422
در بردهای میکروکنترلری که در معرض گرد و غبار قرار دارند این مسئله مشاهده شد که علیرغم اتصال پین ریست از طریق یک مقاومت به Vcc، به دلیل وجود براده های فلزی بسیار ریز در گرد غباری که روی پین های میکروکنترلر جمع شده بود، مسیر جریانی بین پین ریست و زمین مدار از طریق براده ها ایجاد میشد که موجب ریست شدن میکروکنترلر حتی با وجود اتصال مقاومت به Vcc میگردید. اما با حذف مقاومت و اتصال مستقیم پین ریست به Vcc از طریق یک جامپر، این مشکل مرتفع گردید. زیرا در این شرایط اگر براده ها مسیری را برای هدایت جریان تا زمین ایجاد کنند، به دلیل عبور جریان بالا بین زمین و Vcc از طریق براده و ابعاد بسیار کوچک آنها، براده ها فورا ذوب می شوند و تاثیر خود را از دست می دهند. اما در صورت سری کردن مقاومت با پین ریست چنین شرایطی محقق نخواهد شد.
@KnowledgePlus
یک تجربه درباره مشکل اسیلاتورهای کریستالی:
بارها مشاهده شده که وقتی منبع کلاک میکروکنترلر از اسیلاتور داخلی متصل به کریستال خارجی تامین می شود، بعد از راه اندازی مدار در ابتدا اسیلاتور به خوبی عمل می کند. اما گاهی به دلایلی مانند خرابی خازن های متصل به کریستال یا روغن لحیم بجا مانده بین پایه ها و موارد مشابه بعد از سپری شدن مدت زمانی حدود چند دقیقه، نوسان اسیلاتور دچار اختلال می شود که باعث عملکرد ناخواسته میکروکنترلر می گردد. بر اساس همین تجربه هر بردی که از نظر تامین کلاک در وضعیت استفاده از اسیلاتور داخلی متصل به کریستال خارجی باشد حداقل بین نیم تا یک ساعت تست می شود تا اگر قرار است مشکلی در نوسان اسیلاتور کریستالی ایجاد شود خود را در این مدت زمان نشان دهد.
@KnowledgePlus
بارها مشاهده شده که وقتی منبع کلاک میکروکنترلر از اسیلاتور داخلی متصل به کریستال خارجی تامین می شود، بعد از راه اندازی مدار در ابتدا اسیلاتور به خوبی عمل می کند. اما گاهی به دلایلی مانند خرابی خازن های متصل به کریستال یا روغن لحیم بجا مانده بین پایه ها و موارد مشابه بعد از سپری شدن مدت زمانی حدود چند دقیقه، نوسان اسیلاتور دچار اختلال می شود که باعث عملکرد ناخواسته میکروکنترلر می گردد. بر اساس همین تجربه هر بردی که از نظر تامین کلاک در وضعیت استفاده از اسیلاتور داخلی متصل به کریستال خارجی باشد حداقل بین نیم تا یک ساعت تست می شود تا اگر قرار است مشکلی در نوسان اسیلاتور کریستالی ایجاد شود خود را در این مدت زمان نشان دهد.
@KnowledgePlus
در نمونه کد زیر که برای avr نوشته شده به دلیل این موضوع فکر کنید که چرا وقفه قبل از تغییر در data32 غیر فعال و بعد فعال شده است:
volatile unsigned long data32;
در حلقه اصلی برنامه:
...
cli();
data32++;
sei();
...
در روتین یک وقفه:
...
data32=0;
...
@KnowledgePlus
volatile unsigned long data32;
در حلقه اصلی برنامه:
...
cli();
data32++;
sei();
...
در روتین یک وقفه:
...
data32=0;
...
@KnowledgePlus
شخصی که برای کارآموزی به شرکتی رفته بود نقل می کرد که بردی به ظاهر پیچیده و با انواع قطعات متنوع را برای مهندسی معکوس و در آوردن نقشه آن در اختیارم قرار دادند که بعد از زحمات بسیار برای استخراج نقشه اتصالات برد به این نتیجه رسیدیم که بسیاری از قطعات آن برد عملا نقشی در عملکرد آن ندارند و بعضی حتی به جایی وصل نیستند و آن قطعات تنها برای پیچیده و پیشرفته به نظر رسیدن مدار روی برد قرار داده شده اند.
@KnowledgePlus
@KnowledgePlus
اخیرا برای تولید یک برد الکترونیک و به منظور قرار ندادن پتانسیومتر، دو نوع از LCD های کاراکتری 2x8 موجود در بازار از این نظر تست شدند که با قرار دادن چه مقاومتی بین پین تنظیم کنتراست تا زمین، بهترین سطح کنتراست ایجاد می شود که در یک نوع از LCD ها مقاومت 2.2K و در دیگری مقاومت 4.7K بهترین شرایط نمایش را ایجاد می کرد.
@KnowledgePlus
@KnowledgePlus
برخی از دانشجویان به شدت عجله دارند که هر چه سریعتر فارغ التحصیل شوند تا بتوانند وارد بازار کار شوند و به همین دلیل درس ها را به صورت نصفه و نیمه می گذرانند و به هر شکلی پاس می کنند. اما بسیاری از این افراد وقتی که وارد بازار کار می شوند تازه متوجه می شوند که چه اشتباهی را مرتکب شده اند و آرزو می کنند که ای کاش از فرصت حضور در دانشگاه بهره بیشتری می بردند و بدون عمیق شدن در مباحث تئوری و استفاده کافی از آزمایشگاه ها و امکانات عملی دانشگاه با این عجله فارغ التحصیل نمی شدند.
@KnowledgePlus
@KnowledgePlus
محاسبه سرانگشتی خازن خروجی پل دیود:
برای محاسبه ظرفیت خازن خروجی پل دیود به ازای ولتاژ ریپل دلخواه می توان از فرمول زیر استفاده کرد که در آن i جریان متوسط و Vr ولتاژ ریپل است.
C=0.01.i/Vr
@KnowledgePlus
برای محاسبه ظرفیت خازن خروجی پل دیود به ازای ولتاژ ریپل دلخواه می توان از فرمول زیر استفاده کرد که در آن i جریان متوسط و Vr ولتاژ ریپل است.
C=0.01.i/Vr
@KnowledgePlus
زرنگی در دو نسخه
نسخه یک:
-هر چه را که یاد گرفته ایم و هر تجربه ای را که داریم برای خودمان نگه می داریم و مراقبت می کنیم که اصلا به کسی چیزی را یاد ندهیم.
- اگر کتاب یا جزوه یا سایت یا کانال تلگرام یا سایر موارد مشابهی را دیدیم که مفید هستند به هیچ عنوان صدای آن را در نمی آوریم تا مبادا کسی از آنها استفاده نکند.
- رشد و پیشرفت اطرافیان نه تنها برای ما مهم نیست بلکه پیشرفت خود را در عقب نگه داشتن و ناآگاهی دیگران جستجو می کنیم.
- هر چه بدبختی و گرفتاری و ناکامی داریم به اشتراک می گذاریم و در مورد موفقیت ها و پیشرفت های خود اصلا با کسی صحبت نمی کنیم.
- از انجام هر عمل غیر اخلاقی مثل کپی کردن نتیجه زحمات دیگران و انتشار آنها به نام خود، اسکن کردن کتاب ها و تکثیر غیرقانونی آنها، انجام پروژه دانشجویی و نوشتن پایان نامه برای افراد دیگر و خلاصه هرکار خلافی که سود و منفعتی در آن باشد خودداری نمی کنیم و رعایت اخلاق و حقوق دیگران برای ما مهم نیست.
نسخه دو:
- زرنگی و پیشرفت واقعی را در این می بینیم که همه با هم رشد کنیم. بنابراین از هیچ راهنمایی و کمکی به دیگران مضایقه نمی کنیم.
- بجای تزریق روحیه ناامیدی و ناکامی، تجربیات مفید و موفقیت های خود را با دیگران به اشتراک می گذاریم تا بقیه هم از آن استفاده کنند و روحیه بگیرند.
- اگر قوی شدیم، روزهای ضعیف بودن خود را از یاد نمی بریم و به کسانی که مانند گذشته ما ضعیف هستند کمک می کنیم تا آنها هم قوی شوند.
- تحت هر شرایطی اخلاق را رعایت می کنیم و به حقوق دیگران احترام می گذاریم و به خاطر منافع شخصی خود دست به انجام هرکاری نمی زنیم.
* انتخاب نسخه زرنگ بودن به عهده مخاطب.
@KnowledgePlus
نسخه یک:
-هر چه را که یاد گرفته ایم و هر تجربه ای را که داریم برای خودمان نگه می داریم و مراقبت می کنیم که اصلا به کسی چیزی را یاد ندهیم.
- اگر کتاب یا جزوه یا سایت یا کانال تلگرام یا سایر موارد مشابهی را دیدیم که مفید هستند به هیچ عنوان صدای آن را در نمی آوریم تا مبادا کسی از آنها استفاده نکند.
- رشد و پیشرفت اطرافیان نه تنها برای ما مهم نیست بلکه پیشرفت خود را در عقب نگه داشتن و ناآگاهی دیگران جستجو می کنیم.
- هر چه بدبختی و گرفتاری و ناکامی داریم به اشتراک می گذاریم و در مورد موفقیت ها و پیشرفت های خود اصلا با کسی صحبت نمی کنیم.
- از انجام هر عمل غیر اخلاقی مثل کپی کردن نتیجه زحمات دیگران و انتشار آنها به نام خود، اسکن کردن کتاب ها و تکثیر غیرقانونی آنها، انجام پروژه دانشجویی و نوشتن پایان نامه برای افراد دیگر و خلاصه هرکار خلافی که سود و منفعتی در آن باشد خودداری نمی کنیم و رعایت اخلاق و حقوق دیگران برای ما مهم نیست.
نسخه دو:
- زرنگی و پیشرفت واقعی را در این می بینیم که همه با هم رشد کنیم. بنابراین از هیچ راهنمایی و کمکی به دیگران مضایقه نمی کنیم.
- بجای تزریق روحیه ناامیدی و ناکامی، تجربیات مفید و موفقیت های خود را با دیگران به اشتراک می گذاریم تا بقیه هم از آن استفاده کنند و روحیه بگیرند.
- اگر قوی شدیم، روزهای ضعیف بودن خود را از یاد نمی بریم و به کسانی که مانند گذشته ما ضعیف هستند کمک می کنیم تا آنها هم قوی شوند.
- تحت هر شرایطی اخلاق را رعایت می کنیم و به حقوق دیگران احترام می گذاریم و به خاطر منافع شخصی خود دست به انجام هرکاری نمی زنیم.
* انتخاب نسخه زرنگ بودن به عهده مخاطب.
@KnowledgePlus
معرفی دو سایت مفید درباره جزییات پروتکل usb:
https://www.usbmadesimple.co.uk/index.html
https://www.beyondlogic.org/usbnutshell/usb1.shtml
@KnowledgePlus
https://www.usbmadesimple.co.uk/index.html
https://www.beyondlogic.org/usbnutshell/usb1.shtml
@KnowledgePlus
گاهی با افرادی مواجه می شویم که یک محصول الکترونیکی را در حد نمونه سازی تولید کرده اند، اما سرمایه کافی برای تولید و بازاری را برای فروش آن محصول در اختیار ندارند. با این حال به دلایلی مانند ترس از کپی شدن طرحشان یا عدم اعتماد و تمایل برای مشارکت با افراد دیگر حاضر نیستند با کسانی که صاحب سرمایه و بازار فروش هستند در سود خود شریک شوند. در نهایت هم محصولشان هیچ وقت به مرحله تولید نمی رسد و در حد یک نمونه باقی می ماند. به نظر می رسد در چنین شرایطی پذیرفتن ریسک مشارکت با دیگران و قناعت به سود کمتر شاید بهتر از منتفی شدن اصل صورت مسئله و به اصطلاح خاک خوردن نتیجه ایده مورد نظر باشد.
@KnowledgePlus
@KnowledgePlus
در مورد فرمول محاسبه خازن خروجی پل دیود در پست های قبلی، ذکر این توضیح ضروری است که فرمول مذکور بصورت تقریبی و با فرض یکسوسازی ولتاژ سینوسی با فرکانس 50 هرتز توسط پل دیود نوشته شده است.
@KnowledgePlus
@KnowledgePlus
بیشتر افرادی که از وضع بد کار در رشته الکترونیک می نالند، کسانی هستند که از طریق انجام پروژه امرار معاش می کنند. برای چندمین بار تاکید می شود که انجام دادن پروژه به این معنا که فردای تحویل پروژه دوباره در نقطه صفر کاری قرار بگیریم و منتظر این باشیم که چه زمانی پروژه بعدی به ما محول شود، در درازمدت آخر و عاقبتی به لحاظ بازده مالی و امنیت شغلی نخواهد داشت. به انجام پروژه های تکی و موردی تنها باید به عنوان یک مرحله گذر نگاه کنیم.
@KnowledgePlus
@KnowledgePlus
مثالی از نحوه تعریف کردن یک بایت در union و دسترسی به آن بصورت بیتی و بایتی (کامپایلر IAR):
union
{
unsigned char flags_byte;
struct
{
unsigned char bit0:1;
unsigned char bit1:1;
unsigned char bit2:1;
unsigned char bit3:1;
unsigned char bit4:1;
unsigned char bit5:1;
unsigned char bit6:1;
unsigned char bit7:1;
}flags;
};
...
flags_byte=0xf5;
flags.bit3=1;
flags.bit7=0;
...
@KnowledgePlus
union
{
unsigned char flags_byte;
struct
{
unsigned char bit0:1;
unsigned char bit1:1;
unsigned char bit2:1;
unsigned char bit3:1;
unsigned char bit4:1;
unsigned char bit5:1;
unsigned char bit6:1;
unsigned char bit7:1;
}flags;
};
...
flags_byte=0xf5;
flags.bit3=1;
flags.bit7=0;
...
@KnowledgePlus
دو نوع بازار یابی برای معرفی و جا انداختن یک محصول جدید در مواجهه با یک صنعتگر سنتی:
1-مهندس کم تجربه و تازه کار :
مهندس: ما یک محصول جدید طراحی کرده ایم که در صورتی که آن را برای شما بسازیم باعث ارتقاء دستگاه های قدیمی شما خواهد شد.
صنعتگر: تخصص شما چیست؟
مهندس: ما همه نوع پروژه صنعتی و دانشجویی را انجام می دهیم.
صنعتگر: شرایط مالی شما به چه صورت است؟
مهندس: اول شصت درصد پیش پرداخت می گیریم و دستگاه را می سازیم و بعد از به جواب رسیدن بقیه مبلغ را دریافت می کنیم.
صنعتگر: نه ممنون من حاضر نیستم برای افراد تازه کاری که تخصص و شغل مشخصی ندارند و برای دستگاهی که هنوز ساخته نشده و معلوم نیست که اصولا جواب بدهد، وقت و هزینه خود را تلف کنم.
2-مهندس با تجربه و با پشتوانه مالی قوی :
مهندس: ما یک محصول جدید طراحی کرده و نمونه هایی از آن را ساخته ایم که در حال کار است و در صورتی که آن را تهیه کنید باعث ارتقاء دستگاه های قدیمی شما خواهد شد.
صنعتگر: تخصص شما چیست؟
مهندس: ما بصورت تخصصی روی تولید و تعمیرات دستگاه های نوع X فعالیت می کنیم.
صنعتگر: شرایط مالی شما به چه صورت است؟
مهندس: اگر مایل باشید برای مدت مشخصی یک نمونه از دستگاه مذکور را در اختیار شما قرار می دهیم و رسید می گیریم تا شما با آن کار کنید و اگر رضایت داشتید بعدا وجه آن را پرداخت کنید. در غیر اینصورت دستگاه را به ما عودت دهید.
صنعتگر: بسیار خوب حال که شما بصورت تخصصی فعالیت می کنید و دستگاه شما جواب خود را نزد همکاران پس داده و قرار نیست هزینه ای را در ابتدا دریافت کنید، یک نمونه را برای من بیاورید که در صورت رضایت علاوه بر پرداخت وجه آن تعداد دیگری را به شما سفارش خواهم داد.
@KnowledgePlus
1-مهندس کم تجربه و تازه کار :
مهندس: ما یک محصول جدید طراحی کرده ایم که در صورتی که آن را برای شما بسازیم باعث ارتقاء دستگاه های قدیمی شما خواهد شد.
صنعتگر: تخصص شما چیست؟
مهندس: ما همه نوع پروژه صنعتی و دانشجویی را انجام می دهیم.
صنعتگر: شرایط مالی شما به چه صورت است؟
مهندس: اول شصت درصد پیش پرداخت می گیریم و دستگاه را می سازیم و بعد از به جواب رسیدن بقیه مبلغ را دریافت می کنیم.
صنعتگر: نه ممنون من حاضر نیستم برای افراد تازه کاری که تخصص و شغل مشخصی ندارند و برای دستگاهی که هنوز ساخته نشده و معلوم نیست که اصولا جواب بدهد، وقت و هزینه خود را تلف کنم.
2-مهندس با تجربه و با پشتوانه مالی قوی :
مهندس: ما یک محصول جدید طراحی کرده و نمونه هایی از آن را ساخته ایم که در حال کار است و در صورتی که آن را تهیه کنید باعث ارتقاء دستگاه های قدیمی شما خواهد شد.
صنعتگر: تخصص شما چیست؟
مهندس: ما بصورت تخصصی روی تولید و تعمیرات دستگاه های نوع X فعالیت می کنیم.
صنعتگر: شرایط مالی شما به چه صورت است؟
مهندس: اگر مایل باشید برای مدت مشخصی یک نمونه از دستگاه مذکور را در اختیار شما قرار می دهیم و رسید می گیریم تا شما با آن کار کنید و اگر رضایت داشتید بعدا وجه آن را پرداخت کنید. در غیر اینصورت دستگاه را به ما عودت دهید.
صنعتگر: بسیار خوب حال که شما بصورت تخصصی فعالیت می کنید و دستگاه شما جواب خود را نزد همکاران پس داده و قرار نیست هزینه ای را در ابتدا دریافت کنید، یک نمونه را برای من بیاورید که در صورت رضایت علاوه بر پرداخت وجه آن تعداد دیگری را به شما سفارش خواهم داد.
@KnowledgePlus
مشاهده ای از ضرر هنگفت ناشی از قطعات تقلبی:
در سطح بازار مشاهده شد که شخصی یک کانتینر برد از کشور چین وارد کرده (نوع برد به لحاظ امانت داری ذکر نمی شود) و میکروکنترلرهایی که روی برد از آنها استفاده شده به دلیل تقلبی بودن یا reject بودن دارای اشکال سخت افزاری هستند به نحوی که تغییر یک پین موجب تاثیر روی پین دیگر و عملکرد ناخواسته برد می شود. به همین دلیل مشکلات بزرگی برای شخص وارد کننده ایجاد شده بود.
@KnowledgePlus
در سطح بازار مشاهده شد که شخصی یک کانتینر برد از کشور چین وارد کرده (نوع برد به لحاظ امانت داری ذکر نمی شود) و میکروکنترلرهایی که روی برد از آنها استفاده شده به دلیل تقلبی بودن یا reject بودن دارای اشکال سخت افزاری هستند به نحوی که تغییر یک پین موجب تاثیر روی پین دیگر و عملکرد ناخواسته برد می شود. به همین دلیل مشکلات بزرگی برای شخص وارد کننده ایجاد شده بود.
@KnowledgePlus
تجربه استفاده از تاچ های مقاومتی نصب شده روی LCD های 240x128 به تعداد زیاد نشان می دهد که بعد از چند سال استفاده مداوم از این تاچ ها در محیط صنعتی، میزان خرابی آنها بسیار کم بوده و هنوز مشغول کار هستند.
@KnowledgePlus
@KnowledgePlus
نکته ای در کد نویسی به زبان C:
در صورتی که تعداد متغیرهای Global در برنامه زیاد باشد، برای جلوگیری از شلوغ شدن کد می توانیم تمام این متغیرها را در یک فایل جداگانه قرار دهیم و این فایل را در ابتدای فایل اصلی include کنیم. نکته حائز اهمیت در این روش این است که فایل حاوی متغیرها نباید به پروژه add شود. در این شرایط لازم نیست که متغیرها در فایل اصلی بصورت extern تعریف شوند و تنها با include کردن فایلی که متغیرها در آن تعریف شده اند، این متغیرها در فایل اصلی قابل شناسایی هستند.
@KnowledgePlus
در صورتی که تعداد متغیرهای Global در برنامه زیاد باشد، برای جلوگیری از شلوغ شدن کد می توانیم تمام این متغیرها را در یک فایل جداگانه قرار دهیم و این فایل را در ابتدای فایل اصلی include کنیم. نکته حائز اهمیت در این روش این است که فایل حاوی متغیرها نباید به پروژه add شود. در این شرایط لازم نیست که متغیرها در فایل اصلی بصورت extern تعریف شوند و تنها با include کردن فایلی که متغیرها در آن تعریف شده اند، این متغیرها در فایل اصلی قابل شناسایی هستند.
@KnowledgePlus
نقل یک خاطره عبرت آموز:
در سال های دور در دهه 70 و در زمانی که هنوز استفاده از میکروکنترلرها مطرح نبود، پروژه ای انجام شد که قرار بود توسط یک منبع جریان، سه جریان با مقادیر 80 و 180 و 1180 میلی آمپر به باری تزریق شود و مقدار جریان هم روی تعدادی 7segment نمایش داده شود. این مدار با روش های آنالوگ طراحی و تست شد و برای نمایش جریان هم بعد از تبدیل آن از طریق مدارات مناسب به ولتاژ، از یک آی سی ولت متر به نام ICL7107 استفاده شد. بعد از تحویل این مدار مجموعه سفارش دهنده پروژه اعلام کردند که جریان نمایش داده شده قابل قبول نیست و دارای کمی تغییرات است. در حالی که یک گروه رقیب همین پروژه را انجام داده اند، اما تغییری در جریان خروجی روی صفحه نمایش وجود ندارد و جریان ها کاملا تثبیت شده هستند. بنابراین پروژه مجددا باز پس گرفته شد و این بار هر تکنیک مداری و به اصطلاح فوت و فن کوزه گری که برای تثبیت جریان به ذهن می رسید اعمال شد تا جریان در هر سه مرحله تا حد ممکن ثابت باشد و تغییری نکند. بعد از اعمال تمهیدات مورد نظر در مدارات آنالوگ، تغییرات جریان نمایش داده شده تقریبا به صفر رسید و فقط گاهی ممکن بود یک واحد تغییر کند که با توجه به شرایط مدار و تغییرات دما و مانند آن چنین تغییراتی قابل قبول بود. اما بعد از تحویل دوباره پروژه باز اعلام شد که هر چند تغییرات بسیار بسیار کم شده است. اما در پروژه تحویل داده شده توسط مجموعه رقیب، همین تغییرات بسیار کم در حد یک در هزار هم وجود ندارد و کاملا ثابت است و اگر می خواهید پروژه شما پذیرفته شود باید به عملکردی شبیه پروژه رقیب برسید. در این مرحله این سوال ایجاد شد که آخر چطور ممکن است هیچ تغییری در جریان وجود نداشته باشد و کاملا ثابت باشد و رقبا چه تکنیکی را از نظر طراحی مدار بکار برده اند که به چنین کیفیتی رسیده اند؟ ضمن اینکه در این پروژه نه چنین دقتی مهم بود و نه امکان سنجش آن با توجه به امکانات مجموعه سفارش دهنده پروژه برای آنها وجود داشت. سپس این امکان مطرح شد که نکند در پروژه رقبا بجای آنکه واقعا جریان اندازه گیری و نمایش داده شود، با دو 7segment عدد 80 را بصورت دائمی نشان می دهند و با تغییر سلکتور دستگاه، سگمنت های متناظر با دو عدد 1 را در دو 7segment دیگر برای نمایش 180 و 1180 روشن می کنند. با بررسی بیشتر تقریبا یقین حاصل شد که در مدار رقیب از همین روش استفاده شده و بحث اندازه گیری واقعی جریان مطرح نیست و ملاک مجموعه سفارش دهنده هم بجای توجه به عملکرد واقعی مدار، اعداد نمایش داده شده روی 7segment ها است. بنابراین به دلیل وجود اطمینان از صحت جریان های تولید شده مطابق تست های قبلی، بخش ولت متر و اندازه گیری جریان از مدار حذف شد و از همان روش روشن کردن سگمنت ها بجای نمایش جریان واقعی استفاده شد و پروژه مجددا تحویل داده شد. با شرایط جدید مجموعه سفارش دهنده پروژه اعلام کردند که این همان کیفیت عملکردی است که مد نظر آنها بوده و پروژه را تائید کردند. و در این جریانات تجربه و عبرت هایی نهفته بود.
@KnowledgePlus
در سال های دور در دهه 70 و در زمانی که هنوز استفاده از میکروکنترلرها مطرح نبود، پروژه ای انجام شد که قرار بود توسط یک منبع جریان، سه جریان با مقادیر 80 و 180 و 1180 میلی آمپر به باری تزریق شود و مقدار جریان هم روی تعدادی 7segment نمایش داده شود. این مدار با روش های آنالوگ طراحی و تست شد و برای نمایش جریان هم بعد از تبدیل آن از طریق مدارات مناسب به ولتاژ، از یک آی سی ولت متر به نام ICL7107 استفاده شد. بعد از تحویل این مدار مجموعه سفارش دهنده پروژه اعلام کردند که جریان نمایش داده شده قابل قبول نیست و دارای کمی تغییرات است. در حالی که یک گروه رقیب همین پروژه را انجام داده اند، اما تغییری در جریان خروجی روی صفحه نمایش وجود ندارد و جریان ها کاملا تثبیت شده هستند. بنابراین پروژه مجددا باز پس گرفته شد و این بار هر تکنیک مداری و به اصطلاح فوت و فن کوزه گری که برای تثبیت جریان به ذهن می رسید اعمال شد تا جریان در هر سه مرحله تا حد ممکن ثابت باشد و تغییری نکند. بعد از اعمال تمهیدات مورد نظر در مدارات آنالوگ، تغییرات جریان نمایش داده شده تقریبا به صفر رسید و فقط گاهی ممکن بود یک واحد تغییر کند که با توجه به شرایط مدار و تغییرات دما و مانند آن چنین تغییراتی قابل قبول بود. اما بعد از تحویل دوباره پروژه باز اعلام شد که هر چند تغییرات بسیار بسیار کم شده است. اما در پروژه تحویل داده شده توسط مجموعه رقیب، همین تغییرات بسیار کم در حد یک در هزار هم وجود ندارد و کاملا ثابت است و اگر می خواهید پروژه شما پذیرفته شود باید به عملکردی شبیه پروژه رقیب برسید. در این مرحله این سوال ایجاد شد که آخر چطور ممکن است هیچ تغییری در جریان وجود نداشته باشد و کاملا ثابت باشد و رقبا چه تکنیکی را از نظر طراحی مدار بکار برده اند که به چنین کیفیتی رسیده اند؟ ضمن اینکه در این پروژه نه چنین دقتی مهم بود و نه امکان سنجش آن با توجه به امکانات مجموعه سفارش دهنده پروژه برای آنها وجود داشت. سپس این امکان مطرح شد که نکند در پروژه رقبا بجای آنکه واقعا جریان اندازه گیری و نمایش داده شود، با دو 7segment عدد 80 را بصورت دائمی نشان می دهند و با تغییر سلکتور دستگاه، سگمنت های متناظر با دو عدد 1 را در دو 7segment دیگر برای نمایش 180 و 1180 روشن می کنند. با بررسی بیشتر تقریبا یقین حاصل شد که در مدار رقیب از همین روش استفاده شده و بحث اندازه گیری واقعی جریان مطرح نیست و ملاک مجموعه سفارش دهنده هم بجای توجه به عملکرد واقعی مدار، اعداد نمایش داده شده روی 7segment ها است. بنابراین به دلیل وجود اطمینان از صحت جریان های تولید شده مطابق تست های قبلی، بخش ولت متر و اندازه گیری جریان از مدار حذف شد و از همان روش روشن کردن سگمنت ها بجای نمایش جریان واقعی استفاده شد و پروژه مجددا تحویل داده شد. با شرایط جدید مجموعه سفارش دهنده پروژه اعلام کردند که این همان کیفیت عملکردی است که مد نظر آنها بوده و پروژه را تائید کردند. و در این جریانات تجربه و عبرت هایی نهفته بود.
@KnowledgePlus
یک تمرین کاربردی برنامه نویسی میکروکنترلر:
با اتصال یک صفحه کلید ps2 و یک LCD کاراکتری به میکروکنترلر، برنامه ای برای ذخیره کردن پسوردهای مورد استفاده خود جهت دسترسی به شبکه های اجتماعی و سایت ها و مانند آن را بنویسید. روال کار می تواند به این صورت باشد که در ابتدا از طریق صفحه کلید یک پسورد اصلی دریافت شود و در صورت صحیح بودن آن، قابلیت مشاهده و تصحیح و ذخیره سازی تعدادی پسورد به همراه نام سایت های مربوطه روی LCD وجود داشته باشد.
@KnowledgePlus
با اتصال یک صفحه کلید ps2 و یک LCD کاراکتری به میکروکنترلر، برنامه ای برای ذخیره کردن پسوردهای مورد استفاده خود جهت دسترسی به شبکه های اجتماعی و سایت ها و مانند آن را بنویسید. روال کار می تواند به این صورت باشد که در ابتدا از طریق صفحه کلید یک پسورد اصلی دریافت شود و در صورت صحیح بودن آن، قابلیت مشاهده و تصحیح و ذخیره سازی تعدادی پسورد به همراه نام سایت های مربوطه روی LCD وجود داشته باشد.
@KnowledgePlus
نکته ای در مورد مد CTC در تایمر کانترهای AVR:
با توجه به immediate و فوری بودن تغییر مقدار رجیستر مقایسه در مد CTC که نقش TOP را به عهده دارد، تغییر این رجیستر می تواند منجر به ایجاد خطای ناخواسته در یک سیکل تایمر شود. برای درک بهتر، فرض کنید تایمر شماره 1 در مد CTC قرار داشته باشد و مقدار فعلی تایمر برابر 101 و OCR1A برابر 200 باشد. در این وضعیت اگر مقدار 100 در OCR1A نوشته شود، به دلیل تاثیر فوری این تغییر مقدار و بزرگتر بودن مقدار تایمر کانتر از مقدار جدید رجیستر OCR1A، تایمر به شمارش خود از 101 تا 65535 ادامه می دهد و بعد مجددا صفر می شود تا در سیکل بعدی مقدار 100 به عنوان حداکثر مقدار تایمر کانتر اثر گذار باشد. با چنین فرضی تعداد کلاک لازم برای صفر شدن تایمر بسیار بیشتر از مقدار مورد انتظار خواهد بود که باعث ایجاد خطا می شود. برای بر طرف کردن این مسئله اگر در تایمری از میکروکنترلر مورد استفاده مد fast pwm با مقدار TOP قابل تنظیم وجود داشته باشد، برای اجتناب از مشکل فوق بجای مد CTC می توان از این نوع fast pwm استفاده کرد. زیرا در مد fast pwm مقدار دهی به TOP با مکانیزم double buffering انجام می شود و بصورت immediate نیست و در نتیجه تغییر مقدار TOP تا ابتدای سیکل بعد به تاخیر خواهد افتاد و مشکل مذکور بوجود نخواهد آمد. به عنوان مثال مدهای 14 و 15 در تایمر کانترهای 1 و 3 در mega64 دارای TOP متغیر هستند و می توانند به این منظور مورد استفاده قرار بگیرند.
@KnowledgePlus
با توجه به immediate و فوری بودن تغییر مقدار رجیستر مقایسه در مد CTC که نقش TOP را به عهده دارد، تغییر این رجیستر می تواند منجر به ایجاد خطای ناخواسته در یک سیکل تایمر شود. برای درک بهتر، فرض کنید تایمر شماره 1 در مد CTC قرار داشته باشد و مقدار فعلی تایمر برابر 101 و OCR1A برابر 200 باشد. در این وضعیت اگر مقدار 100 در OCR1A نوشته شود، به دلیل تاثیر فوری این تغییر مقدار و بزرگتر بودن مقدار تایمر کانتر از مقدار جدید رجیستر OCR1A، تایمر به شمارش خود از 101 تا 65535 ادامه می دهد و بعد مجددا صفر می شود تا در سیکل بعدی مقدار 100 به عنوان حداکثر مقدار تایمر کانتر اثر گذار باشد. با چنین فرضی تعداد کلاک لازم برای صفر شدن تایمر بسیار بیشتر از مقدار مورد انتظار خواهد بود که باعث ایجاد خطا می شود. برای بر طرف کردن این مسئله اگر در تایمری از میکروکنترلر مورد استفاده مد fast pwm با مقدار TOP قابل تنظیم وجود داشته باشد، برای اجتناب از مشکل فوق بجای مد CTC می توان از این نوع fast pwm استفاده کرد. زیرا در مد fast pwm مقدار دهی به TOP با مکانیزم double buffering انجام می شود و بصورت immediate نیست و در نتیجه تغییر مقدار TOP تا ابتدای سیکل بعد به تاخیر خواهد افتاد و مشکل مذکور بوجود نخواهد آمد. به عنوان مثال مدهای 14 و 15 در تایمر کانترهای 1 و 3 در mega64 دارای TOP متغیر هستند و می توانند به این منظور مورد استفاده قرار بگیرند.
@KnowledgePlus