armeducation – Telegram
armeducation
3.58K subscribers
367 photos
326 videos
115 files
370 links
آموزش حرفه ای میکروکنترلرهای ARM

ادمین:
@mzarkoob
مهندس مهدی زرکوب
شروع مطالب :
https://news.1rj.ru/str/armeducation/1
اینستاگرام :
@armeducation
کانال ایتا:
https://eitaa.com/armeducation
همراه :
09359956361
Download Telegram
مشاهده دیتای دریافتی در نرم افزار Wireshark که جهت شنود LAN استفاده می شود.
در اینجا پروتکل ارتباطی بین PC و برد میکروکنترلر ، UDP می باشد و عدد 0 و 1 ارسال شده است.
@armeducation
گاهی لازم است یک متغییر در کتابخانه ای که به پروژه اد شده تغییر کند و در برنامه اصلی از آن استفاده شود. به سادگی با تعریف این متغییر از نوع extern این کار انجام می شود. در تایع اصلی متغییر تعریف می شود :
extern int x;
و همین طور در کتابخانه ای که به پروژه اد شده به این شکل تعریف شده و می تواند مقدار دهی شود :
int x;
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
اجرای عملی پروتکل SNMP در میکروکنترلر STM32F107VC با Rl کیل
@armeducation
معمولا کسانی که تازه به حیطه اجرای پروژه های الکترونیک وارد شده اند، قیمت کمتری (شاید هم خیلی کمتری) برای انجام کار طلب می کنند. پارامترهای مختلفی وجود دارد که باعث می شود بعد از مدتی دیگر با قیمت پایین کار نکنند. یکی از آنها این است که کاملا به عدم تناسب بین هزینه و درآمدشان واقف می شوند. بدین معنا که می بینند به ازای خدمتی که در جامعه دیگران برای آنها انجام می دهند چه قیمتی باید پرداخت کنند و خودشان به چه قیمتی خدمتی را ارائه می کنند. مدت زمانی که به این نتیجه میرسند در افراد مختلف متفاوت است.
مسئله جالبی که بعد از به این نتیجه رسیدن برایشان به وجود می آید، این است که : از کسانی که به قیمت پایینی خدمتی در این حیطه انجام می دهند گله مند می شوند (البته در همه صنف ها بدین گونه است) غافل از اینکه خود این گونه بوده اند!
@armeducation
Forwarded from armeducation
در صورتی که مطالب آموزشی کانال را مفید می دانید شما معرف کانال به سایر دوستان خود باشید. 👇👇👇
با سپاس
@armeducation
یک تلقی وجود دارد به این صورت که کار را بده به کسی که از همه ارزان تر میگیرد. ولی ممکن است همیشه این طرز فکر صحیح نباشد. این افراد موقعی متوجه اشتباه خود می شوند که کارشان را به کسی با قیمت پایین داده اند و به نحو دلخواه انجام نشده باشد. اینجاست که یاد "هرچقدر پول بدی همانقدر آش میخوری" می افتند! به خاطر همین است که افراد با تجربه، کار را به افراد کاردان و با تخصص و تجربه کافی می دهند و قیمت آن را هم می پردازند چرا می خواهند به طور مطلوب انجام شود.
@armeducation
در تمام میکروکنترلرهای arm-cortex m واحد system tick timer قرار داده شده است. این تایمر 24 بیتی با تابع SysTick_Config که در هدر core_cm3.h قرار دارد، فعال شده و بر اساس زمان ورودی تابع وارد زیرروال وقفه خود می شود:
void SysTick_Handler (void)
{
SysTickCnt++;
}
به سادگی می توان از این متغییر شمارنده SysTickCnt برای محاسبه زمان دقیق استفاده کرد. به عنوان نمونه با تنظیم ورودی تابع، هر 10 میلی ثانیه یک بار وارد زیروال وقفه شده و یکی به شمارنده SysTickCnt اضافه می شود.
@armeducation
در مبحثی مانند DMA آشنایی با فضای حافظه میکرو ضرورت پیدا می کند. در میکروکنترلرهای stm32 در دیتاشیت و در LPC در یوزرمنوال به معرفی فضای رم پرداخته است. به دیفاین ها و آدرس دهی با اشاره گر در هدر یک میکرو stm32 توجه کنید :
#define PERIPH_BASE ((uint32_t)0x40000000)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)
#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)
typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
} GPIO_TypeDef;
بنابراین وقتی از دستور :
GPIOA->CRL |= 0x3 ; // PA0 output
استفاده می کنیم از قبل در هدر تعاریف لازم انجام شده و به فضای حافظه مربوطه ارجاع انجام شده است.
بیس برنامه نویسی سی لازم در این موارد مبحث اشاره گرها و struct می باشد.
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
شرح رجیسترهای systemtick
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
شرح مثال systemtick قسمت اول
@armeducation
در این پست
https://news.1rj.ru/str/armeducation/140
ذکر شد که ممکن است وقفه متوالی گزینه مطلوبی نباشد و در روند کارمان اختلال ایجاد کند. به عنوان یک راه حل می توان از DMA استفاده نمود. DMA مخفف Direct memory access به معنای دسترسی مستقیم به حافظه بدون درگیر شدن cpu می باشد. این دسترسی چه مشکلی از ما حل می کند!؟ با تنظیماتی که در این واحد انجام می شود آدرس مبدا دیتا مشخص می شود(در اینجا مثلا رجیستر دیتای سریال) و آدرس مقصد هم مشخص می شود(در اینجا یک آرایه در فضای رم) و با مشخص بودن تعداد انتقال همین طور طول انتقال، آغاز کار انجام شده و در انتها بر اساس تنظیم وقفه مربوطه اعلام می شود که انتقال انجام شده و می توانید هر کاری صلاح میدانید انجام دهید!
در اینجا درگیر نبودن cpu برای انتقال دیتا مسئله مهمی است که تا در عمل در کاری با این مشکل مواجه نشوید پی به اهمیت آن نخواهید برد.
@armeducation
در صورتی که بخواهید با هزینه کمتری آموزشهای مقدماتی میکروکنترلرهای ARM را به صورت عملی پیاده سازی کنید می توانید از یک هدربرد استفاده کنید. در هدر برد امکاناتی بر روی برد قرار داده نشده و فقط خود میکرو و خروجی Jtag یا SW جهت پروگرام کردن وجود دارد و سایر پایه ها جهت هر استفاده ای بیرون کشیده شده است. شاید هم یک LED متصل به یکی از پایه های میکرو گذاشته باشند!
با قرار دادن چند LED و مقاومت روی بِرد بُرد و اتصال پایه های خروجی برد میکرو به آن قسمت خروجی GPIO تست می شود.
با قرار دادن چند سوییچ و Pull up کردن آن و اتصال پایه های برد میکرو به آن، قسمت خروجی GPIO و وقفه خارجی تست می شود.
با استفاده از یک مبدل یو اس بی به سریال و اتصال پایه های سریال به آن، قسمت UART را می توان به صورت عملی اجرا کرد.
با استفاده از یک پتانسیومتر و اتصال سر وسط آن به پایه های ورودی آنالوگ و قرار دادن نتیجه در سریال، واحد ADC را می توان استفاده کرد.
با اتصال پایه خروجی DAC در میکرو به یک اسپیکر می توان پخش فایل صوتی انجام داد.
خروجی تایمر و PWM را یا می توان توسط اسیلوسکوپ مشاهده یا به LED های روی برد برد متصل و با کاهش فرکانس امکان مشاهده آن را فراهم کرد.
نتیجه RTC روی همان پورت سریال قابل مشاهده است.
اتصال LCD کاراکتری و کیپد و سون سگمنت هم به هدر برد به سادگی انجام می شود.
البته داشتن یک برد کامل تر که دارای امکانات جانبی باشد، باعث صرفه جویی در زمان شما خواهد شد.
@armeducation
در DMA بایستی نوع انتقال را مشخص نماییم :
Mem-Mem
Mem-Peripheral
Peripheral –Mem
Peripheral-Peripheral
مثلا در Mem-Peripheral در نظر بگیرید کاراکترها در رشته ای قرار دارد و قرار است توسط پورت سریال ارسال شود. مبدا حافظه رم و مقصد پورت سریال و آغاز انتقال . بدین ترتیب بدون استفاده از تابعی مانند UART0_SendString و معطل شدن در این تابع ارسال انجام می شود!
@armeducation
در مورد بحث کار و اشتغال مطلب مفیدی خواندم
که قسمتی از آن را باز نشر می کنم:
بیشترشان می‌خواهند کارمند شوند و حقوق بالاتر از یک‌میلیون و ٧٠٠‌هزار تومان درخواست می‌دهند. مهارت خاصی بلد نیستند و ته‌تهش به معدل بالای نمراتشان تأکید دارند یا مثلا می‌گویند در دانشگاه دولتی درس خوانده‌اند
درس‌خوانده‌ها کار تولیدی را در شأن خود نمی‌دانند.... جالب است بدانید حتی تحصیلکرده رشته‌های فنی هم حاضر نیستند وارد کارخانه‌ها شوند
مهارت کارجویان در سطح انتظار کارفرمایان نیست.
در فرهنگ ما ایرانی‌ها دکتر و مهندس‌شدن، مدیر و رئیس‌شدن از کودکی به‌عنوان ارزش شغلی به بچه‌ها آموخته می‌شود و بخش عمده‌ای از سیل تقاضای ورود به دانشگاه هم ناشی از همین نگاه است. جالب است که رشته‌های فنی و حرفه‌ای با همین نگاه از ابتدا مورد استقبال قرار نگرفت و خانواده‌های زیادی خواهان تحصیل بچه‌هایشان در رشته‌هایی بودند که از آنها دکتر و مهندس تولید می‌شود.
مهارت‌های دانشگاهی با مهارت‌هایی که بازار کار به آنها نیاز دارد، تطابقی ندارد.
در کشورمان آموزش‌ها براساس نیاز بازار کار نیست و در شرایطی که افراد آموزش‌های تئوری را در دانشگاه‌ها دریافت می‌کنند، نیاز بازار کار چیز دیگری است.
مشکل فرهنگی-> جوانان آموزش ندیده‌اند و خانواده‌ها به کارمندی و آب باریکه از گذشته روی آورده‌اند و به آن یقین دارند.

