mBedLab Learning – Telegram
mBedLab Learning
774 subscribers
54 photos
5 videos
4 files
38 links
بحث و گفتگو در:
.
@mBedLab_Discussion
Download Telegram
esp-idf-tools-setup-espressif-ide-3.1.0-with-esp-idf-5.3.1.exe
1.8 GB
فایل نرم افزار Espressif-IDE نسخه 3.1.0

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👍1
#قانون 2.3 MISRA C -اجتناب از اعلان انواع داده استفاده نشده

○ گروه: #کدهای_استفاده_نشده
○ دسته‌بندی: #توصیه_شده
○ اعمال برای: C90, C99, C11

قاعده 2.3 استاندارد MISRA بیان می‌کند که پروژه نباید شامل اعلان انواع داده ای باشد که در هیچ کجای کد استفاده نشده اند.

چرا این قانون مهم است؟
○ سردرگمی در بررسی کد
گر نوع داده ای اعلان شده باشد اما استفاده نشده باشد، برای بازبینی کننده کد مشخص نیست که این نوع داده اضافی است یا به اشتباه استفاده نشده است. این عدم قطعیت می تواند منجر به سردرگمی و خطا در تحلیل کد شود.

○ افزایش حجم کد
اعلان انواع داده استفاده نشده، حجم کد را افزایش می دهد و خوانایی و نگهداری کد را دشوارتر می کند.

○ خطاهای پنهان
ممکن است در مراحل بعدی توسعه، به طور اشتباهی از این نوع داده استفاده شود که می تواند منجر به بروز خطاهای غیرمنتظره و سخت یاب شود.


مثال:
int16_t unusedtype ( void )
{
typedef int16_t local_Type; /* Non-compliant */
return 67;
}


در این مثال، نوع داده local_Type اعلان شده است اما در هیچ کجای تابع استفاده نشده است. بنابراین، این کد با قانون 2.3 MISRA مطابقت ندارد.

#برنامه_نویسی#استاندارد_MISRA

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
آیا آمادگی تست دانش خود در یادگیری ماشین را دارید؟

در پست‌های قبلی، مفاهیم پایه یادگیری ماشین رو با هم بررسی کردیم. حالا وقتشه که با حل چند تا سوال، دانش خودمون رو محک بزنیم!

مدل‌های یادگیری ماشین با نظارت (Supervised Learning) با استفاده از داده‌هایی که قبلاً برچسب‌گذاری شده‌اند، آموزش می‌بینند. این مدل‌ها یاد می‌گیرند که بر اساس ویژگی‌های موجود، برچسب جدیدی را پیش‌بینی کنند. اما نکته اینجاست که همه ویژگی‌های موجود در یک دیتاست، قدرت پیش‌بینی‌کنندگی ندارند. گاهی فقط چند ویژگی خاص به عنوان پیش‌بینی‌کننده برچسب عمل می‌کنند.

در دیتاست ارسالی در تصویر، از ستون "قیمت" به عنوان برچسب استفاده می‌کنیم و ستون‌های دیگر را به عنوان ویژگی در نظر می‌گیریم.

به سوال ارسالی در پست بعد پاسخ دهید...

#برنامه_نویسی #یادگیری_ماشین #هوش_مصنوعی

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
به نظر شما کدام سه ویژگی در تصویر پست قبل احتمالاً بیشترین پیش‌بینی‌کننده برای قیمت یک خودرو هستند؟
Final Results
54%
Make_model, year, miles
35%
Miles, gearbox, make_model
12%
Color, height, make_model
0%
Tire_size, wheel_base, year
🤩4
👍2
#قانون 2.4 MISRA C - اجتناب از اعلان تگ‌های استفاده نشده

○ گروه: #کدهای_استفاده_نشده
○ دسته‌بندی: #توصیه_شده
○ اعمال برای: C90, C99, C11

این قاعده بیان می‌کند که پروژه نباید حاوی اعلان‌های تگ (tag) استفاده نشده باشد. تگ‌ها در C برای تعریف ساختارها (structs)، یونیون‌ها (unions) و شمارشگرها (enums) استفاده می‌شوند. اگر یک تگ تعریف شده باشد اما در هیچ کجای کد استفاده نشده باشد، ممکن است باعث سردرگمی شود. آیا این تگ به طور عمدی استفاده نشده است یا به اشتباه تعریف شده است؟

مثال نقض:
void unusedtag ( void )
{
enum state { S_init, S_run, S_sleep }; /* Non-compliant */
}


در این مثال، تگ state تعریف شده است اما در هیچ کجای تابع unusedtag استفاده نشده است.

مثال رعایت شده:
typedef struct record_t /* Non-compliant */
{
uint16_t key;
uint16_t val;
} record1_t;

typedef struct /* Compliant */
{
uint16_t key;
uint16_t val;
} record2_t;


