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
تفاوت کار فکری و یدی چیست!؟
ممکن است این تجربه را داشته باشید که در انجام کارهایی در حیطه الکترونیک (طراحی برد یا برنامه نویسی و ...) ذهنتان آن قدر درگیر انجام کار است که شب موقع استراحت نیز نمی توانید ذهنتان از فکر چگونگی حل مشکلات انجام کار، خارج کنید.
@armeducation
ممکن است در پروژه ای فایل های اد شده قفل باشد و نتوان در آنها تغییر ایجاد کرد. برای حل این موضوع در پوشه پروژه با کلیک راست بر روی فایل مذکور و زدن properties تیک read only برداشته شود.
@armeducation
👍1
در میکروکنترلرهای ARM تعدادی تایمر قرار داده شده است. هر میکرویی تعدادی تایمر با امکانات مختلفی دارد. در این پست :
https://news.1rj.ru/str/armeducation/59
اشاره ای به تفاوت تایمرها در میکروهای LPC و STM32 شده است.
در LPC1768 , LPC1788 از شرکت NXP تعداد 4 تایمر 32 بیتی وجود دارد و واحدهای pwm و mcpwm و QEM دارای پریفرال های جداگانه می باشند.
در میکروی stm32f103ve از شرکت ST تعداد 8 تایمر 16 بیتی وجود دارد که در دسته بندی های تایمر پیشرفته و عمومی و پایه قرار میگیرد. pwm و mcpwm و QEM نیز در همین تایمر قرار دارد و واحد مجزایی ندارد. تعداد تایمرها در مدل های میکروهای stm32 با هم یکسان نیست. بنابراین در انتخاب میکرو لازم است به نوع کاری که قصد انجام دارید توجه بیشتری داشته باشید که مطابق امکانات میکرو باشد.
@armeducation
یکی از امکانات میکروکنترلرها واحد ADC است.
در میکروی LPC1768 تعداد 8 کانال آنالوگ به دیجیتال قرار داده شده است و در میکروهای STM32F1 تعداد 16 کانال ADC قرار دارد. امکانات واحد ADC در میکروهای مختلف متفاوت است.
ساده ترین عملکرد این واحد خواندن یک کانال است. بعد از پیکربندی اولیه روال کار در این حالت بدین صورت می باشد :
1- دستور آغاز تبدیل
2- منتظر شدن برای تبدیل ولتاژ ورودی به مقدار دیجیتال خواندن این مقدار
3- پایان تبدیل
و نمایش مقدار قرائت شده برروی نمایشگر
حالت های مختلف دیگری برای استفاده از آنالوگ به دیجیتال وجود دارد. خواندن پشت سر هم از یک کانال و خواندن پشت سر هم از چند کانال از جمله این حالات هستند که تنظیمات خاص خود را دارد و بنا به نیاز از آنها استفاده خواهد شد. سرعت نمونه برداری و دقت نمونه برداری پارامترهای مهم این واحد هستند. .
از کاربردهای ADC خواندن سنسورهای آنالوگ و نمونه برداری از ولتاژ ورودی(مثلا ولتاژ برق شهر و سیگنال صوت ) می باشد.
@armeducation
در پست :
https://news.1rj.ru/str/armeducation/29
به صورت عملی ذکر شد که می توان با DAC پخش فایل صوتی انجام داد. در پست قبلی هم ذکر شد که با ADC می توان نمونه گیری از فایل صوتی داشت. با ترکیب این دو می توان نمونه گیری و پخش فایل صوتی به صورت "هم زمان" و "غیر همزمان" را انجام داد. در اینجا محاسبات نرخ نمونه برداری با ADC و زمان قرار دادن نمونه های گرفته شده در DAC برای استفاده از واحد تایمر اهمیت دارد.
@armeducation
برای انجام کار یا پروژه ای داشته هایی لازم است. مهتر آن، استفاده این داشته ها در موقع مناسب خود است. گاهی در حین کار، متوجه نداشته هایی می شویم که لازم است فرا بگیریم. اینجاست که قدر آن اطلاعات را بیشتر می دانیم.
چیزی هم که بر فن آموزان لازم است قدر دانستن مطالبیست که در حال فراگیری هستند.
@armeducation
کاربرد عبارت volatile :
ممکن است در برنامه ای با این کلمه در تعریف متغییر مواجه شده باشید. همچنین در دیفاین رجیسترها نیز به صورت __IO استفاده شده است :
__IO uint32_t FIODIR;
ممکن است متغییر در پردازش جاری تغییر نکند مثلا در وقفه مقدار آن تغییر کند، بدون آنکه کامپایلر متوجه این تغییر شود. و این تغییر را اعمال نکند. با استفاده از این کلمه در تعریف متغییر در هر بار فراخوانی اسم متغیر در طول برنامه اصلی، مقدار آن را از محل حافظه خوانده شده و اعمال می شود.
@armeducation
نمونه ای از تبلیغاتی که موارد متعددی از آن هم مشاهده شده، کسانی هستند که قصد دارند تازه وارد بازار کار شوند و خود اقدام به جذب مشتری نمایند. مشاهده می شود انواع مختلف کارها ذکر شده است!
@armeducation
در پست های قبلی ذکر شد انتخاب میکرو بایستی متناسب با کاری باشد که قرار است انجام شود.
https://news.1rj.ru/str/armeducation/62
قیمت (در کنار امکانات) مورد مهمی است که مخصوصا برای کار تولیدی نمی توان آن را نادیده گرفت. بسیار گفته می شود که چون میکروهای stm قیمت کمتری دارد بنابراین با آن کار کن یا شروع کن! قیمت کمتر صحیح است ولی فقط قیمت نیست. اگر دو مدل میکرو تقریبا به یک میزان کار شما را راه می اندازد، احتمال زیاد آن که قیمت کمتری دارد را انتخاب می کنید.
به عنوان نمونه، دو میکروی هم رده مانند LPC1768 و STM32F107VC که هر دو cortex-m3 دارای 100 پایه و اترنت و USB , CAN هستند. این دو را از همه لحاظ با هم مقایسه کنید. در حال حاضر قیمت LPC1768 دو سه هزار تومانی از STM32F107VC گرانتر است. موارد بارزتر:
LPC1768 :
کلاک 100 مگاهرتز، 512 کیلو فلش، 8 ورودی ADC و یک خروجی DAC ، تعداد 4 تایمر 32 بیتی، 4 سریال ...
STM32F107VC :
کلاک 72 مگاهرتز، 256 کیلو فلش، 16 ورودی ADC و دو خروجی DAC ، تعداد 7 تایمر 16 بیتی، 5 سریال ...
همان طور که مشاهده می شود در مواردی امکانات lpc بیشتر است در مواردی دیگر stm. بنابراین نوع کار، قیمت، چیدمان پایه ها، سمپل های مناسب، امکانات یک پریفرال مورد نیاز، پشتیبانی و ... پارامترهای تعیین کننده در انتخاب میکرو هستند.
@armeducation
یکی از امکانات میکروکنترلرها واحد DAC است.
راه اندازی این واحد ساده است و بعد از تنظیمی ساده کافیست عددی در داخل رجیستر دیتا قرار داده شد تا به آنالوگ بین 0 تا 3.3 ولت تبدیل کند. از کاربردهای این واحد که در پست های قبلی هم از آن در عمل استفاده شد پخش فایل صوتی wave است.
در میکروی LPC1768 تعداد 1 کانال دیجیتال به آنالوگ 10 بیتی قرار داده شده است. در بعضی مدل میکروهای STM32F1 تعداد 2 دیجیتال به آنالوگ 12 بیتی قرار دارد و در بعضی دیگر چنین واحدی ندارد. امکاناتی هر کدام از این میکروها در این واحد در اختیار قرار می دهد :
STM32F10x:
●Two DAC converters: one output channel each
● Left or right data alignment in 12-bit mode
● Synchronized update capability
● Noise-wave generation
● Triangular-wave generation
● Dual DAC channel independent or simultaneous conversions
● DMA capability for each channel
● External triggers for conversion
●Input voltage reference VREF+

