armeducation
3.59K subscribers
377 photos
329 videos
115 files
376 links
آموزش حرفه ای میکروکنترلرهای ARM

ادمین:
@mzarkoob
مهندس مهدی زرکوب
شروع مطالب :
https://t.me/armeducation/1
اینستاگرام :
@armeducation
کانال ایتا:
https://eitaa.com/armeducation
همراه :
09359956361
Download Telegram
رسم مستطیل سر گرد با ترکیب دو شکل دایره و مستطیل در TFT LCD
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
شرح جزئیات رسم مستطیل سر گرد با ترکیب دو شکل دایره و مستطیل در TFT LCD
https://www.aparat.com/v/Pz7S8

@armeducation
جایگاه میکروی stm32f767 در بین میکروهای سری STM32F7x7
مشخصات و ویژگی ها :
216 MHz frequency
https://www.st.com/en/microcontrollers-microprocessors/stm32f767ig.html
armeducation
انتقال اطلاعات به نند و نمایش روی ال سی دی جهت مشاهده نتیجه استفاده از بلوک سوخته در نند فلش https://t.me/armeducation/1057 ابتدا انتقال عکس ها از SD به NAND Flash (برای یک بار) سپس با هر بار روشن شدن دستگاه انتقال از نند فلش به RAM خارجی و سپس نمایش از رم…
Media is too big
VIEW IN TELEGRAM
اجرای عملی اصلاح بلوک سوخته برای نمایش صحیح عکس ها روی TFT
میکروکنترلر : LPC1788
نند فلش : K9F2G08U0B
در مرحله نوشتن در page ها مجدد بایستی همان دیتا قرائت و مقایسه شود. اگر یکی نبود آن بلوک رد شود و در بلوک بعدی مجدد رایت شود.
شماره بلوک های مشکل دار در جایی ذخیره می شود.
موقع خواندن از نند و ریختن در رم خارجی از آن بلوک هایی که مشکل دار بودند قرائتی انجام نمی شود.
تعداد و شماره بلوک سوخته در هر نند فلش متفاوت است. بنابراین برنامه بایستی تمام حالات را پوشش دهد.
https://www.aparat.com/v/hF351

@armeducation
عید است ولی بدون او غم داریم
عاشق شده ایم و عشق را کم داریم
ای کاش که این عید ظهورش برسد
این گونه هزار عید با هم داریم

عید نیمه شعبان مبارک