در این مثال، تگ record_t تنها در تعریف typedef برای record1_t استفاده شده است. با حذف تگ record_t و استفاده مستقیم از ساختار، می‌توان این کد را مطابق با قاعده 2.4 نوشت.

#برنامه_نویسی#استاندارد_MISRA

📍امبدلب به فارسی:
@mBedLabLearning

📍mBedLab in English:
@mBedLabLearningEN

📍mBedLab Türkçe'de
@mBedLabLearningTR
👎1
#قانون 2.5 MISRA C - اجتناب از تعریف ماکروهای استفاده نشده

○ گروه: #کدهای_استفاده_نشده
○ دسته‌بندی: #توصیه_شده
○ اعمال برای: C90, C99, C11

این قاعده بیان می‌کند که یک پروژه نباید شامل تعاریف ماکروهای استفاده نشده باشد.

اگر یک ماکرو تعریف شده باشد اما در هیچ کجای کد استفاده نشود، برای بازبینی‌کننده مشخص نیست که آیا این ماکرو زائد است یا به اشتباه استفاده نشده است.

نکته: استفاده از undef# برای یک ماکرو نیز به عنوان استفاده از آن ماکرو در نظر گرفته می‌شود.

مثال:
#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" بیان می‌کند که یک تابع نباید شامل اعلان برچسب‌های استفاده نشده باشد.

اگر یک برچسب در کد اعلان شده باشد اما در هیچ کجای تابع مورد استفاده قرار نگیرد، برای بازبینی‌کننده کد مشخص نیست که این برچسب به صورت زائد اضافه شده است یا به اشتباه استفاده نشده است. وجود برچسب‌های استفاده نشده می‌تواند منجر به سردرگمی، کاهش خوانایی کد و افزایش احتمال بروز خطا در مراحل بعدی توسعه شود.

مثال:
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

این قاعده بیان می‌کند که اگر یک تابع با پارامتری تعریف شده باشد، اما در هیچ جای بدنه تابع از آن استفاده نشود، احتمالاً یک ناسازگاری بین پیاده‌سازی تابع و مشخصات آن وجود دارد.

مثال:
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 #میکروکنترلر #سیستم_های_نهفته #وبینار_رایگان #آموزش
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
👍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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
کریستال ساعت و PPM: دقت در قلب زمان‌سنجی

کریستال‌های کوارتز، قطعاتی الکترونیکی هستند که نقش حیاتی در دقت و پایداری زمان‌سنجی در دستگاه‌های مختلف، به‌ویژه ساعت‌ها، ایفا می‌کنند. این قطعات با استفاده از خاصیت پیزوالکتریک خود، نوسانات بسیار دقیق و پایداری را تولید می‌کنند که مبنای زمان‌سنجی را تشکیل می‌دهند.

‏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

توالی‌های کاراکتری /* و // نباید درون کامنت‌ها استفاده شوند.

چرا این قانون مهم است؟
○ جلوگیری از خطاهای ناشی از کامنت‌های ناقص
اگر یک کامنت با */ شروع شود و فراموش شود با /* بسته شود، بخش‌های بعدی کد به اشتباه به عنوان کامنت در نظر گرفته می‌شوند. این می‌تواند منجر به حذف ناخواسته کد و بروز خطاهای خطرناک شود.

○ جلوگیری از ابهام در تفسیر کد
استفاده از // درون کامنت‌های */ یا برعکس، باعث سردرگمی در تفسیر کد می‌شود و ممکن است منجر به رفتارهای غیرمنتظره شود.

○ جلوگیری از تغییر ناخواسته منطق برنامه
همانطور که در مثال متن میبینید استفاده از کامنت های تودرتو میتواند باعث تغییر منطق برنامه شود.


مثال نقض قانون:
‎/* این یک کامنت است، اما فراموش کردیم آن را ببندیم
‎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
👍71
#قانون 3.2 MISRA C - از Line-splicing در کامنت‌های // اجتناب کنید!

○ گروه: #کامنت‌ها
○ دسته‌بندی: #الزامی
○ اعمال برای: 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
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
👍13🔥2
Majid Derhambakhsh
سلام!

ما قصد داریم به‌زودی دوره‌های آموزشی جدیدی با هزینه ای منصفانه برگزار کنیم و دوست داریم بدونیم شما به کدام موضوع بیشتر علاقه‌مند هستید. با پاسخ به این نظرسنجی، به ما کمک می‌کنید دوره‌هایی برگزار کنیم که برای شما مفیدتر و جذاب‌تر باشند.
دقت کنید.

آموزش های مقدماتی STM/AVR با جزئیات هستند، نحوه محاسبات، تنظیمات، رجیستر ها، توابع HAL/LL نحوه کارکرد واحدهای جانبی

آموزش های برنامه نویسی مقدماتی دارای جزئیات و نکاتی برای برنامه نویسی استاندارد بوده تا پلتفرم های مختلف را تحت پوشش قرار دهد
👍5👌1