<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های hamsa.dev</title><link>https://virgool.ir/feed/@hamsa.dev</link><description></description><language>fa</language><pubDate>2026-11-11 05:51:15</pubDate><image><url>https://files.virgool.ir/upload/users/954995/avatar/19phyI.jpeg</url><title>hamsa.dev</title><link>https://virgool.ir/@hamsa.dev</link></image><item><title>Push-Pull vs Open-Drain</title><link>https://virgool.ir/@hamsa.dev/push-pull-vs-open-drain-cu9hkmomxyyk</link><description>push-pull vs open-drainدر طراحی مدارات الکترونیکی، پین‌های ورودی و خروجی میکروکنترلرها و میکروپروسسورها می‌توانند به دو حالت Push-Pull و Open-Drain تنظیم شوند. این دو حالت انتخاب‌های مهمی برای کاربران در طراحی سیستم‌های الکترونیکی هستند و تفاوت‌های مختلفی از جمله ولتاژ کاری، جریان، تراکم وصل/قطع، مصرف انرژی و سازگاری با مدارات خارجی دارند.در این مقاله، به معرفی و توضیح دو حالت Push-Pull و Open-Drain پرداخته می‌شود. تفاوت‌های اساسی بین این دو حالت تشریح شده و مزایا و معایب هر یک بررسی می‌شود. این اطلاعات می‌توانند به طراحان سیستم‌های الکترونیکی کمک کنند تا در انتخاب بهترین حالت برای پین‌های ورودی و خروجی میکروکنترلرها و میکروپروسسورها، تصمیم‌گیری کنند.به‌عنوان یک برنامه‌نویس یا طراح سیستم الکترونیکی، انتخاب صحیح بین حالت‌های Push-Pull و Open-Drain می‌تواند تأثیر زیادی بر عملکرد و عملیات سیستم‌های الکترونیکی داشته باشد. با مطالعه این مقاله، شما قادر خواهید بود تا تفاوت‌ها و مزایا و معایب این دو حالت را بهتر درک کرده و بهترین گزینه برای نیازهای خاص برنامه‌ی‌تان را انتخاب کنید.انتخاب بین حالت Push-Pull و Open-Drain برای یک پین ورودی/خروجی در میکروکنترلر بستگی به نیاز‌ها و ویژگی‌های مدار و دستگاه مورد استفاده دارد. هر کدام از این حالت‌ها مزایا و معایب خود را دارند و باید بر اساس نیاز‌های برنامه‌ی شما انتخاب شوند.Push-Pull: در این حالت، پین میکروکنترلر به صورت معکوس زمانی که خروجی است دارای جریان متغیر است. به عبارت دیگر، زمانی که پین به وضعیت HIGH (1) تنظیم شود، ولتاژ بر روی پین برابر با منبع تغذیه است و زمانی که پین به وضعیت LOW (0) تنظیم شود، ولتاژ بر روی پین صفر است. این حالت برای کاربردهایی که نیاز به تغییر سریع ولتاژ پین و همچنین توانایی تامین جریان بالا است، مناسب است.Open-Drain: در این حالت، پین میکروکنترلر تنها می‌تواند به گراند وصل یا آزاد شود. به عبارت دیگر، وقتی پین به وضعیت HIGH (1) تنظیم شود، ولتاژ بر روی پین آزاد شده و وقتی پین به وضعیت LOW (0) تنظیم شود، پین به گراند وصل می‌شود. این حالت برای کاربردهایی که نیاز به تراکم وصل/قطع پین‌ها با یکدیگر (مثلاً برای اتصال به خروجی‌های باز در مدارهای چندگانه) و همچنین توانایی تحمل جریان بالا بر روی پین استفاده می‌شود.اگر شرایطی وجود دارد که هم می‌توانید از Push-Pull و هم از Open-Drain استفاده کنید و تفاوت آن‌ها برای برنامه‌ی شما مهم نیست، می‌توانید بر اساس سایر ویژگی‌های دستگاه و نیاز‌های خاص برنامه‌ی‌تان، یکی از دو حالت Push-Pull و Open-Drain را انتخاب کنید. برای انتخاب صحیح بین این دو حالت، می‌توانید به موارد زیر توجه کنید:ولتاژ کاری: اگر نیاز به تغییر سریع ولتاژ و تامین جریان بالا بر روی پین وجود دارد، انتخاب Push-Pull مناسب است.تراکم وصل/قطع پین‌ها: اگر برای اتصال به خروجی‌های باز در مدارهای چندگانه و نیاز به تحمل جریان بالا بر روی پین وجود دارد، انتخاب Open-Drain مناسب است.مصرف انرژی: اگر در برنامه‌ی‌تان نیاز به کاهش مصرف انرژی و بهبود کارایی در حالت‌های انتظار و خواب دارید، انتخاب Open-Drain که در حالت‌های LOW بر روی پین توانایی قطع جریان را دارد، ممکن است مفید باشد.سازگاری با مدارات خارجی: اگر برای اتصال به دستگاه‌ها و مدارات خارجی با ورودی Open-Drain یا Pull-Up داشته باشید، انتخاب Open-Drain در پین‌های ورودی خروجی میکروکنترلر، به عنوان پوشش بهتر برای سازگاری با مدارات خارجی می‌باشد.در نهایت، انتخاب بین Push-Pull و Open-Drain بستگی به نیاز‌های ویژه برنامه‌ی‌تان و ویژگی‌های مدار و دستگاه مورد استفاده دارد. در نظر داشته باشید که بر اساس نیاز‌های خاص برنامه‌ی‌تان، ممکن است در بخش‌های مختلف برنامه‌ی‌تان از هر دو حالت Push-Pull و Open-Drain استفاده کنید.</description><category>hamsa.dev</category><author>hamsa.dev</author><pubDate>Sun, 23 Apr 2023 18:59:45 +0330</pubDate></item><item><title>تفاوت definition و declaration در C</title><link>https://virgool.ir/@hamsa.dev/تفاوت-definition-و-declaration-در-c-onwidthd7sh7</link><description>Difference between Definition and Declaration در ادامه به تفاوت اعلان (Declaration) و تعریف (Definition) متغیر ها و توابع در زبان C خواهیم پرداخت که یکی از سوالات همیشگی در مصاحبه های کاری مربوط به این زبان برنامه نویسی هست خواهیم پرداخت.اعلان کردن (Declaration) یک متغیر برای اطلاع دادن اطلاعات زیر به کامپایلر است: نام متغیر، نوع مقداری که داردذخیره می کند و مقدار اولیه در صورت نیاز. به عنوان مثال، اعلان جزئیاتی در مورد ویژگی های یک متغیر می دهد. در حالی که تعریف کردن (Definition) متغیر می گوید که متغیر کجا ذخیره می شود. یعنی حافظه برای متغیر در طول تعریف متغیر تخصیص داده می شود.در زبان C تعریف و اعلان یک متغیر به طور همزمان صورت می گیرد. یعنی هیچ تفاوتی بین اعلان و تعریف وجود ندارد. به عنوان مثال، به نحوه تعریف متغیر در زیر توجه کنید:int a;در اینجا اطلاعاتی مانند نام متغیر: a و نوع داده: int به کامپایلر ارسال می شود که در ساختار داده (data structure) که به عنوان جدول نمادها (symbol table) شناخته می شود ذخیره می شود. همراه با این، حافظه ای به اندازه 2 بایت (بسته به نوع کامپایلر) به متغیر a اختصاص داده می شود.فرض کنید، اگر بخواهیم فقط متغیرها را اعلان کنیم و آن را تعریف نکنیم، یعنی نمی‌خواهیم حافظه ای را به متغیر تخصیص دهیم، می‌توان از اعلان زیر استفاده کرد.extern int a;در این مثال فقط اطلاعات مربوط به متغیر ارسال می شود و هیچ تخصیص حافظه ای انجام نمی شود. اطلاعات بالا به کامپایلر می گوید که متغیر a اکنون اعلان شده است در حالی که حافظه برای آن بعداً در همان فایل یا در فایل دیگری تعریف خواهد شد.اعلان یک تابع، نام تابع، تعداد و نوع آرگومان هایی که می گیرد و نوع برگشت آن (نوع داده ای که return می کند) را در اختیار کامپایلر قرار می دهد. برای مثال کد زیر را در نظر بگیریدint add(int, int);در اینجا تابعی به نام add با 2 آرگومان از نوع int و نوع بازگشتی int اعلان می شود. حافظه در این مرحله تخصیص نخواهد یافت.تعریف تابع برای تخصیص حافظه برای تابع استفاده می شود. به عنوان مثال تعریف تابع زیر را در نظر بگیرید،int add(int a, int b)&#xA;  {&#xA;    return (a+b);&#xA;  }در طول این تعریف تابع، حافظه برای تابع add تخصیص داده می شود. و می دانیم که یک متغیر یا یک تابع را می توان چند بار اعلام کرد، اما فقط یک بار می توان آن را تعریف کرد.منبع: Difference between Definition and Declaration</description><category>hamsa.dev</category><author>hamsa.dev</author><pubDate>Wed, 01 Dec 2021 18:31:24 +0330</pubDate></item></channel></rss>