http://tabnak.ir/fa/news/712673/%D8%A7%D9%81%D8%A7%D8%AF%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C-%D8%A8%DB%8C%DA%A9%D8%A7%D8%B1%D8%A7%D9%86-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C
—----------------------------
البته در مورد کارفرمایان مواردی به طور تجربی دیده شده که در پست های بعدی ذکر خواهد شد.

@armeducation
پریفرالهایی که از آنها استفاده می کنیم به صورت فایل .c به پروژه اضافه می شود:
https://news.1rj.ru/str/armeducation/92
وقتی تعداد این فایل ها زیاد باشد می توان به این صورت در پروژه ایجاد شده در کیل دسته بندی کرد
با توجه به پست قبلی :
https://news.1rj.ru/str/armeducation/153
در میکروکنترلر lpc1788 نیز برنامه SD کارت با توابع RLکیل که با کیل 4 ایجاد شده بود و با کیل 5 کامپایل و بر روی برد ریخته شد بود، کار نکرد.
بنابراین به تفاوت کیل در عدم کارکرد دقت داشته باشید.
@armeducation
در پست های قبلی بر روی این مطلب تاکید شد که
• پیش نیاز کار با میکروکنترلرهای ARM ، آشنایی با زبان C می باشد.
https://news.1rj.ru/str/armeducation/78
برای یک دوره مقدماتی میکروکنترلرهای ARM مواری از زبان برنامه نویسی C که بیشتر در عمل به کار می آید بدین صورت می باشد :
1- انواع داده، متغییر، ثوابت و عمگرها
2- استفاده از توابع stdio -> در پورت سریال استفاده خواهد شد.
3- حلقه while و for و شرط if و switch
4- آرایه و رشته
5- تابع و توابع کتابخانه ای
6- اشاره گرها
اینها مواردی هستند که در عمل از آن استفاده می شود.
بنابراین حداقل لازم برای یک دوره مقدماتی میکروکنترلرهای ARM ، آشنایی با زبان C و یک هدر برد :
https://news.1rj.ru/str/armeducation/203
والبته پروگرامر می باشد.
@armeducation
در استفاده از سیمولاتور کیل ممکن است موارد مختلفی پیش بیاد. برای بعضی میکروها از خود سیمولاتور کیل و هم از روی برد قابل استفاده اند و رجیسترها هم به صورت ویژآل دیده می شوند. بعضی فقط از روی برد قابل دیباگ کردن هستند . بعضی میکروها تنظیماتی در debug باید انجام شود تا پریفرالهای میکرو در سیمولاتور به صورت ویژآل دیده شود. و در بعضی مدل میکروها در دیباگ از روی برد تغییرات رجیسترها در پنجره های ویژآل اعمال نمی شود.
@armeducation
👍1
تفاوت کار فکری و یدی چیست!؟
ممکن است این تجربه را داشته باشید که در انجام کارهایی در حیطه الکترونیک (طراحی برد یا برنامه نویسی و ...) ذهنتان آن قدر درگیر انجام کار است که شب موقع استراحت نیز نمی توانید ذهنتان از فکر چگونگی حل مشکلات انجام کار، خارج کنید.
@armeducation
ممکن است در پروژه ای فایل های اد شده قفل باشد و نتوان در آنها تغییر ایجاد کرد. برای حل این موضوع در پوشه پروژه با کلیک راست بر روی فایل مذکور و زدن properties تیک read only برداشته شود.
@armeducation
👍1