به دوستانی که در مورد انتخاب مسیر صحیح برای کسب درآمد در رشته الکترونیک دچار سردرگمی هستند توصیه می شود که بیشتر از آنکه به دنبال توسعه اطلاعات خود در زمینه های متفاوت و پراکنده باشید، وقت و انرژی تان را برای یافتن کاربردهایی متناسب با تخصص جاری خود صرف کنید. به بیان دیگر اولویت اول خود را یافتن کاربرد برای آنچه که بلد هستید قرار دهید و بعد در این راستا اگر لازم شد اطلاعات خود را بصورت هدفمند توسعه بدهید.
@KnowledgePlus
@KnowledgePlus
نکته ای در مورد حافظه های eeprom:
زمان لازم برای نوشتن اطلاعات در حافظه های eeprom معمولا بسیار طولانی تر از زمان لازم برای خواندن اطلاعات از این نوع حافظه ها است. بنابراین در هنگام نوشتن اطلاعات در eeprom باید فرصت کافی برای تکمیل پروسه نوشتن در اختیار حافظه قرار داده شود.
@KnowledgePlus
زمان لازم برای نوشتن اطلاعات در حافظه های eeprom معمولا بسیار طولانی تر از زمان لازم برای خواندن اطلاعات از این نوع حافظه ها است. بنابراین در هنگام نوشتن اطلاعات در eeprom باید فرصت کافی برای تکمیل پروسه نوشتن در اختیار حافظه قرار داده شود.
@KnowledgePlus
سوال برنامه نویسی:
در برنامه نویسی میکروکنترلرها برای عملیاتی مانند تنظیم پارامترها در کنترلرهای صنعتی و مانند آن در مواقعی لازم است که یکی از ارقام یک عدد در مبنای ده را استخراج کنیم. مثلا در عدد 1234567 بتوانیم هر یک از رقم های دلخواه ( مثلا رقم ششم که معادل 2 است) را بصورت مجزا بر حسب ارزش مکانی رقم بدست آوریم . مخاطبین به عنوان تمرین می توانند روی این مسئله فکر کنند که با چه روش هایی در برنامه نویسی می توان این عملیات را انجام داد.
@KnowledgePlus
در برنامه نویسی میکروکنترلرها برای عملیاتی مانند تنظیم پارامترها در کنترلرهای صنعتی و مانند آن در مواقعی لازم است که یکی از ارقام یک عدد در مبنای ده را استخراج کنیم. مثلا در عدد 1234567 بتوانیم هر یک از رقم های دلخواه ( مثلا رقم ششم که معادل 2 است) را بصورت مجزا بر حسب ارزش مکانی رقم بدست آوریم . مخاطبین به عنوان تمرین می توانند روی این مسئله فکر کنند که با چه روش هایی در برنامه نویسی می توان این عملیات را انجام داد.
@KnowledgePlus
نقل یک تجربه عملی:
مشاهده شده که خازن های الکترولیتی که مدت زمان زیادی از تولید آنها گذشته و در محیط با دمای بالا نگهداری شده اند، بدون اینکه مورد استفاده قرار گرفته باشند در تعداد بالا باد کرده و از درون فاسد شده اند. بنابراین به تاریخ تولید خازن ها توجه کنید.
@KnowledgePlus
مشاهده شده که خازن های الکترولیتی که مدت زمان زیادی از تولید آنها گذشته و در محیط با دمای بالا نگهداری شده اند، بدون اینکه مورد استفاده قرار گرفته باشند در تعداد بالا باد کرده و از درون فاسد شده اند. بنابراین به تاریخ تولید خازن ها توجه کنید.
@KnowledgePlus
تاثیر متفاوت ولتاژهای dc و ac روی کنتاکت های رله ها و سوییچ ها:
از آنجایی که میزان آسیب وارد شده به سطح کنتاکت ها بر اثر ایجاد جرقه در هنگام سوییچ کردن ولتاژهای dc بیشتر از آسیب ناشی از سوییچ کردن ولتازهای ac در همان مقدار ولتاژ است، بنابراین ولتاژ dc مجاز ذکر شده در مشخصات رله به ازای یک جریان معین معمولا بسیار کمتر از ولتاژ ac مجاز برای همان رله است (مثلا 10Aبه ازای ولتاژهای 240Vac یا 30Vdc).
@KnowledgePlus
از آنجایی که میزان آسیب وارد شده به سطح کنتاکت ها بر اثر ایجاد جرقه در هنگام سوییچ کردن ولتاژهای dc بیشتر از آسیب ناشی از سوییچ کردن ولتازهای ac در همان مقدار ولتاژ است، بنابراین ولتاژ dc مجاز ذکر شده در مشخصات رله به ازای یک جریان معین معمولا بسیار کمتر از ولتاژ ac مجاز برای همان رله است (مثلا 10Aبه ازای ولتاژهای 240Vac یا 30Vdc).
@KnowledgePlus
یک روش سریع و زود بازده برای استفاده از قابلیت های سیستم عامل در کنار امکانات سخت افزاری میکروکنترلر که علیرغم قدیمی بودن، برای بسیاری از کاربردهای صنعتی به خوبی جواب می دهد و پیاده سازی آن هم بسیار ساده تر و سریع تر از خیلی از گزینه های دیگر است، استفاده از پورت RS232 در PC و اتصال آن به میکروکنترلر مورد نظر است. در این روش با نرم افزارهای سطح بالایی مانند VB می توان واسط کاربری لازم را ایجاد کرد و علاوه بر استفاده از امکانات متنوع سیستم عامل، بصورت همزمان می توان ازامکانات سخت افزاری میکروکنترلر مانند pwm و adc و spi و ... هم استفاده کرد.
@KnowledgePlus
@KnowledgePlus
اهمیت فاکتور زمان در انتخاب ابزارهای سخت افزاری و نرم افزاری برای انجام پروژه های الکترونیک:
یکی از موارد مهمی که باید در انتخاب ابزارهای مختلف سخت افزاری و نرم افزاری برای انجام یک پروژه و محاسبه هزینه تمام شده مد نظر قرار داده شود، زمان لازم برای به نتیجه رساندن آن پروژه است. برای افراد و مجموعه هایی که وقتشان ارزش دارد، صرف زمان بیشتر به معنای هزینه بالاتر است. اما بسیار مشاهده می شود که برخی افراد کم تجربه، به آن میزان که به هزینه و قیمت قطعات و ابزارها توجه می کنند، زمان لازم برای جواب گرفتن از آن قطعات و ابزارها را در محاسبات خود لحاظ نمی کنند. در همین رابطه ممکن است برای به نتیجه رساندن یک پروژه در مواردی استفاده از قطعات گران تر به دلیل نیاز به صرف زمان کمتر در عمل به صرفه تر باشد. بنابراین در انجام یک پروژه یا تولید در محاسبات هزینه ها باید فاکتور زمان مورد نیاز برای جواب گرفتن از هر ابزار سخت افزاری و نرم افزاری و میزان توجیه پذیر بودن آن را در کنار سایر هزینه ها در نظر بگیریم.
@KnowledgePlus
یکی از موارد مهمی که باید در انتخاب ابزارهای مختلف سخت افزاری و نرم افزاری برای انجام یک پروژه و محاسبه هزینه تمام شده مد نظر قرار داده شود، زمان لازم برای به نتیجه رساندن آن پروژه است. برای افراد و مجموعه هایی که وقتشان ارزش دارد، صرف زمان بیشتر به معنای هزینه بالاتر است. اما بسیار مشاهده می شود که برخی افراد کم تجربه، به آن میزان که به هزینه و قیمت قطعات و ابزارها توجه می کنند، زمان لازم برای جواب گرفتن از آن قطعات و ابزارها را در محاسبات خود لحاظ نمی کنند. در همین رابطه ممکن است برای به نتیجه رساندن یک پروژه در مواردی استفاده از قطعات گران تر به دلیل نیاز به صرف زمان کمتر در عمل به صرفه تر باشد. بنابراین در انجام یک پروژه یا تولید در محاسبات هزینه ها باید فاکتور زمان مورد نیاز برای جواب گرفتن از هر ابزار سخت افزاری و نرم افزاری و میزان توجیه پذیر بودن آن را در کنار سایر هزینه ها در نظر بگیریم.
@KnowledgePlus
یک نکته مهم و فنی درباره تایمرهای میکروکنترلرها:
در صورت نیاز به تغییر Prescaler در یک تایمر، در یک سری از کاربردها بسیار اهمیت دارد که این تغییر وضعیت بصورت سنکرون با آغاز سیکل انجام شود تا زمان در نظر گرفته شده برای هر سیکل توام با خطا نباشد. در کاربردهایی با تایمینگ دقیق که از Prescaler متناسب با هر سیکل تایمر استفاده می شود و مقدار تقسیمات Prescaler در سیکل های مختلف تغییر می کند، رعایت این مسئله برای برقراری زمان بندی صحیح ضروری است.
@KnowledgePlus
در صورت نیاز به تغییر Prescaler در یک تایمر، در یک سری از کاربردها بسیار اهمیت دارد که این تغییر وضعیت بصورت سنکرون با آغاز سیکل انجام شود تا زمان در نظر گرفته شده برای هر سیکل توام با خطا نباشد. در کاربردهایی با تایمینگ دقیق که از Prescaler متناسب با هر سیکل تایمر استفاده می شود و مقدار تقسیمات Prescaler در سیکل های مختلف تغییر می کند، رعایت این مسئله برای برقراری زمان بندی صحیح ضروری است.
@KnowledgePlus
تمرین برنامه نویسی میکروکنترلر:
در سخت افزاری مبتنی بر هر میکروکنترلر دلخواه و با سه عدد کلید که آنها را set و up و down نامگذاری می کنیم و 5 عدد 7segment که با روش Multiplex به پورت های میکروکنترلر متصل هستند، برنامه ای بنویسید که اعدادی در محدوده مشخص (مثلا 178 تا 98432 با مقدار اولیه 178) روی رقم ها با این سه کلید به این صورت قابل تنظیم باشند که در هر لحظه یکی از رقم ها چشمک بزند و با کلید های up و down بتوان آن رقم را تنظیم کرد. فشار دادن کلید set باعث تغییر مکان رقم قابل تنظیم و در حال چشمک زدن از راست به چپ می شود و در انتها مکان نما دوباره به سمت راست منتقل می شود. حد مجاز هر رقم باید به گونه ای باشد که عدد کلی از محدوده حداکثر و حداقل مجاز فراتر نرود. مثلا در محدوده ذکر شده در این صورت مسئله اگر عدد جاری 88431 باشد و رقم سمت راست در حال تنظیم باشد، محدوده مجاز این رقم بین 0 تا 9 خواهد بود (معادل با 88430 تا 88439). اما اگر عدد کلی 98431 باشد، در این حالت محدوده مجاز برای رقم سمت راست فقط 0 تا 2 خواهد بود (معادل با 98430 تا 98432). یا به عنوان مثال دیگر اگر عدد جاری 190 باشد و رقم دوم از سمت راست در حال تنظیم باشد، فقط اعداد 8 و 9 برای این رقم مجاز هستند و در غیر این صورت مجموعه کل رقم ها از مقدار حداقل در این مثال کوچک تر خواهد شد. صفرهای سمت چپ عدد در این مسئله باید نمایش داده شوند و مثلا 178 بصورت 00178 نمایش داده می شود.
@KnowledgePlus
در سخت افزاری مبتنی بر هر میکروکنترلر دلخواه و با سه عدد کلید که آنها را set و up و down نامگذاری می کنیم و 5 عدد 7segment که با روش Multiplex به پورت های میکروکنترلر متصل هستند، برنامه ای بنویسید که اعدادی در محدوده مشخص (مثلا 178 تا 98432 با مقدار اولیه 178) روی رقم ها با این سه کلید به این صورت قابل تنظیم باشند که در هر لحظه یکی از رقم ها چشمک بزند و با کلید های up و down بتوان آن رقم را تنظیم کرد. فشار دادن کلید set باعث تغییر مکان رقم قابل تنظیم و در حال چشمک زدن از راست به چپ می شود و در انتها مکان نما دوباره به سمت راست منتقل می شود. حد مجاز هر رقم باید به گونه ای باشد که عدد کلی از محدوده حداکثر و حداقل مجاز فراتر نرود. مثلا در محدوده ذکر شده در این صورت مسئله اگر عدد جاری 88431 باشد و رقم سمت راست در حال تنظیم باشد، محدوده مجاز این رقم بین 0 تا 9 خواهد بود (معادل با 88430 تا 88439). اما اگر عدد کلی 98431 باشد، در این حالت محدوده مجاز برای رقم سمت راست فقط 0 تا 2 خواهد بود (معادل با 98430 تا 98432). یا به عنوان مثال دیگر اگر عدد جاری 190 باشد و رقم دوم از سمت راست در حال تنظیم باشد، فقط اعداد 8 و 9 برای این رقم مجاز هستند و در غیر این صورت مجموعه کل رقم ها از مقدار حداقل در این مثال کوچک تر خواهد شد. صفرهای سمت چپ عدد در این مسئله باید نمایش داده شوند و مثلا 178 بصورت 00178 نمایش داده می شود.
@KnowledgePlus
برای بدست آوردن رقم مورد نظر در سوال مطرح شده در پست:
https://telegram.me/KnowledgePlus/374
می توان از چندین روش استفاده کرد که یکی از آنها محاسبه خارج قسمت تقسیم عدد مذکور به ده به توان مرتبه رقم و در مرحله بعد محاسبه باقیمانده تقسیم این عدد به ده است. مثلا اگر عدد 1234567 را بر 10 به توان 5 یا 100000 تقسیم کنیم، خارج قسمت 12 خواهد شد و باقیمانده تقسیم 12 به 10 برابر با 2 خواهد بود. برای محاسبه ده به توان مکان رقم در عدد با سرعت بالا می توانیم از یک آرایه استفاده کنیم. اگر فرض کنیم یک عدد حداکثر با 8 زقم غیر صفر در متغیر data قرار داشته باشد و مرتبه رقم در عدد (با شروع از 0) در متغیر digit_position باشد، با فرض کدنویسی در IAR برای AVR، تابع get_digit رقم دلخواه را بر می گرداند:
unsigned long __flash digit_mask[]={1,10,100,1000,10000,100000UL,1000000UL,10000000UL};
...
unsigned char get_digit(unsigned long data,unsigned char digit_position)
{ return((data/digit_mask[digit_position])%10);}
@KnowledgePlus
https://telegram.me/KnowledgePlus/374
می توان از چندین روش استفاده کرد که یکی از آنها محاسبه خارج قسمت تقسیم عدد مذکور به ده به توان مرتبه رقم و در مرحله بعد محاسبه باقیمانده تقسیم این عدد به ده است. مثلا اگر عدد 1234567 را بر 10 به توان 5 یا 100000 تقسیم کنیم، خارج قسمت 12 خواهد شد و باقیمانده تقسیم 12 به 10 برابر با 2 خواهد بود. برای محاسبه ده به توان مکان رقم در عدد با سرعت بالا می توانیم از یک آرایه استفاده کنیم. اگر فرض کنیم یک عدد حداکثر با 8 زقم غیر صفر در متغیر data قرار داشته باشد و مرتبه رقم در عدد (با شروع از 0) در متغیر digit_position باشد، با فرض کدنویسی در IAR برای AVR، تابع get_digit رقم دلخواه را بر می گرداند:
unsigned long __flash digit_mask[]={1,10,100,1000,10000,100000UL,1000000UL,10000000UL};
...
unsigned char get_digit(unsigned long data,unsigned char digit_position)
{ return((data/digit_mask[digit_position])%10);}
@KnowledgePlus
توانایی در راه اندازی سخت افزارهای یک میکروکنترلر تنها جزء کوچکی از مهارت های لازم برای انجام پروژه های سنگین صنعتی و با ارزش افزوده بالا است و در این گونه پروژه ها معمولا پیاده سازی الگوریتم ها و فلوچارت های پیچیده است که بخش اصلی کار را تشکیل می دهد.
@KnowledgePlus
@KnowledgePlus
نکته ای در کدنویسی:
فرض کنیم که در یک سیستم مبتنی بر AVR با کلاک 16MHz به دلیل نیاز صورت مسئله لازم باشد توسط CPU به یکی از وقفه ها به تعداد 160.000 بار در ثانیه پاسخ داده شود و روتین آن وقفه اجرا شود. حال با توجه به اینکه CPU برای پاسخ دادن به وقفه مورد نظر تنها به میزان 100 سیکل کلاک فرصت دارد، بنابراین برای انجام عملیات متناوبی که از اولویت زمانی بالایی برخوردار نیستند و کمی تاخیر در حد چند کلاک مشکلی را ایجاد نمی کند (مانند اسکن کردن کلید ها یا Refresh کردن 7segment ها و مانند آن) بجای استفاده از وقفه یک تایمر برای انجام این نوع عملیات باید به روش Polling عمل شود و با بررسی فلگ وقفه مقایسه یا سرریز تایمر در حلقه اصلی، در فواصل زمانی مشخص روتین های لازم بصورت پریودیک اجرا شود. به بیان دیگر زمانی که لازم است اکثر وقت CPU برای انجام وقفه های Time critical و با تعداد دفعات وقوع بسیار بالا سپری شود، باید از فعال کردن وقفه برای عملیاتی که Time critical نیستند و توسط Polling هم قابل انجام هستند خودداری شود تا CPU توان پاسخگویی به انجام همه عملیات را داشته باشد.
@KnowledgePlus
فرض کنیم که در یک سیستم مبتنی بر AVR با کلاک 16MHz به دلیل نیاز صورت مسئله لازم باشد توسط CPU به یکی از وقفه ها به تعداد 160.000 بار در ثانیه پاسخ داده شود و روتین آن وقفه اجرا شود. حال با توجه به اینکه CPU برای پاسخ دادن به وقفه مورد نظر تنها به میزان 100 سیکل کلاک فرصت دارد، بنابراین برای انجام عملیات متناوبی که از اولویت زمانی بالایی برخوردار نیستند و کمی تاخیر در حد چند کلاک مشکلی را ایجاد نمی کند (مانند اسکن کردن کلید ها یا Refresh کردن 7segment ها و مانند آن) بجای استفاده از وقفه یک تایمر برای انجام این نوع عملیات باید به روش Polling عمل شود و با بررسی فلگ وقفه مقایسه یا سرریز تایمر در حلقه اصلی، در فواصل زمانی مشخص روتین های لازم بصورت پریودیک اجرا شود. به بیان دیگر زمانی که لازم است اکثر وقت CPU برای انجام وقفه های Time critical و با تعداد دفعات وقوع بسیار بالا سپری شود، باید از فعال کردن وقفه برای عملیاتی که Time critical نیستند و توسط Polling هم قابل انجام هستند خودداری شود تا CPU توان پاسخگویی به انجام همه عملیات را داشته باشد.
@KnowledgePlus
نقل یک تجربه:
بسیاری از Mosfet های ارزان موجود در بازار تقلبی هستند و حد تحمل و مشخصات آنها به هیچ وجه در عمل با نمونه های اصلی مطابقت ندارد.
@KnowledgePlus
بسیاری از Mosfet های ارزان موجود در بازار تقلبی هستند و حد تحمل و مشخصات آنها به هیچ وجه در عمل با نمونه های اصلی مطابقت ندارد.
@KnowledgePlus
دقت موتورهای Encoder دار:
با توجه به اینکه تغییرات دو فاز خروجی Encoder در هر سیکل جمعا دارای 4 تغییر وضعیت و لبه است، دقت در موتورهای Encoder دار در صورت استفاده از تمام لبه های سیگنال ها 4 برابر Resolution ذکر شده برای Encoder بر حسب پالس است. به همین دلیل در سرو موتورهای صنعتی در مد Position با فرض 1 بودن ضریب گیربکس الکترونیکی، تعداد پالسهای لازم برای چرخش موتور به میزان یک دور برابر با 4 برابر دقت نامی Encoder متصل به موتور است. به عنوان مثال در سرو موتوری با Encoder از نوع 2500 پالس و اگر ضریب گیربکس الکترونیکی 1 باشد، باید 10000 پالس اعمال شود تا موتور یک دور بچرخد. در مورد گیربکس الکترونیک قبلا در پست زیر توضیح داده شده است:
https://telegram.me/KnowledgePlus/72
@KnowledgePlus
با توجه به اینکه تغییرات دو فاز خروجی Encoder در هر سیکل جمعا دارای 4 تغییر وضعیت و لبه است، دقت در موتورهای Encoder دار در صورت استفاده از تمام لبه های سیگنال ها 4 برابر Resolution ذکر شده برای Encoder بر حسب پالس است. به همین دلیل در سرو موتورهای صنعتی در مد Position با فرض 1 بودن ضریب گیربکس الکترونیکی، تعداد پالسهای لازم برای چرخش موتور به میزان یک دور برابر با 4 برابر دقت نامی Encoder متصل به موتور است. به عنوان مثال در سرو موتوری با Encoder از نوع 2500 پالس و اگر ضریب گیربکس الکترونیکی 1 باشد، باید 10000 پالس اعمال شود تا موتور یک دور بچرخد. در مورد گیربکس الکترونیک قبلا در پست زیر توضیح داده شده است:
https://telegram.me/KnowledgePlus/72
@KnowledgePlus
محاسبه تعداد پالس برای طی مسافت دلخواه در مکانیزم پیچ و مهره:
فرض کنیم یک استپر موتور به یک مکانیزم پیچ و مهره بصورت مستقیم کوپل شده باشد، به نحوی که هر دور چرخش موتور باعث پیشروی خروجی مکانیزم به اندازه گام پیچ شود. برای محاسبه تعداد پالس مورد نیاز به منظور حرکت خروجی به میزان دلخواه می توانیم حاصلضرب تقسیمات درایور در مسافت را بر گام پیچ تقسیم کنیم. مثلا اگر یک پیچ و مهزه بال اسکرو با گام 4 میلیمتر به استپر موتور دو فازی در مد Half step کوپل شده باشد که به معنای تقسیمات 400 قسمت در یک دور است، تعداد پالس لازم برای طی مسافت N میلیمتر برابر با 400N/4=100N خواهد بود.
@KnowledgePlus
فرض کنیم یک استپر موتور به یک مکانیزم پیچ و مهره بصورت مستقیم کوپل شده باشد، به نحوی که هر دور چرخش موتور باعث پیشروی خروجی مکانیزم به اندازه گام پیچ شود. برای محاسبه تعداد پالس مورد نیاز به منظور حرکت خروجی به میزان دلخواه می توانیم حاصلضرب تقسیمات درایور در مسافت را بر گام پیچ تقسیم کنیم. مثلا اگر یک پیچ و مهزه بال اسکرو با گام 4 میلیمتر به استپر موتور دو فازی در مد Half step کوپل شده باشد که به معنای تقسیمات 400 قسمت در یک دور است، تعداد پالس لازم برای طی مسافت N میلیمتر برابر با 400N/4=100N خواهد بود.
@KnowledgePlus
یک توضیح مفید در مورد بخش های Code و RO-data و RW-data و ZI-data در Keil:
https://www.edaboard.com/thread240300.html#post1028079
@KnowledgePlus
https://www.edaboard.com/thread240300.html#post1028079
@KnowledgePlus
از آنجایی که پیشرفت اساسی و کسب مهارت و تسلط واقعی در بسیاری از حوزه های رشته الکترونیک بدون دسترسی به اسیلوسکوپ امر بسیار بعید و در مواردی ناشدنی است. بنابراین توصیه می شود برای فعالیت حرفه ای در این رشته، تهیه اسیلوسکوپ را جزء اولویت های اول قرار دهید.
@KnowledgePlus
@KnowledgePlus
تجربه ای در تعمیرات بردهای الکترونیک:
در هنگام تعمیر بردهای پیچیده ای که فاقد نقشه هستند و برد مشابه آنها هم در دسترس نیست، در جریان درآوردن قطعات و امتحان آنها و جدا کردن سیم ها و کاکتورها و غیره، این احتمال وجود دارد که شکل اولیه برد از نظر محل و جهت قطعات و کانکتورها و مانند آن در مراحل بعدی فراموش شود. بنابراین اکیدا توصیه می شود که قبل از هرگونه اقدام برای تعمیر اینگونه بردها، ابتدا شکل ظاهری و وضعیت اولیه آنها از طریق عکس یا فیلم یا رسم برای یاد آوری در مراحل بعد ثبت شود.
@KnowledgePlus
در هنگام تعمیر بردهای پیچیده ای که فاقد نقشه هستند و برد مشابه آنها هم در دسترس نیست، در جریان درآوردن قطعات و امتحان آنها و جدا کردن سیم ها و کاکتورها و غیره، این احتمال وجود دارد که شکل اولیه برد از نظر محل و جهت قطعات و کانکتورها و مانند آن در مراحل بعدی فراموش شود. بنابراین اکیدا توصیه می شود که قبل از هرگونه اقدام برای تعمیر اینگونه بردها، ابتدا شکل ظاهری و وضعیت اولیه آنها از طریق عکس یا فیلم یا رسم برای یاد آوری در مراحل بعد ثبت شود.
@KnowledgePlus
برای بالا بردن ضریب اطمینان در مدارات مبتنی بر میکروکنترلرها که انجام وظایف حساس و حیاتی را به عهده دارند و عملکرد ناصحیح آنها می تواند خسارت های بزرگی را ایجاد کند، از ولتاژ تغذیه توسط ADC می توان فیدبک گرفت و چنانچه نوسانات یا افزایش و کاهش غیر عادی در ولتاژ تغذیه مشاهده شود، قبل از آنکه این تغییرات به مراحل حدی مانند فعال شدن Brown out detection یا Power on reset برسد، روتین های حفاظتی مناسب مانند ایجاد آلارم و استفاده از تغذیه پشتیبان و غیره را می توان اجرا کرد. در برخی از میکروکنترلرها در همین راستا امکان اتصال ضریبی از ولتاژ تغذیه میکروکنترلر به ورودی ADC بصورت داخلی وجود دارد.
@KnowledgePlus
@KnowledgePlus
مثال برنامه نویسی C:
در کد زیر در پایان اجرای حلقه for و با فرض تعریف قبلی متغیرهای x و y و i از نوع char، ترتیب بیت های x معکوس می شود و در y قرار می گیرد. مثلا بیت 0 در x به بیت 7 در y منتقل می شود و بیت 1 در x به بیت 6 در y منتقل می شود و به همین ترتیب. به عنوان مثال عددی اگر x برابر 0xc2 باشد، y برابر با 0x43 خواهد بود.
for(i=0,y=0;i<8;i++) y|=((x&(1«i))?(1«(7-i)):0);
@Knowledgeplus
در کد زیر در پایان اجرای حلقه for و با فرض تعریف قبلی متغیرهای x و y و i از نوع char، ترتیب بیت های x معکوس می شود و در y قرار می گیرد. مثلا بیت 0 در x به بیت 7 در y منتقل می شود و بیت 1 در x به بیت 6 در y منتقل می شود و به همین ترتیب. به عنوان مثال عددی اگر x برابر 0xc2 باشد، y برابر با 0x43 خواهد بود.
for(i=0,y=0;i<8;i++) y|=((x&(1«i))?(1«(7-i)):0);
@Knowledgeplus