@armeducation
Forwarded from armeducation (Mahdi Zarkoob)
کاربردی از رم به رم در DMA
همان طور که ذکر شد در بعضی مدل میکروها برای کار با ال سی دی یک فضای رمی در نظر گرفته شده است که با قرار دادن دیتا در این فضا نمایش بر روی ال سی دی انجام می شود.
https://t.me/armeducation/90
https://t.me/armeducation/678
همچنین یکی از اقسام انتقال دیتا رم به رم می باشد:
https://t.me/armeducation/204
بنابراین به نظر شما با ترکیب این دو موضوع می توان به جای ارسال پیکسل به پیکسل توسط cpu به صورت polling به درایور ال سی دی یا خود ال سی دی از dma برای نمایش استفاده کرد!؟
آیا تاکنون این موضوع را اجرایی کرده اید؟
در اینجا هدف استفاده از امکانات میکرو برای نمایش سریع تر در TFT LCD است.
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
زمان انتقال عکس از میکرو به tft به چند روش مختلف
ال سی دی 7 اینچ 800 در 480 پیکسل
عکس 16 بیت bmp
به نظر شما در این میکرو چرا زمان انتقال عکس با dma از رم به رم چند میلی ثانیه بیشتر از انتقال به روش رم به رم می باشد؟
@armeducation
armeducation
کاربردی از رم به رم در DMA همان طور که ذکر شد در بعضی مدل میکروها برای کار با ال سی دی یک فضای رمی در نظر گرفته شده است که با قرار دادن دیتا در این فضا نمایش بر روی ال سی دی انجام می شود. https://t.me/armeducation/90 https://t.me/armeducation/678 همچنین یکی…
قبلا این موضوع را مطرح کردم که برای نمایش عکس روی tft در میکروهایی که درایور داخلی دارند می توان از dma نیز استفاده کرد. بعد از حدود یک و نیم سال! فرصت و البته نیاز شد تا آن را اجرایی کنم.
https://t.me/armeducation/1085
در اجرایی کردن این موضوع نکات و سوالات مختلفی به وجود آمد که با دیدن فیلم احیانا برای شما هم پیش آمده است. که می توانید در گروه مطرح کنید.
در حین انجام این کار بسیار علاقه مند بودم نتیجه اجرا را مشاهده کنم و تصور این بود سرعت نمایش با dma خیلی بهتر خواهد شد. ولی در عمل در مقایسه با حالت رم به رم (که به صورت polling می باشد) اینگونه نشد هر چند خیلی بهتر از حالت عادی انتقال از رم به tft بود.
پریفرال های هر میکرو قابلیت هایی دارد که در انجام کار خود را نشان می دهند. در واحد dma این میکروی lpc1788 تعداد دفعات انتقال 4095 می باشد. بنابراین برای جابجایی یک فایل عکس بین رم بایستی حدود 200 بار انتقال انجام شود و در زیروال وقفه dma مجدد تنظیمات و فعال سازی. اگر در میکرویی تعداد دفعات انتقال را بتوان بیشتر انتخاب کرد مسلما زمان میکرو کمتر در زیروال وقفه هدر میرود. در هر صورت اینکه در حین نمایش عکس، cpu درگیر نباشد بسیار خوب است و چند میلی ثانیه بیشتر از حالت رم به رم اصلا مهم نیست.
در اینجا به چند موضوع توجه شود :
- نوع کد نویسی برای افزایش سرعت انتقال
- استفاده از ظرفیت های میکرو برای انجام بهتر یک کار
- هر میکرویی دارای یک ظرفیتی است و بایستی در همان حد از آن انتظار داشت.
@armeducatio
1
armeducation pinned Deleted message
armeducation
تفاوت rtc در میکروکنترلر LPC1768 و STM32F10x : در LPC1768 رجیسترهای جدایی برای ثانیه، دقیقه ساعت همین طور روز، ماه و سال وجود دارد که صرفا این مقادیر خوانده شده و نمایش داده می شود. ولی در STM32F1 یک عدد به عنوان شمارنده (RTC counter register) وجود دارد که…
تفاوت rtc در میکروکنترلر STM32F4 و STM32F10x :
در STM32F1 یک عدد به عنوان شمارنده (RTC counter register) وجود دارد که زمان و تاریخ باید به صورت نرم افزاری از آن استخراج شود و دارای یک آلارم است.
واحد RTC میکروی stm32f429 بسیار مفصل تر است. این واحد دارای یک رجیستر جدا برای اعمال ثانیه، دقیقه ساعت همین طور یک رجیستر جدا برای روز، ماه و سال و روز هفته وجود دارد. همچنین دارای دو آلارم است. سایر ویژگی ها در رفرنس منوال ذکر شده که بنا به نیاز می توان از آن استفاده کرد.
@armeducation
نظرتون چیه پشتیبانی مجموعه فیلم های آموزشی بشه تا این حد!؟ 😁
@armeducation
Forwarded from armeducation (Mahdi Zarkoob)
فیلم آموزش STM32F1 مقدماتی متوسط
فروشگاه:
https://goo.gl/oMHSom
پاسخگویی به سوالات :
https://goo.gl/2Zr5Qg

فیلم پیشرفته
فروشگاه :
https://goo.gl/JBvEZg
سوالات :
https://goo.gl/XVsMBf
@armeducation
stm32cubemx_v5-6-1.exe
176.1 MB
نرم افزار STM32CubeMX نسخه 5.6.1
پسورد :
👉 @armeducation
armeducation
sun.java.7.0.80.x64.exe
Java.SE.Runtime.Environment.8.Update.251.x64.exe
73.7 MB
جاوا لازم برای نصب cubemx نسخه 64 بیتی
👉 @armeducation
en.stm32cubef1.zip
109.8 MB
پک stm32F1 ورژن 1.8.0برای نرم افزار STM32CubeMX
👉 @armeducation
Forwarded from armeducation (Mahdi Zarkoob)
مجموعه فیلم های آموزش کار با نرم افزار STM32CubeMX و توابع HAL

