#قانون 2.5 MISRA C - اجتناب از تعریف ماکروهای استفاده نشده
○ گروه: #کدهای_استفاده_نشده
○ دستهبندی: #توصیه_شده
○ اعمال برای: C90, C99, C11
این قاعده بیان میکند که یک پروژه نباید شامل تعاریف ماکروهای استفاده نشده باشد.
اگر یک ماکرو تعریف شده باشد اما در هیچ کجای کد استفاده نشود، برای بازبینیکننده مشخص نیست که آیا این ماکرو زائد است یا به اشتباه استفاده نشده است.
نکته:استفاده از undef# برای یک ماکرو نیز به عنوان استفاده از آن ماکرو در نظر گرفته میشود.
مثال:
در این مثال، ماکروی DATA تعریف شده است اما در هیچ کجای کد از آن استفاده نشده است. بنابراین، این کد با قاعده 2.5 MISRA مطابقت ندارد.
#برنامه_نویسی #استاندارد_MISRA
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
○ گروه: #کدهای_استفاده_نشده
○ دستهبندی: #توصیه_شده
○ اعمال برای: C90, C99, C11
این قاعده بیان میکند که یک پروژه نباید شامل تعاریف ماکروهای استفاده نشده باشد.
اگر یک ماکرو تعریف شده باشد اما در هیچ کجای کد استفاده نشود، برای بازبینیکننده مشخص نیست که آیا این ماکرو زائد است یا به اشتباه استفاده نشده است.
نکته:
مثال:
#define SIZE 4
#define DATA 3 /* Non-compliant - DATA not used */
void use_macro ( void )
{
use_int16 ( SIZE );
}
در این مثال، ماکروی DATA تعریف شده است اما در هیچ کجای کد از آن استفاده نشده است. بنابراین، این کد با قاعده 2.5 MISRA مطابقت ندارد.
#برنامه_نویسی #استاندارد_MISRA
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
❤3
#قانون 2.6 MISRA C - اجتناب از اعلان برچسبهای استفاده نشده
○ گروه: #کدهای_استفاده_نشده
○ دستهبندی: #توصیه_شده
○ اعمال برای: C90, C99, C11
این قاعده با عنوان "A function should not contain unused label declarations" بیان میکند که یک تابع نباید شامل اعلان برچسبهای استفاده نشده باشد.
اگر یک برچسب در کد اعلان شده باشد اما در هیچ کجای تابع مورد استفاده قرار نگیرد، برای بازبینیکننده کد مشخص نیست که این برچسب به صورت زائد اضافه شده است یا به اشتباه استفاده نشده است. وجود برچسبهای استفاده نشده میتواند منجر به سردرگمی، کاهش خوانایی کد و افزایش احتمال بروز خطا در مراحل بعدی توسعه شود.
مثال:
در این مثال، برچسب label1 اعلان شده است اما در هیچ کجای تابع مورد استفاده قرار نمیگیرد. این مورد نقض قاعده 2.6 MISRA C محسوب میشود.
#برنامه_نویسی #استاندارد_MISRA
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
○ گروه: #کدهای_استفاده_نشده
○ دستهبندی: #توصیه_شده
○ اعمال برای: C90, C99, C11
این قاعده با عنوان "A function should not contain unused label declarations" بیان میکند که یک تابع نباید شامل اعلان برچسبهای استفاده نشده باشد.
مثال:
void unused_label ( void )
{
int16_t x = 6;
label1: /* Non-compliant */
use_int16 ( x );
}
در این مثال، برچسب label1 اعلان شده است اما در هیچ کجای تابع مورد استفاده قرار نمیگیرد. این مورد نقض قاعده 2.6 MISRA C محسوب میشود.
#برنامه_نویسی #استاندارد_MISRA
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
👍3
#قانون 2.7 MISRA C - اجتناب از پارامترهای استفاده نشده در توابع
○ گروه: #کدهای_استفاده_نشده
○ دستهبندی: #توصیه_شده
○ اعمال برای: C90, C99, C11
این قاعده بیان میکند که اگر یک تابع با پارامتری تعریف شده باشد، اما در هیچ جای بدنه تابع از آن استفاده نشود، احتمالاً یک ناسازگاری بین پیادهسازی تابع و مشخصات آن وجود دارد.
مثال:
در این مثال، تابع withunusedpara دارای دو پارامتر است، اما تنها از پارامتر para1 استفاده میشود. پارامتر unusedpara در هیچ کجای تابع مورد استفاده قرار نگرفته است.
علت
○ خطاهای پنهان
○ بهبود خوانایی و نگهداری
راهکارها
○ حذف پارامترهای استفاده نشده
○ استفاده از پارامترها
○ استفاده از ابزارهای تحلیل استاتیک
#برنامه_نویسی #استاندارد_MISRA
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
○ گروه: #کدهای_استفاده_نشده
○ دستهبندی: #توصیه_شده
○ اعمال برای: C90, C99, C11
این قاعده بیان میکند که اگر یک تابع با پارامتری تعریف شده باشد، اما در هیچ جای بدنه تابع از آن استفاده نشود، احتمالاً یک ناسازگاری بین پیادهسازی تابع و مشخصات آن وجود دارد.
مثال:
void withunusedpara ( uint16_t *para1,
int16_t unusedpara ) /* Non-compliant - unused */
{
*para1 = 42U;
}
در این مثال، تابع withunusedpara دارای دو پارامتر است، اما تنها از پارامتر para1 استفاده میشود. پارامتر unusedpara در هیچ کجای تابع مورد استفاده قرار نگرفته است.
علت
○ خطاهای پنهان
پارامترهای استفاده نشده میتوانند نشاندهنده خطاهای منطقی یا تغییرات ناقص در کد باشند. ممکن است در گذشته از این پارامتر استفاده شده باشد و سپس بدون بهروزرسانی مناسب حذف شده باشد.
○ بهبود خوانایی و نگهداری
وجود پارامترهای استفاده نشده باعث کاهش خوانایی کد میشود و نگهداری و بروزرسانی آن را دشوارتر میکند.
راهکارها
○ حذف پارامترهای استفاده نشده
اگر یک پارامتر واقعاً مورد استفاده قرار نمیگیرد، باید آن را از تعریف تابع حذف کنید.
○ استفاده از پارامترها
اگر پارامتری در حال حاضر استفاده نمیشود، اما ممکن است در آینده مورد نیاز باشد، باید آن را به درستی در بدنه تابع استفاده کنید.
○ استفاده از ابزارهای تحلیل استاتیک
ابزارهای تحلیل استاتیک میتوانند به شناسایی پارامترهای استفاده نشده در کد کمک کنند.
#برنامه_نویسی #استاندارد_MISRA
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
👍3
به دلیل استقبال و پیشنهاد شما همراهان گرامی دعوتتان میکنیم به یک رویداد علمی رایگان دیگر! 🚀
آیا می خواهید با قلب تپنده دستگاه های هوشمند، یعنی پردازنده های ARM و میکروکنترلرهای STM32 آشنا شوید؟ آیا به دنبال راهی برای ورود به دنیای جذاب سیستم های نهفته هستید؟
در این وبینار رایگان، ما از صفر تا صد این دنیای شگفت انگیز را به شما نشان می دهیم. از تئوری پایه ای تا کاربردهای عملی، همه چیز را پوشش می دهیم.
✔️ در این وبینار، به بررسی موضوعات زیر خواهیم پرداخت
○ انواع پردازنده های ARM را بشناسید و تفاوت های آنها را درک کنید.
○ دلیل محبوبیت ARM را در صنعت بدانید.
○ با خانواده قدرتمند میکروکنترلرهای STM32 آشنا شوید.
○ یاد بگیرید چگونه میکروکنترلر مناسب برای پروژه خود را انتخاب کنید.
❓ چرا در این وبینار شرکت کنیم؟
○ محتوای کاربردی و به روز
○ فرصت پرسش و پاسخ
○ کاملا رایگان
❓ این وبینار برای چه کسانی مناسب است؟
○ دانشجویان و فارغ التحصیلان مهندسی برق، کامپیوتر و مکاترونیک
○ علاقه مندان به یادگیری سیستم های نهفته
○ کسانی که می خواهند پروژه های خود را با میکروکنترلرهای ARM و STM32 انجام دهند
🎉 کی برگزار میشود؟
○ زمان: جمعه ۱۷ اسفند، ساعت ۱۸ تا ۲۱
○ مکان: آنلاین (در هر کجا که هستید، می توانید شرکت کنید!)
🧑🏻🏫 سخنران
○ مجید درهم بخش | توسعه دهنده و تحلیلگر سیستمهای نهفته، مدرس دانشگاه
برای ثبت نام در وبینار اطلاعات زیر را به آی دی @mbedlab_admin ارسال نمایید تا اطلاعات ورود و شرکت در وبینار 24 ساعت قبل از برگزاری برای شما ارسال شود:
○ نام و نام خانوادگی
○ شماره تماس
○ آدرس ایمیل
○ زمینه فعالیت شغلی/تحصیلی
منتظر دیدار شما در این وبینار هیجان انگیز هستیم!
#ARM #STM32 #میکروکنترلر #سیستم_های_نهفته #وبینار_رایگان #آموزش
آیا می خواهید با قلب تپنده دستگاه های هوشمند، یعنی پردازنده های ARM و میکروکنترلرهای STM32 آشنا شوید؟ آیا به دنبال راهی برای ورود به دنیای جذاب سیستم های نهفته هستید؟
در این وبینار رایگان، ما از صفر تا صد این دنیای شگفت انگیز را به شما نشان می دهیم. از تئوری پایه ای تا کاربردهای عملی، همه چیز را پوشش می دهیم.
○ انواع پردازنده های ARM را بشناسید و تفاوت های آنها را درک کنید.
○ دلیل محبوبیت ARM را در صنعت بدانید.
○ با خانواده قدرتمند میکروکنترلرهای STM32 آشنا شوید.
○ یاد بگیرید چگونه میکروکنترلر مناسب برای پروژه خود را انتخاب کنید.
○ محتوای کاربردی و به روز
مطالب ارائه شده کاملا عملی و مطابق با آخرین تکنولوژی ها هستند.
○ فرصت پرسش و پاسخ
در طول وبینار می توانید سوالات خود را از مدرس بپرسید و ابهامات خود را برطرف کنید.
○ کاملا رایگان
شرکت در این وبینار هیچ هزینه ای برای شما ندارد.
○ دانشجویان و فارغ التحصیلان مهندسی برق، کامپیوتر و مکاترونیک
○ علاقه مندان به یادگیری سیستم های نهفته
○ کسانی که می خواهند پروژه های خود را با میکروکنترلرهای ARM و STM32 انجام دهند
○ زمان: جمعه ۱۷ اسفند، ساعت ۱۸ تا ۲۱
○ مکان: آنلاین (در هر کجا که هستید، می توانید شرکت کنید!)
🧑🏻🏫 سخنران
○ مجید درهم بخش | توسعه دهنده و تحلیلگر سیستمهای نهفته، مدرس دانشگاه
برای ثبت نام در وبینار اطلاعات زیر را به آی دی @mbedlab_admin ارسال نمایید تا اطلاعات ورود و شرکت در وبینار 24 ساعت قبل از برگزاری برای شما ارسال شود:
○ نام و نام خانوادگی
○ شماره تماس
○ آدرس ایمیل
○ زمینه فعالیت شغلی/تحصیلی
منتظر دیدار شما در این وبینار هیجان انگیز هستیم!
#ARM #STM32 #میکروکنترلر #سیستم_های_نهفته #وبینار_رایگان #آموزش
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
#قانون 2.8 MISRA C - یک پروژه نباید حاوی تعریف اشیاء بلااستفاده باشد
○ گروه: #کدهای_استفاده_نشده
○ دستهبندی: #توصیه_شده
○ اعمال برای: C90, C99, C11
یک شیء (Object) در زبان C به هر متغیر، آرایه، struct یا union گفته می شود که در حافظه فضا اشغال می کند.
شیء بلااستفاده شیئی است که تعریف آن (و هرگونه اعلام آن) قابل حذف است و برنامه همچنان کامپایل می شود. به عبارت دیگر، اگر حذف کردن تعریف یک شیء هیچ تغییری در رفتار برنامه ایجاد نکند، آن شیء بلااستفاده محسوب می شود.
اهمیت رعایت این قاعده
○ عدم شفافیت
○ خطاهای پنهان
○ کاهش خوانایی کد
توصیه
○ بررسی دقیق
○ حذف اشیاء بلااستفاده
نکته: برخی از کامپایلرها به صورت پیش فرض، هشدارهایی در مورد اشیاء بلااستفاده ارائه می دهند. از این هشدارها برای شناسایی و حذف اشیاء بلااستفاده استفاده کنید.
قوانین مرتبط:
○ قانون 8.6
#برنامه_نویسی #استاندارد_MISRA
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
○ گروه: #کدهای_استفاده_نشده
○ دستهبندی: #توصیه_شده
○ اعمال برای: C90, C99, C11
یک شیء (Object) در زبان C به هر متغیر، آرایه، struct یا union گفته می شود که در حافظه فضا اشغال می کند.
شیء بلااستفاده شیئی است که تعریف آن (و هرگونه اعلام آن) قابل حذف است و برنامه همچنان کامپایل می شود. به عبارت دیگر، اگر حذف کردن تعریف یک شیء هیچ تغییری در رفتار برنامه ایجاد نکند، آن شیء بلااستفاده محسوب می شود.
اهمیت رعایت این قاعده
○ عدم شفافیت
وجود اشیاء بلااستفاده در کد باعث سردرگمی می شود. آیا این اشیاء به طور عمدی تعریف شده اند اما در حال حاضر استفاده نمی شوند؟ یا اینکه به اشتباه تعریف شده اند و فراموش شده اند؟
○ خطاهای پنهان
اشیاء بلااستفاده ممکن است حاوی مقادیر نامعتبر باشند که در صورت استفاده ناخواسته، منجر به رفتار غیرمنتظره و حتی خطاهای جدی در سیستم شوند.
○ کاهش خوانایی کد
وجود اشیاء بلااستفاده باعث کاهش خوانایی و نگهداری کد می شود.
توصیه
قبل از استفاده از یک شیء، اطمینان حاصل کنید که در جایی از برنامه مورد استفاده قرار می گیرد.
○ حذف اشیاء بلااستفاده
اگر شیئی بلااستفاده تشخیص داده شد، آن را حذف کنید تا کد تمیزتر، قابل خواناتر و عاری از خطاهای پنهان شود.
نکته: برخی از کامپایلرها به صورت پیش فرض، هشدارهایی در مورد اشیاء بلااستفاده ارائه می دهند. از این هشدارها برای شناسایی و حذف اشیاء بلااستفاده استفاده کنید.
قوانین مرتبط:
○ قانون 8.6
#برنامه_نویسی #استاندارد_MISRA
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
👍1
به دلیل استقبال و پیشنهاد شما همراهان گرامی دعوتتان میکنیم به یک رویداد علمی رایگان دیگر! 🚀
آیا می خواهید با قلب تپنده دستگاه های هوشمند، یعنی پردازنده های ARM و میکروکنترلرهای STM32 آشنا شوید؟ آیا به دنبال راهی برای ورود به دنیای جذاب سیستم های نهفته هستید؟
در این وبینار رایگان، ما از صفر تا صد این دنیای شگفت انگیز را به شما نشان می دهیم. از تئوری پایه ای تا کاربردهای عملی، همه چیز را پوشش می دهیم.
✔️ در این وبینار، به بررسی موضوعات زیر خواهیم پرداخت
○ انواع پردازنده های ARM را بشناسید و تفاوت های آنها را درک کنید.
○ دلیل محبوبیت ARM را در صنعت بدانید.
○ با خانواده قدرتمند میکروکنترلرهای STM32 آشنا شوید.
○ یاد بگیرید چگونه میکروکنترلر مناسب برای پروژه خود را انتخاب کنید.
❓ چرا در این وبینار شرکت کنیم؟
○ محتوای کاربردی و به روز
○ فرصت پرسش و پاسخ
○ کاملا رایگان
❓ این وبینار برای چه کسانی مناسب است؟
○ دانشجویان و فارغ التحصیلان مهندسی برق، کامپیوتر و مکاترونیک
○ علاقه مندان به یادگیری سیستم های نهفته
○ کسانی که می خواهند پروژه های خود را با میکروکنترلرهای ARM و STM32 انجام دهند
🎉 کی برگزار میشود؟
○ زمان: جمعه ۱۷ اسفند، ساعت ۱۸ تا ۲۱
○ مکان: آنلاین (در هر کجا که هستید، می توانید شرکت کنید!)
🧑🏻🏫 سخنران
○ مجید درهم بخش | توسعه دهنده و تحلیلگر سیستمهای نهفته، مدرس دانشگاه
علاقه مندان جهت اخذ مدرک معتبر از واحد علوم و تحقیقات ثبتنام خود را از طریق اسکن بارکد و یا لینک زیر انجام دهند
meshkat.iau.ir/c/14421
برای ثبت نام در وبینار بدون گواهینامه (رایگان) اطلاعات زیر را به آی دی @mbedlab_admin ارسال نمایید تا اطلاعات ورود و شرکت در وبینار 24 ساعت قبل از برگزاری برای شما ارسال شود:
○ نام و نام خانوادگی
○ شماره تماس
○ آدرس ایمیل
○ زمینه فعالیت شغلی/تحصیلی
منتظر دیدار شما در این وبینار هیجان انگیز هستیم!
#ARM #STM32 #میکروکنترلر #سیستم_های_نهفته #وبینار_رایگان #آموزش
🚀کانال تلگرام مدرسه مهارتی:
@AiRoboticSRB
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
آیا می خواهید با قلب تپنده دستگاه های هوشمند، یعنی پردازنده های ARM و میکروکنترلرهای STM32 آشنا شوید؟ آیا به دنبال راهی برای ورود به دنیای جذاب سیستم های نهفته هستید؟
در این وبینار رایگان، ما از صفر تا صد این دنیای شگفت انگیز را به شما نشان می دهیم. از تئوری پایه ای تا کاربردهای عملی، همه چیز را پوشش می دهیم.
○ انواع پردازنده های ARM را بشناسید و تفاوت های آنها را درک کنید.
○ دلیل محبوبیت ARM را در صنعت بدانید.
○ با خانواده قدرتمند میکروکنترلرهای STM32 آشنا شوید.
○ یاد بگیرید چگونه میکروکنترلر مناسب برای پروژه خود را انتخاب کنید.
○ محتوای کاربردی و به روز
مطالب ارائه شده کاملا عملی و مطابق با آخرین تکنولوژی ها هستند.
○ فرصت پرسش و پاسخ
در طول وبینار می توانید سوالات خود را از مدرس بپرسید و ابهامات خود را برطرف کنید.
○ کاملا رایگان
شرکت در این وبینار هیچ هزینه ای برای شما ندارد.
○ دانشجویان و فارغ التحصیلان مهندسی برق، کامپیوتر و مکاترونیک
○ علاقه مندان به یادگیری سیستم های نهفته
○ کسانی که می خواهند پروژه های خود را با میکروکنترلرهای ARM و STM32 انجام دهند
○ زمان: جمعه ۱۷ اسفند، ساعت ۱۸ تا ۲۱
○ مکان: آنلاین (در هر کجا که هستید، می توانید شرکت کنید!)
🧑🏻🏫 سخنران
○ مجید درهم بخش | توسعه دهنده و تحلیلگر سیستمهای نهفته، مدرس دانشگاه
علاقه مندان جهت اخذ مدرک معتبر از واحد علوم و تحقیقات ثبتنام خود را از طریق اسکن بارکد و یا لینک زیر انجام دهند
meshkat.iau.ir/c/14421
برای ثبت نام در وبینار بدون گواهینامه (رایگان) اطلاعات زیر را به آی دی @mbedlab_admin ارسال نمایید تا اطلاعات ورود و شرکت در وبینار 24 ساعت قبل از برگزاری برای شما ارسال شود:
○ نام و نام خانوادگی
○ شماره تماس
○ آدرس ایمیل
○ زمینه فعالیت شغلی/تحصیلی
منتظر دیدار شما در این وبینار هیجان انگیز هستیم!
#ARM #STM32 #میکروکنترلر #سیستم_های_نهفته #وبینار_رایگان #آموزش
🚀کانال تلگرام مدرسه مهارتی:
@AiRoboticSRB
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
کریستال ساعت و PPM: دقت در قلب زمانسنجی
کریستالهای کوارتز، قطعاتی الکترونیکی هستند که نقش حیاتی در دقت و پایداری زمانسنجی در دستگاههای مختلف، بهویژه ساعتها، ایفا میکنند. این قطعات با استفاده از خاصیت پیزوالکتریک خود، نوسانات بسیار دقیق و پایداری را تولید میکنند که مبنای زمانسنجی را تشکیل میدهند.
PPM (Parts Per Million) یا قسمت در میلیون، واحدی برای اندازهگیری میزان ناخالصی یا تغییرات فرکانس در کریستالهای کوارتز است. این واحد نشاندهنده دقت و پایداری فرکانس کریستال است؛ هر چه مقدار PPM کمتر باشد، کریستال دقیقتر و پایدارتر است.
اهمیت PPM در کریستال:
○ دقت زمانسنجی
○ پایداری فرکانس
تأثیر PPM بر عملکرد دستگاه
○ ساعتها و تایمرها: در ساعتها و تایمرها، PPM پایین باعث دقت بیشتر در زمانسنجی میشود.
○ دستگاههای مخابراتی: در دستگاههای مخابراتی، PPM پایین باعث پایداری بیشتر فرکانس و کاهش تداخل میشود.
○ میکروکنترلرها: در میکروکنترلرها، PPM پایین باعث دقت بیشتر در اجرای دستورات و کاهش خطا میشود.
مثال
فرض کنید یک کریستال با فرکانس 10 مگاهرتز و PPM 100 داریم. این بدان معناست که فرکانس کریستال میتواند تا 100 قسمت در میلیون از 10 مگاهرتز منحرف شود.
نحوه محاسبه تغییرات فرکانس
برای محاسبه تغییرات فرکانس، میتوان از فرمول زیر استفاده کرد:
تغییرات فرکانس (هرتز) = (PPM / 1,000,000) * فرکانس اسمی (هرتز)
در مثال بالا، تغییرات فرکانس به صورت زیر محاسبه میشود:
تغییرات فرکانس = (1,000,000 / 100) * 10,000,000 = 1,000 هرتز
بنابراین، فرکانس کریستال میتواند تا 1,000 هرتز از 10 مگاهرتز منحرف شود.
عوامل مؤثر بر PPM
○ دما
○ ولتاژ
○ پیری
○ بار خازنی
#الکترونیک
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
کریستالهای کوارتز، قطعاتی الکترونیکی هستند که نقش حیاتی در دقت و پایداری زمانسنجی در دستگاههای مختلف، بهویژه ساعتها، ایفا میکنند. این قطعات با استفاده از خاصیت پیزوالکتریک خود، نوسانات بسیار دقیق و پایداری را تولید میکنند که مبنای زمانسنجی را تشکیل میدهند.
PPM (Parts Per Million) یا قسمت در میلیون، واحدی برای اندازهگیری میزان ناخالصی یا تغییرات فرکانس در کریستالهای کوارتز است. این واحد نشاندهنده دقت و پایداری فرکانس کریستال است؛ هر چه مقدار PPM کمتر باشد، کریستال دقیقتر و پایدارتر است.
اهمیت PPM در کریستال:
○ دقت زمانسنجی
PPM پایین در ساعتها به معنای دقت بیشتر در نمایش زمان است.
○ پایداری فرکانس
PPM پایین باعث پایداری بیشتر فرکانس کریستال در برابر تغییرات دما و ولتاژ میشود.
تأثیر PPM بر عملکرد دستگاه
○ ساعتها و تایمرها: در ساعتها و تایمرها، PPM پایین باعث دقت بیشتر در زمانسنجی میشود.
○ دستگاههای مخابراتی: در دستگاههای مخابراتی، PPM پایین باعث پایداری بیشتر فرکانس و کاهش تداخل میشود.
○ میکروکنترلرها: در میکروکنترلرها، PPM پایین باعث دقت بیشتر در اجرای دستورات و کاهش خطا میشود.
مثال
فرض کنید یک کریستال با فرکانس 10 مگاهرتز و PPM 100 داریم. این بدان معناست که فرکانس کریستال میتواند تا 100 قسمت در میلیون از 10 مگاهرتز منحرف شود.
نحوه محاسبه تغییرات فرکانس
برای محاسبه تغییرات فرکانس، میتوان از فرمول زیر استفاده کرد:
تغییرات فرکانس (هرتز) = (PPM / 1,000,000) * فرکانس اسمی (هرتز)
در مثال بالا، تغییرات فرکانس به صورت زیر محاسبه میشود:
تغییرات فرکانس = (1,000,000 / 100) * 10,000,000 = 1,000 هرتز
بنابراین، فرکانس کریستال میتواند تا 1,000 هرتز از 10 مگاهرتز منحرف شود.
عوامل مؤثر بر PPM
○ دما
تغییرات دما باعث تغییر در ابعاد کریستال و در نتیجه تغییر در فرکانس آن میشود.
○ ولتاژ
تغییرات ولتاژ تغذیه کریستال نیز میتواند بر فرکانس آن تأثیر بگذارد.
○ پیری
با گذشت زمان، فرکانس کریستال به دلیل تغییرات ساختاری در آن تغییر میکند.
○ بار خازنی
خازنهای متصل به کریستال نیز در دقت فرکانس آن تاثیر گذار هستند.
#الکترونیک
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
👍1
#قانون 3.1 MISRA C - از کامنتهای تودرتو اجتناب کنید!
○ گروه: #کامنتها
○ دستهبندی: #الزامی
○ اعمال برای: C90, C99, C11
توالیهای کاراکتری /* و // نباید درون کامنتها استفاده شوند.
چرا این قانون مهم است؟
○ جلوگیری از خطاهای ناشی از کامنتهای ناقص
○ جلوگیری از ابهام در تفسیر کد
○ جلوگیری از تغییر ناخواسته منطق برنامه
مثال نقض قانون:
مثال دیگر (C99):
در این مثال، حضور // ها باعث میشود که x = y + z; محاسبه شود، در حالی که بدون آنها، x = y; محاسبه میشد.
استثناها:
1. URI ها: شناسههای منابع یکنواخت (URI) مانند https://mbedlab.com در کامنتها مجاز هستند.
2. // درون کامنت //: استفاده از // درون کامنتهای تک خطی // مجاز است.
مثال منطبق با قانون (با استفاده از استثنای URI):
نکات کلیدی:
○ همیشه کامنتهای */ را با /* ببندید.
○ از استفاده از /* و // درون کامنتها خودداری کنید.
○ از استثناها در صورت نیاز به درستی استفاده کنید.
○ همیشه کد خود را با دقت بررسی کنید تا از رعایت این قانون اطمینان حاصل کنید.
با رعایت قانون 3.1، میتوانید از بروز خطاهای ناشی از کامنتهای تودرتو و ناقص جلوگیری کنید و کد قابل اطمینانتری بنویسید.
#برنامه_نویسی #استاندارد_MISRA
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
○ گروه: #کامنتها
○ دستهبندی: #الزامی
○ اعمال برای: C90, C99, C11
توالیهای کاراکتری /* و // نباید درون کامنتها استفاده شوند.
چرا این قانون مهم است؟
○ جلوگیری از خطاهای ناشی از کامنتهای ناقص
اگر یک کامنت با */ شروع شود و فراموش شود با /* بسته شود، بخشهای بعدی کد به اشتباه به عنوان کامنت در نظر گرفته میشوند. این میتواند منجر به حذف ناخواسته کد و بروز خطاهای خطرناک شود.
○ جلوگیری از ابهام در تفسیر کد
استفاده از // درون کامنتهای */ یا برعکس، باعث سردرگمی در تفسیر کد میشود و ممکن است منجر به رفتارهای غیرمنتظره شود.
○ جلوگیری از تغییر ناخواسته منطق برنامه
همانطور که در مثال متن میبینید استفاده از کامنت های تودرتو میتواند باعث تغییر منطق برنامه شود.
مثال نقض قانون:
/* این یک کامنت است، اما فراموش کردیم آن را ببندیم
Perform_Critical_Safety_Function(X); // این خط به اشتباه کامنت میشود!
/* این کامنت نیز نقض قانون است */
مثال دیگر (C99):
x = y // /*
+ z
// */
;
در این مثال، حضور // ها باعث میشود که x = y + z; محاسبه شود، در حالی که بدون آنها، x = y; محاسبه میشد.
استثناها:
1. URI ها: شناسههای منابع یکنواخت (URI) مانند https://mbedlab.com در کامنتها مجاز هستند.
2. // درون کامنت //: استفاده از // درون کامنتهای تک خطی // مجاز است.
مثال منطبق با قانون (با استفاده از استثنای URI):
/*
** The MISRA C:2012 example suite can be found at
** https://gitlab.com/MISRA/MISRA-C/MISRA-C-2012
*/
نکات کلیدی:
○ همیشه کامنتهای */ را با /* ببندید.
○ از استفاده از /* و // درون کامنتها خودداری کنید.
○ از استثناها در صورت نیاز به درستی استفاده کنید.
○ همیشه کد خود را با دقت بررسی کنید تا از رعایت این قانون اطمینان حاصل کنید.
با رعایت قانون 3.1، میتوانید از بروز خطاهای ناشی از کامنتهای تودرتو و ناقص جلوگیری کنید و کد قابل اطمینانتری بنویسید.
#برنامه_نویسی #استاندارد_MISRA
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
👍2
روز مهندس مبارک! مهندسان عزیز، شما با ️ دستان توانمند و ذهنهای خلاق خود، دنیایی را میسازید که در آن، رویاها به واقعیت تبدیل میشوند. از پلها و ساختمانهای استوار گرفته تا نرمافزارهای پیچیده، شما در هر گوشه از زندگی ما حضور دارید و آیندهای روشنتر ☀️ را رقم میزنید.
ما در مجموعه خود، قدردان زحمات شما هستیم و با ارائه آموزشهای رایگان، به رشد و پیشرفت 🇮🇷 جامعه مهندسی کشورمان کمک میکنیم.
اما مهندسی تنها به بزرگسالان محدود نمیشود. ما به تربیت نسل آینده مهندسان نیز اهمیت میدهیم. با تشویق کودکان به کنجکاوی و خلاقیت، بذرهای مهندسی را در ذهنهای جوان میکاریم. امیدواریم با دستان توانمند شما و مهندسان آیندهسازمان، ایرانی آبادتر داشته باشیم. ❤️🇮🇷
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
ما در مجموعه خود، قدردان زحمات شما هستیم و با ارائه آموزشهای رایگان، به رشد و پیشرفت 🇮🇷 جامعه مهندسی کشورمان کمک میکنیم.
اما مهندسی تنها به بزرگسالان محدود نمیشود. ما به تربیت نسل آینده مهندسان نیز اهمیت میدهیم. با تشویق کودکان به کنجکاوی و خلاقیت، بذرهای مهندسی را در ذهنهای جوان میکاریم. امیدواریم با دستان توانمند شما و مهندسان آیندهسازمان، ایرانی آبادتر داشته باشیم. ❤️🇮🇷
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
👍7❤1
#قانون 3.2 MISRA C - از Line-splicing در کامنتهای // اجتناب کنید!
○ گروه: #کامنتها
○ دستهبندی: #الزامی
○ اعمال برای: C99, C11
آیا میدانستید استفاده از \ (بکاسلش) در انتهای کامنتهای // میتواند منجر به حذف ناخواسته کد شود؟ این دقیقاً همان چیزی است که MISRA C Rule 3.2 به آن اشاره میکند.
مشکل چیست؟
وقتی یک خط کامنت // با \ تمام میشود، خط بعدی به عنوان بخشی از کامنت در نظر گرفته میشود. این پدیده به نام Line-splicing شناخته میشود.
مثال:
در این مثال، خط if (b) به دلیل \ در خط قبلی، کامنت شده و اجرا نمیشود.
چرا این قانون مهم است؟
○ جلوگیری از حذف ناخواسته کد
○ افزایش خوانایی کد
○ مطابقت با استانداردهای ایمنی
راه حل:
○ از استفاده از \ در انتهای کامنتهای // خودداری کنید.
○ برای کامنتهای چند خطی از /* ... */ استفاده کنید.
نکته: این قانون برای C99 و C11 اعمال میشود.
#برنامه_نویسی #استاندارد_MISRA
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
○ گروه: #کامنتها
○ دستهبندی: #الزامی
○ اعمال برای: C99, C11
آیا میدانستید استفاده از \ (بکاسلش) در انتهای کامنتهای // میتواند منجر به حذف ناخواسته کد شود؟ این دقیقاً همان چیزی است که MISRA C Rule 3.2 به آن اشاره میکند.
مشکل چیست؟
وقتی یک خط کامنت // با \ تمام میشود، خط بعدی به عنوان بخشی از کامنت در نظر گرفته میشود. این پدیده به نام Line-splicing شناخته میشود.
مثال:
uint16_t x = 0; // comment \
if (b) // این خط به عنوان کامنت در نظر گرفته میشود!
{
++x;
}
در این مثال، خط if (b) به دلیل \ در خط قبلی، کامنت شده و اجرا نمیشود.
چرا این قانون مهم است؟
○ جلوگیری از حذف ناخواسته کد
این قانون از خطاهای پنهان در کد جلوگیری میکند.
○ افزایش خوانایی کد
با رعایت این قانون، کد شما قابل پیشبینیتر و قابل نگهداریتر خواهد بود.
○ مطابقت با استانداردهای ایمنی
رعایت قوانین MISRA C برای توسعه نرمافزارهای ایمن و قابل اعتماد ضروری است.
راه حل:
○ از استفاده از \ در انتهای کامنتهای // خودداری کنید.
○ برای کامنتهای چند خطی از /* ... */ استفاده کنید.
نکته: این قانون برای C99 و C11 اعمال میشود.
#برنامه_نویسی #استاندارد_MISRA
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
👍1
🔴 خبر فوقالعاده! بات هوش مصنوعی Grok اکنون برای کاربران تلگرام پریمیوم در دسترس است! 🚀
🔴 اگر کاربر تلگرام پریمیوم هستید، به سرعت به @GrokAI بروید و از قدرت هوش مصنوعی لذت ببرید! 💪
#هوش_مصنوعی #Grok
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
🔴 اگر کاربر تلگرام پریمیوم هستید، به سرعت به @GrokAI بروید و از قدرت هوش مصنوعی لذت ببرید! 💪
#هوش_مصنوعی #Grok
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
❤2👍2
mBedLab Altium Library (2025-05-16).IntLib
103.4 MB
🚀 آپدیت جدید کتابخانه Altium Designer از مجموعه mBedLab منتشر شد!
در این نسخه جدید، امکاناتی برای تجربهای دقیقتر و حرفهایتر در طراحی مدار فراهم شده:
✅ استانداردسازی کامل مدلها و فوتپرینت قطعات
✅ افزودن طیف گستردهای از قطعات جدید TH و SMD
با این آپدیت، طراحی سریعتر، مطمئنتر و مطابق با استانداردهای صنعتی را تجربه کنید.
📅 تاریخ آپدیت: 2025/05/16
#الکترونیک #آلتیوم_دیزاینر #کتابخانه_قطعات #فوتپرینت #طراحی_مدار #mBedLab #Altium_Designer
📍همین حالا کتابخانه را دریافت کنید و عضو کانال ما شوید:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
در این نسخه جدید، امکاناتی برای تجربهای دقیقتر و حرفهایتر در طراحی مدار فراهم شده:
✅ استانداردسازی کامل مدلها و فوتپرینت قطعات
✅ افزودن طیف گستردهای از قطعات جدید TH و SMD
با این آپدیت، طراحی سریعتر، مطمئنتر و مطابق با استانداردهای صنعتی را تجربه کنید.
📅 تاریخ آپدیت: 2025/05/16
#الکترونیک #آلتیوم_دیزاینر #کتابخانه_قطعات #فوتپرینت #طراحی_مدار #mBedLab #Altium_Designer
📍همین حالا کتابخانه را دریافت کنید و عضو کانال ما شوید:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
👍13🔥2
سلام!
ما قصد داریم بهزودی دورههای آموزشی جدیدی با هزینه ای منصفانه برگزار کنیم و دوست داریم بدونیم شما به کدام موضوع بیشتر علاقهمند هستید. با پاسخ به این نظرسنجی، به ما کمک میکنید دورههایی برگزار کنیم که برای شما مفیدتر و جذابتر باشند.
ما قصد داریم بهزودی دورههای آموزشی جدیدی با هزینه ای منصفانه برگزار کنیم و دوست داریم بدونیم شما به کدام موضوع بیشتر علاقهمند هستید. با پاسخ به این نظرسنجی، به ما کمک میکنید دورههایی برگزار کنیم که برای شما مفیدتر و جذابتر باشند.
Final Results
26%
برنامه نویسی مقدماتی/متوسط ++C/C به صورت استاندارد
12%
برنامه نویسی مقدماتی/متوسط پایتون به صورت استاندارد
18%
برنامه نویسی مقدماتی AVR به صورت استاندارد (بررسی کامل سخت افزار و نرم افزار)
44%
برنامه نویسی مقدماتی STM32 به صورت استاندارد (بررسی کامل سخت افزار و نرم افزار)
52%
برنامه نویسی پیشرفته STM32 به صورت استاندارد (بررسی کامل سخت افزار و نرم افزار)
39%
طراحی مدار چاپی با آلتیوم دیزاینر (انتخاب قطعات مناسب، از نمونه سازی تا تولید انبوه)
Majid Derhambakhsh
سلام!
ما قصد داریم بهزودی دورههای آموزشی جدیدی با هزینه ای منصفانه برگزار کنیم و دوست داریم بدونیم شما به کدام موضوع بیشتر علاقهمند هستید. با پاسخ به این نظرسنجی، به ما کمک میکنید دورههایی برگزار کنیم که برای شما مفیدتر و جذابتر باشند.
ما قصد داریم بهزودی دورههای آموزشی جدیدی با هزینه ای منصفانه برگزار کنیم و دوست داریم بدونیم شما به کدام موضوع بیشتر علاقهمند هستید. با پاسخ به این نظرسنجی، به ما کمک میکنید دورههایی برگزار کنیم که برای شما مفیدتر و جذابتر باشند.
دقت کنید.
آموزش های مقدماتی STM/AVR با جزئیات هستند، نحوه محاسبات، تنظیمات، رجیستر ها، توابع HAL/LL نحوه کارکرد واحدهای جانبی
آموزش های برنامه نویسی مقدماتی دارای جزئیات و نکاتی برای برنامه نویسی استاندارد بوده تا پلتفرم های مختلف را تحت پوشش قرار دهد
آموزش های مقدماتی STM/AVR با جزئیات هستند، نحوه محاسبات، تنظیمات، رجیستر ها، توابع HAL/LL نحوه کارکرد واحدهای جانبی
آموزش های برنامه نویسی مقدماتی دارای جزئیات و نکاتی برای برنامه نویسی استاندارد بوده تا پلتفرم های مختلف را تحت پوشش قرار دهد
👍5
با توجه به پیشنهاد همراهان دو دوره زیر به نظرسنجی اضافه شد:
Final Results
61%
کتابخانه نویسی استاندارد برای میکروکنترلرها (به همراه چند مثال عملی)
51%
برنامه نویسی ESP32/ESP8266 با استفاده از فریمورک آردوینو (از پروتکل های شبکه تا برنامه نویسی)
🔔 اطلاعیه مهم برای اعضای عزیز امبدلب
با توجه به اختلالهای اخیر و قطعیهای سراسری اینترنت، به منظور حفظ ارتباط پایدار با شما همراهان گرامی، کانال رسمی امبدلب در پیامرسان بله (Bale) راهاندازی شد.
از این پس، میتوانید آخرین آموزشها، پروژهها و اطلاعرسانیهای مهم را از طریق کانال بله نیز دنبال کنید:
📲 عضویت در کانال امبدلب در بله:
👉 http://ble.ir/mBedLabLearning
با پیوستن به این کانال، در شرایطی که تلگرام یا سایر پلتفرمها در دسترس نیستند، همچنان در کنار هم خواهیم بود.
با هم، همیشه متصل میمانیم.
تیم امبدلب 💡
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
با توجه به اختلالهای اخیر و قطعیهای سراسری اینترنت، به منظور حفظ ارتباط پایدار با شما همراهان گرامی، کانال رسمی امبدلب در پیامرسان بله (Bale) راهاندازی شد.
از این پس، میتوانید آخرین آموزشها، پروژهها و اطلاعرسانیهای مهم را از طریق کانال بله نیز دنبال کنید:
📲 عضویت در کانال امبدلب در بله:
👉 http://ble.ir/mBedLabLearning
با پیوستن به این کانال، در شرایطی که تلگرام یا سایر پلتفرمها در دسترس نیستند، همچنان در کنار هم خواهیم بود.
با هم، همیشه متصل میمانیم.
تیم امبدلب 💡
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
👎5
mBedLab Learning pinned «🔔 اطلاعیه مهم برای اعضای عزیز امبدلب با توجه به اختلالهای اخیر و قطعیهای سراسری اینترنت، به منظور حفظ ارتباط پایدار با شما همراهان گرامی، کانال رسمی امبدلب در پیامرسان بله (Bale) راهاندازی شد. از این پس، میتوانید آخرین آموزشها، پروژهها و اطلاعرسانیهای…»
روز برنامهنویس مبارک! 🎉
امروز روز ماست؛ روز کسایی که به خاطر استانداردهای بالاشون، مثل Java هستن و با هرکسی که class نداشته باشه، public نمیشن. (فقط یه شوخیه!!!)
از برنامهنویسان سیستمهای نهفته که به سختافزارها جون میدن تا اونایی که هر روز باید به گوگل ثابت کنن که ربات نیستن!
خلاصه که روزتون مبارک، به جز برنامهنویسهای واتساپ که با این همه سال هنوز Callهاشون Connectingـه!
امبدلب، روز جهانی برنامهنویس رو به شما تبریک میگه. 💻✨
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
امروز روز ماست؛ روز کسایی که به خاطر استانداردهای بالاشون، مثل Java هستن و با هرکسی که class نداشته باشه، public نمیشن. (فقط یه شوخیه!!!)
از برنامهنویسان سیستمهای نهفته که به سختافزارها جون میدن تا اونایی که هر روز باید به گوگل ثابت کنن که ربات نیستن!
خلاصه که روزتون مبارک، به جز برنامهنویسهای واتساپ که با این همه سال هنوز Callهاشون Connectingـه!
امبدلب، روز جهانی برنامهنویس رو به شما تبریک میگه. 💻✨
📍امبدلب به فارسی:
@mBedLabLearning
📍mBedLab in English:
@mBedLabLearningEN
📍mBedLab Türkçe'de
@mBedLabLearningTR
❤11