LPC1768 :
• 10-bit digital to analog converter
• Resistor string architecture
• Buffered output
• Power-down mode
• Selectable speed vs. power
• Maximum update rate of 1 MHz.
@armeducation
همان طور که ذکر شد از کاربردهای واحد DAC پخش فایل صوتی wave است.
برای این کار لازم است دیتا در فایل صوتی به صورت مناسب در DAC قرار داده شود. از آنجا که فایل wav نیاز به دیکد خاصی ندارد ساده تر است ابتدا فایل صوتی با نرم افزارهای مبدل به این فرمت در بیاید و سپس در فلش خود میکرو یا sd کارت برای قرائت و پخش قرار داده شود. فرمت یک فایل wave بدین صورت می باشد :
http://soundfile.sapp.org/doc/WaveFormat/
همان طور که مشاهده می شود 44 بایت اول اطلاعات فایل است و بعد از آن دیتا قرار دارد. پخش فایل صوتی می بایستی بر اساس این اطلاعات قرار داده شده در ابتدای فایل انجام شود. دیتای فایل صوتی دیکد نشده به صورت های 8 بیت و 16 بیت(mono,stereo) می باشد.
@armeducation
همان طور که در پست های قبلی ذکر شد و در عمل هم اجرا شد، یکی از قابلیت های میکروکنترلرهای ARM تبدیل شدن به رم ریدر توسط USB Device می باشد:
https://news.1rj.ru/str/armeducation/65
https://news.1rj.ru/str/armeducation/66
در نظر بگیرید در کاری مرتب باید در sd کارت توسط میکرو فایلی بریزید، سپس خود فایل و محتوای آن را چک کنید. هر بار باید sd کارت را از برد میکرو جدا کرده و به رم ریدر بزنید تا بتوانید این چک کردن را انجام دهید.
به جای این کار می توانید در برنامه تبدیل کننده میکروکنترلر ARM به رم ریدر توسط USB Device، کار خود را انجام دهید که هر بار که کابل یو اس بی را از pc به برد زدید محتویات داخل sd کارت هم مشاهده شود و دیگر نیازی به رم ریدر نباشد! در اینجا باید به این نکته که البته در پست های قبلی :
https://news.1rj.ru/str/armeducation/151
به آن اشاره شد توجه داشته باشید که در صورتی که چندین کار لازم باشد انجام شود ممکن است نتوان در یک پروژه با هم آنها را فعال کرد. مثلا تبدیل شدن میکرو به رم ریدر برای SD کارت با RL و هم زمان خواندن و نوشتن روی SD با RL .
@armeducation
Forwarded from armeducation (Mahdi Zarkoob)
در صورتی که مطالب آموزشی کانال را مفید می دانید شما معرف کانال به سایر دوستان خود باشید. 👇👇👇
با سپاس
@armeducation
یکی از امکانات میکروکنترلرها واحد PWM است.
حال ممکن است در میکرویی مانند LPC1768 دارای واحد مجزایی باشد یا در میکرویی مانند STM32F103 در واحد تایمر قرار داشته باشد. بنا به میکرو این واحد می تواند دارای امکانات و تعداد کانال های خروجی مختلفی باشد. در این واحد با مقداری که برای فرکانس مشخص می کنید می توانید duty cycle را در حین پالس دهی تغییر دهید. این تغییر duty cycle کاربردهای مختلفی می تواند داشته باشد. ساده ترین آن کم نور و پور نور کردن یک led متصل به میکرو می باشد. در کل(گاهی به جای DAC) در جایی که بخواهیم با کاهش و افزایش duty cycle مقدار dc ولتاژی را تغییر دهیم کاربرد دارد. نمونه دیگر کاربرد PWM ، در پخش فایل صوتی می باشد.
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
خروجی دیجیتال به آنالوگ(DAC) یک فایل صوتی در میکروکنترلرlpc1768 در سیمولاتور کیل.
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
مشاهده افزایش و کاهش تدریجی مقدار دیوتی سایکل یک پالس PWM در سیمولاتور کیل
@armeducation
یکی از مواردی که برای مبحث یادگیری میکروکنترلرهای ARM لازم است، استفاده از برد می باشد. این برد می تواند یک برد آموزشی آماده باشد یا بردی باشد که خود فرد طراحی کرده است. معمولا برای یادگیری و راه اندازی سریع تر بهتر است از برد آموزشی آماده استفاده شود. البته در پست های قبلی ذکر شد با هزینه کمتری آموزشهای مقدماتی میکروکنترلرهای ARM را با استفاده از یک هدر برد ساده به صورت عملی می توان پیاده سازی کنید:
https://news.1rj.ru/str/armeducation/203
برای ساخت یک دستگاه هم بهتر است ابتدا با یک Evaluation Board و بِرد بُرد تست های سخت افزار و برنامه انجام شود و سپس برد نهایی زده شود.
این پست در باره مواردی است که بهتر است برای یک برد آموزشی لحاظ شود تا کارایی بهتری داشته باشد، صحبت خواهد شد.
-در حالت کلی باید این امکان باشد که کلیه امکانات میکروکنترلر مخصوصا قسمت های پیشرفته مانند SD,USB,Ethernet,Can و ...تست شود.
- چند باتون از چند پورت وجود داشته باشد تا بتوان مبحث ورودی gpio و وقفه خارجی را در چند پایه انجام داد. یکی از این باتون ها ورودی کانتر باشد بهتر خواهد بود.
- چند led از پورت های مختلف برای خروجی gpio وجود داشته باشد. همچنین اگر یکی از این led ها از خروجی یکی از pwm ها و یکی از این led ها خروجی تاگل سخت افزاری تایمرها باشد، بهتر خواهد بود.
- یک درایو Serial to USB برای اتصال راحت به یو اس بی pc . شناسایی این درایو روی ویندوز 8 و 10 هم انجام شود بهتر خواهد بود.
- سخت افزار لازم برای اتصال یک میکروفن و اتصال به یکی از کانالهای ADC .
- یک سوکت برای اتصال به اسپیکر از خروجی DAC برای پخش صوت.
- پایه های هدر بر روی برد منطبق با TFT LCD بدون تداخل با پایه های اصلی دیگر مانند DAC و SD و ...
- ورودی تغذیه بین 5 تا 12 یا 24 ولت.
- استفاده از پایه insert در sd کارت.
بنابراین طراح با اشراف به عملکرد تمام پایه های میکرو و کاربرد آن می تواند محصول کاربرپسندتری ارائه کند.
@armeducation
ای کاش فعالان در صنف و حیطه الکترونیک خود را بیشتر همکاران هم بدانند تا رقبایی که هر کار غیر اخلاقی برای حذف دیگری می کنند. شرط همکار بودن حمایت معقول از هم می باشد :
https://news.1rj.ru/str/KnowledgePlus/602
- به همکاری گفته می شود این سخت افزار یا برنامه دستگاه ما که طراح یا برنامه نویس قبلی ما روی آن کار کرده ایراداتی دارد که شما آن را رفع کن. سوال این است که چرا خود طراح یا برنامه نویس قبلی رفع ایراد نمی کند!؟ ممکن است به غلط پاسخ داده شود که وقت نمی کند، یا دیگر با ما همکاری ندارد یا به او دسترسی نداریم. "بدون تحقیق" قبول می کنیم یا شاید فرد را هم بشناسیم پشت سر او بد هم می گوییم تا با خراب کردن همکار، کار را به ما بدهند! (در اینجا حالت های دیگری مانند تحویل ندادن درست کار به کارفرما هم هست که مد نظر نیست)
- در مجموعه ای که کاری در اختیار کسی دیگر بوده و فرد جدیدی قرار است آن را در اختیار بگیرد، مهم است که چرا با فرد یا افراد قبلی ترک همکاری شده است. در صورت "عدم تحقیق" در این مورد یا بی توجهی به علل آن و پذیرفتن آن کار، ممکن است همان اتفاق برای ما هم بیافتد.
@armeducation
Forwarded from armeducation (Mahdi Zarkoob)
از دوستان عزیز تقاضامندم در صورت تمایل، مطالب پست ها را تنها بصورت فوروارد در سایر گروها و کانال ها (و سایت ها) قرار دهند و از کپی کردن مطالب بدون ذکر مرجع خودداری کنند.
با تشکر
@armeducation
تجربه عملی برنامه نویسی یکی از دانشپذیران دوره آموزشی برای کاربا واحد ADC:
در روال گفته شده
https://news.1rj.ru/str/armeducation/216
برای خواندن آنالوگ به دیجیتال از رجیستر دیتا
ADC_StartCnv();
while (!ADC1->SR & (1 « 1)){};
ADC_StopCnv();
در دستور while جای پرانتز و ! کمی جابجا شده بود:
while ! (ADC1->SR & (1 « 1)){};
بنابراین این خط عملکرد خود را نداشت و برنامه در آن گیر می کرد و اصلا خارج نمی شد.
کوچکترین مشکلی در برنامه نویسی ممکن است منجر به عدم کارکرد صحیح در عمل شود. همچنان که عدم تنظیم یک بیت در اینیشیالیز (چالش یک بیت) می تواند منجر به عدم کارکرد آن پریفرال شود :
https://news.1rj.ru/str/armeducation/61
تا زمانی که دانشپذیران اقدام عملی برای برنامه نویسی و اجرا روی برد میکروکنترلر نکنند و با مشکل مواجه نشوند نمی توانند ایرادات خود را متوجه شوند.
@armeducation