1-1- نحوه ایجاد پروژه در نرم افزار STM32CubeMX برای keil و پروگرام کردن بر روی برد
https://t.me/armeducation/270
2-1- نحوه تنظیمات در نرم افزار STM32CubeMX برای خروجی کردن پایه ها
https://t.me/armeducation/282
2-2- نحوه تنظیمات در نرم افزار STM32CubeMX برای ورودی کردن پایه ها
https://t.me/armeducation/284
3-1- نحوه تنظیمات در نرم افزار STM32CubeMX برای وقفه خارجی
https://t.me/armeducation/287
4-1- نحوه تنظیمات در نرم افزار STM32CubeMX برای پورت سریال و ارسال یک رشته
https://t.me/armeducation/290
4-2- دریافت یک کاراکتر و رشته از پورت سریال با استفاده از توابع HAL
https://t.me/armeducation/295
4-3- دریافت یک کاراکتر از پورت سریال با استفاده از وقفه در توابع HAL
https://t.me/armeducation/301
5-1- راه اندازی تایمر و وقفه آن با تنظیمات در STM32CubeMX
https://t.me/armeducation/331
5-2- راه اندازی PWM با تنظیمات در STM32CubeMX
https://t.me/armeducation/334
6-1- راه اندازی ADC با تنظیمات در STM32CubeMX
https://t.me/armeducation/341
6-2- استفاده از وقفه در راه اندازی ADC با تنظیمات در STM32CubeMX
https://t.me/armeducation/343
7-1- راه اندازی DAC با تنظیمات در STM32CubeMX
https://t.me/armeducation/346
8-1- راه اندازی RTC با تنظیمات در STM32CubeMX
https://t.me/armeducation/353
8-2- وقفه RTC با تنظیمات در STM32CubeMX
https://t.me/armeducation/358

@armeducation
1
معلم با آموزش چیزی را نمی سازد. کسانی را آموزش می دهد که آنها آینده را می سازند.
12 اردیبهشت روز بزرگداشت مقام آموزگار، استاد و معلم را برتمامی تلاشگران این عرصه تبریک می گوییم.
@armeducatin
en.stm32cubef4_v1-25-0.zip
636.4 MB
پک stm32F4 ورژن 0-25-1 برای نرم افزار STM32CubeMX
👉 @armeducation
نقل قول یک خاطره از مهندس کی نژاد که از چندین سال قبل در ذهن من مانده بود :
در این پست قصد دارم جزئیات نسبتا طولانی یک مشکل مشاهده شده در جریان برنامه نویسی اسمبلی را به عنوان تجربه ای برای مخاطبین محدود این موضوع توضیح دهم.
در عملکرد کد مفصلی که به منظور استفاده از حداکثر ظرفیت پردازشی XMEGA با زبان اسمبلی نوشته شده، مشکل عجیبی مشاهده شد به این ترتیب که در ابتدای روز و بعد از اولین بار بعد از روشن کردن برد، ارتباط RS485 با برد برقرار نمی شد و عملکرد آن متوقف می شد. اما با تغییراتی در نرم افزار و تست های مجدد، مسئله ظاهرا حل می شد. با این وجود در روز بعد مجددا بعد از روشن کردن سیستم همین مشکل برقرار بود. در گام اول این مورد به نظر رسید که مشکل ناشی از تغییر فرکانس کلاک سیستم به دلیل تغییر حرارت محیط و سرد شدن هوا در طول شب است. بنابراین منبع کلاک از یک کریستال خارجی و سپس رساندن آن با PLL به فرکانس بالاتر انتخاب شد. اما با عدم رفع مشکل، این مورد به نظر رسید که شاید PLL در سری A به هر دلیلی درست عمل نمی کند. پس سری AU جایگزین آن گردید. با برقرار بودن مشکل این احتمال مطرح شد که شاید اصولا PLL دارای مشکلی در پایداری است. بنابراین بجای فرکانس 32 مگاهرتز، فرکانس کلاک به 16 مگاهرتز با تامین مستقیم از کریستال خارجی کاهش داده شد. اما همچنان در روز بعد ارتباط سریال به درستی برقرار نمی شد. نکته قابل تامل این بود که در زمان جواب دادن برد، با قطع و وصل تغذیه همچنان برد عمل می کرد. اما با گذشت یک روز این مشکل خود را نشان می داد. برای بررسی بیشتر تاثیر دما، از روش قرار دادن برد در فریزر و تست آن استفاده شد که بنا به مشاهدات بعد از هربار قرار دادن برد در فریزر و گذشت مدت زمانی این مشکل خود را نشان می داد. در این مرحله بجای صبر یکروزه برای تست هرگونه تغییرات نرم افزاری و سخت افزاری، امکان تست عملکرد در فاصله زمانی کوتاهتر فراهم شد. مورد بسیار عجیب در این مرحله این بود که بعد از سرد شدن برد و ایجاد مشکل، اگر نرم افزار قبلی مجددا پروگرام می شد، با وجود سرد بودن برد مشکل برطرف می گردید. اما اگر قبل از پروگرام شدن، میکروکنترلر ریست می شد، تاثیری در درست عمل کردن نرم افزار نداشت. در این وضعیت این سوال پیش آمد که آیا ممکن است سرمای موجود باعث پاک شدن محتوای flash شود؟ برای پاسخ به این سوال در وضعیت بوجود آمدن مشکل ناشی از سرما، برنامه verify شد که محتوای flash صحیح بود. سوال مطرح در این شرایط این بود که چرا در بردهای مشابه مبتنی بر AVR چنین مسئله ای مشاهده نمی شود و برای تست یک برد AVR در فریزر قرار داده شد که باز هم به خوبی عمل می کرد. در این مرحله این سوال ایجاد شد که شاید مشکلی در رابطه با خانواده XMEGA در دماهای پائین وجود داشته باشد. برای تست این مسئله برد XMEGA دیگری با سخت افزار و نرم افزار متفاوت در فریزر قرار داده شد. اما هیچ مشکلی در عملکرد آن مشاهده نشد.
بعد از صرف زمان بسیار زیاد مشخص شد که این سرما نیست که منجر به بروز چنین وضعیتی می شود. بلکه اگر تمام خازن های موجود روی برد تخلیه شوند، در همان دمای معمول هم عملکرد نادرست فورا خود را نشان می دهد. در نهایت بعد از انجام آزمایش های متعدد و بررسی همه جانبه مشخص شد که همه این مشکلات ناشی از عدم مقداردهی اولیه به یک متغیر تعریف شده در sram است که باعث می شود بر اساس یک دستور IJMP پرشی به یک نقطه نامشخص از flash انجام شود و عملکرد خروجی برنامه مختل شود. با اصلاح این مقداردهی همان سری A هم با فعال کردن PLL با مرجع کریستال خارجی به خوبی جواب داد و هیچ مشکلی در دماهای مختلف هم مشاهده نشد. اما سوال اصلی در این داستان طولانی این است که چرا سیستم در پایان هر روز جواب می داد، اما در روز بعد و یا تخلیه خازن های آن مشکل ایجاد می شد؟ پاسخ تمام سوالات این است که با خاموش ماندن برد در زمان طولانی و یا تخلیه خازن های آن، محتوای sram پاک می شود و دارای مقدار نامشخصی می شود (محتوای sram بعد از reset پاک نمی شود) که باعث بروز مشکل می گردد. اما ظاهرا پروگرام کردن توسط پروگرامر mkii باعث صفر کردن محتوای sram هم می شود که سبب عملکرد درست نرم افزار می شود و در پایان هر روز که برد بدون مشکل عمل می کرد، قبل از آن حتما یکبار پروگرام شده بود و آدرس مورد نظر دارای مقدار صفر شده بود. اما در صبح روز بعد حافظه کلا پاک شده بود و پرش به آدرس غیر مشخص انجام می شد که حاصل آن عمل نکردن خروجی نرم افزار بود.
ادامه پست بعد
@armeducation