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
This media is not supported in your browser
VIEW IN TELEGRAM
مقایسه نتیجه دو برنامه به صورت همزمان
سمت چپ در هر بار خواندن، 3 بایت
سمت راست در هر بار خواندن، 2400 بایت از SD کارت
@armeducation
Forwarded from armeducation (Mahdi Zarkoob)
@armeducation
انجام یک کار بزرگ با تقسیم آن به قسمت های کوچک قابل انجام تر است.
قبلا در پست های گذشته ذکر شد که ممکن است افرادی نتوانند پریفرال ها و قسمت های مختلف را با هم ترکیب کنند که منجر به انجام کاری شود.
به عنوان مثال کوچک، قسمتی جزیی از یک کار نمایش عکس روی TFT است. عکس ها در SD یا USB Flash است و سرعت نمایش مهم است. مراحل کار:
- خواندن یک فایل از SD کارت
- نحوه دیکد کردن یک عکس( عکس با فرمت BMP ساده تر و فرمت های دیگری مثل JPG مشکل تر)
- کار با TFT LCD و نحوه عملکرد آن
حال از ترکیب این که چند مرحله یک نمایش عکس ایجاد می شود. در صورت نمایش صحیح با این مسئله مواجه می شوید که چگونه سرعت نمایش را بالا برد!؟ به سراغ بهینه کردین برنامه ها می روید. سعی در استفاده از حداکثر توان CPU خواهید کرد. راه حل های مختلفی را امتحان می کنید . مانند ریختن در یک فضایی و سپس قرار دادن در ال سی دی که نخواهید مستقیما از SD کارت نمایش انجام شود. در صورت مطلوب نبودن ممکن است دنبال یک میکروی قوی تر باشید. اکنون باید برنامه های قبلا نوشته شده را به میکرو جدید منتقل کنید و .....
← چقدر مدت زمان صرف شده تا یک قسمت کوچک به نحو مطلوب انجام شود؟
سایر قسمت ها باقی مانده است! ممکن است همزمان لازم باشد از چند پریفرال استفاده شود. آیا کتابخانه های مورد استفاده این اجازه را می دهد؟ یا خود میکرو چنین امکانی دارد؟
حجمی از دیتا مرتب بایستی منتقل شود و نباید زمان CPU میکرو صرف آن شود چون از انجام سایر کارها باز می مانند. چندین کار بایستی با تقسیم زمان بین آنها انجام شود ....
در اینجا مشخص است که بین راه اندازی اولیه یک یا چند پریفرال تا پیاده سازی یک کار، تفاوت بسیار است.
@armeducation
انتگرال بگیر !
در نظر شما وقتی برای کار به جایی مراجعه می کنید این است که همه تواناییتان را شرح دهید. حال در نظر بگیرید به همین دلیل که شما توانایی زیادی دارید ردتان کنند!
آن وقت باید بشید مثل این حکایت :
روزگاری یک ليسانسه که ریاضیش خوب بوده و البته پارتی نداشته، هر چقدر دنبال کار می گرده بهش کار نمیدادند. بعد از کلی تلاش، متوجه میشه شهرداری تعدادی رفتگر بی سواد استخدام می کنه!!
میره شهرداری خودش رو معرفی می کنه و مشغول به کار میشه...!
بعد از دو سه ماه میگن همه باید در کلاسهای نهضت شرکت کنید! این بنده خدا هم شرکت می کنه!!
یه روز معلم محترم در کلاس چهارم، ایشون رو می بره پای تخته تا مساحت یک شکلی رو حساب کنه! تو این فکر بوده که انتگرال بگیره یا نه که می بینه همه دارن داد می زنن:
انتگرال بگیر...!!! 😁
—————————-
البته ایشون نمی دونسته اگه فیلم از وضعیت کاری خودش بذاره در نت شاید از ریاست جمهوری هم بهش زنگ بزنند 😉
Forwarded from armeducation (Mahdi Zarkoob)
آموزش مقدماتی میکروکنترلر LPC1788:
https://goo.gl/l4MmGP
تاپیک در فروم :
https://goo.gl/JEo7f9

آموزش پیشرفته میکروکنترلر LPC1788:
https://goo.gl/kKt72J
تاپیک:
https://goo.gl/qccMOi

@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
نمایش اولیه عکس 24 بیت BMP در میکروکنترلر LPC1788 از روی SD کارت با توابع ChaN جهت تست سرعت
در هر بار خواندن، 3 بایت از SD کارت
سرعت مافوق تصور!
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
نمایش اولیه عکس 24 بیت BMP در LPC1788 از روی SD کارت، توابع ChaN
در هر بار خواندن، 800*3 بایت از SD
به نظر شما چرا سرعت نمایش با این توابع پایین شده است و برای بهبود کاری می توان کرد؟
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
تست اولیه رفرش صفحه در TFT LCD 7 اینچ با LPC1788
GLCD_Clear
نحوه نمایش :
https://news.1rj.ru/str/armeducation/87
تفاوت تابع ارسال :
https://news.1rj.ru/str/armeducation/90
سرعت رفرش : حدود 170 میلی ثانیه
@armeducation
armeducation
نمایش اولیه عکس 24 بیت BMP در LPC1788 از روی SD کارت، توابع ChaN در هر بار خواندن، 800*3 بایت از SD به نظر شما چرا سرعت نمایش با این توابع پایین شده است و برای بهبود کاری می توان کرد؟ @armeducation
بعد از نمایش اولیه عکس از SD کارت با توابع چان (ChaN) در میکروکنترلر LPC1788 و مقایسه با نمایش عکس از SD کارت با توابع RL کیل سوالی که ایجاد می شود این است که چرا سرعت توابع متن باز چان کمتر است؟ آیا با دستکاری در گزینه های آن و بهینه سازی می توان به سرعت بالاتری دست پیدا کرد؟ (اگر کسی این کار را کرده است اطلاع دهد.) این موضوع از آن جهت برای شما مهم خواهد شد که سرعت نمایش مهم شود.
شاید اولین چیزی که به ذهن برسد این است که توابع پایه چان در این مثال توابع CMSIS را فرا می خواند . توابع CMSIS نیز از رجیسترها استفاده می کنند. بنابراین ما برای تست این موضوع، همین مثال را با میکروکنترلر LPC1768 انجام می دهیم. زیرا سمپل موجود از توابع CMSIS در توابع چان استفاده نکرده است. هر چند LPC1768 نه SDIO دارد نه درایور داخلی LCD .
اگر سرعت کم باشد در STM32F103VE نیز سرعت نمایش عکس از SD کارت با توابع چان نیز کمتر از RL کیل خواهد بود. اگر راهی برای بهینه سازی این توابع نباشد در این قسمت استفاده از STM32CubeMX نیز جالب نخواهد بود. زیرا STM32CubeMX نیز بعد از تنظیمات در SDIO کدهای توابع چان را در پروژه کیل ایجاد خواهد کرد.
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
نمایش اولیه عکس 24 بیت BMP در LPC1768 از روی SD کارت، توابع ChaN
در هر بار خواندن، 800*3 بایت از SD
مقایسه با :
https://news.1rj.ru/str/armeducation/168
سرعت کمتر ازRL کیل
چرا عکس قرینه و معکوسه؟
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
نمایش اولیه عکس 24 بیت BMP در STM32F103VE از روی SD کارت، توابع ChaN
در هر بار خواندن، 800*3 بایت از SD
مقایسه با :
https://news.1rj.ru/str/armeducation/56
سرعت کمتر ازRL کیل
@armeducation
armeducation
@armeducation انجام یک کار بزرگ با تقسیم آن به قسمت های کوچک قابل انجام تر است. قبلا در پست های گذشته ذکر شد که ممکن است افرادی نتوانند پریفرال ها و قسمت های مختلف را با هم ترکیب کنند که منجر به انجام کاری شود. به عنوان مثال کوچک، قسمتی جزیی از یک کار نمایش…
به عنوان یک تمرین ترکیبی:
- راه اندازی با TFT LCD
- خواندن از SD کارت
- خواندن نوشتن بر روی رم خارجی
می توان دیتا را ابتدا از SD کارت به رم خارجی میکرو منتقل کرد و سپس آن را بر روی TFT LCD قرار داد. مسلما انتقال دیتا از رم خارجی به TFT سریع تر از انتقال از SD به TFT خواهد بود.
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
نمایش عکس 24 بیت BMP در میکروکنترلر LPC1788 از روی رم خارجی.
ابتدا از SD به رم و سپس از رم به TFT جهت تست سرعت.
البته این کار بدون ایراد هم نیست.
@armeducation
همان طور که در مورد نمایش در TFT LCD ملاحظه کردید انجام یک قسمت از کار مرحله به مرحله انجام شد و در هر مرحله اگر ایرادی مشاهده شد بایستی سعی در برطرف کردن آن داشت. هدف قرار دادن این چند فیلم این بوده که به صورت عملی قسمتی از این روند را مشاهده کنید.
موارد دیگری نیز برای تست وجود دارد.
1- در اینجا به صورت فایلی قرائت از SD انجام شده است. به این دلیل که به سادگی عکس مورد نظر از را از کامپیوتر در sd کارت قرار می دهیم و نمایش می دهیم. ولی اگر بخواهیم به صورت سکتوری از sd بخوانیم مسلما باید سرعت خواندن بالاتر برود. البته به همان سادگی قبل دیگر عکس ها در sd قرار نمی گیرد.
2- سرعت نمایش از نند فلش نیز تست شود.
3- به جای فرمت BMP از فرمت JPG استفاده شود. برای این کار بایستی فرمت JPG دیکد شود.
4- ...
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
نمایش عکس 24 بیت BMP در LPC1788 از روی رم خارجی.
ابتدا از SD به رم :
704 میلی ثانیه
و سپس از رم به TFT :
346 میلی ثانیه
رفع ایراد نمایش.
مقایسه رفرش با :
https://news.1rj.ru/str/armeducation/667
@armeducation
در مبحث DMA :
https://news.1rj.ru/str/armeducation/204
برای انتقال دیتا از رم به پریفرال قبلا به صورت اجرای عملی ذکر شد که می توان از رم به پورت سریال انتقال دیتا انجام داد:
https://news.1rj.ru/str/armeducation/557
حال اگر بخواهید دیتاهایی را از رم بر روی یک پورت GPIO قرار دهید کافیست به جای آدرس پورت سریال از آدرس همان پورت gpio استفاده شود.
نکته ای که در اینجا باید در نظر بگیرید استفاده از یک تایمر برای تنظیم زمان ارسال دیتا به صورت مرتب است. به عنوان مثال می خواهید هر 1 ثانیه یک بار یک انتقال انجام شود. در پریفرال DMA میکروهای STM32 هر تایمر برای یک کانال خاص از DMA قابل استفاده است. در حالی که این محدودیت در میکروهای NXP وجود ندارد.
اگر می خواستید به صورت معمول در هر زیرروال وقفه تایمر، عمل انتقال دیتا از یک آرایه به یک پورت gpio انجام شود :
————————
void TIM2_IRQHandler (void)
{
GPIOD->ODR = Data[i++];
....
}
int main (void) {
SystemInit();
GPIO_Init ();
TIM2_Init ();
while (1)
{
}
}
@armeducation
—————————————
اگر بخواهید با DMA ، عمل انتقال از آرایه به gpio انجام شود :
int main (void) {
SystemInit();
GPIO_Init ();
TIM2_Init ();
DMA_Init ();
while (1)
{
}
}
و در نهایت بعد انتقال دیتا به تعداد مشخص شده، در زیروال وقفه DMA می توان یک اعلام اتمام قرار داد.
تفاوت در انتقال خودکار دیتاها در زمان مشخص شده بدون نیاز به وارد شدن به زیروال وقفه تایمر است.
@armeducation
تفاوت بین ارسال یک پیکسل برروی TFT در STM32F103RE و STM32F103VE
میکرو STM32F103VE دارای مد FSMC است.
میکروکنترلر STM32F103RE ارسال دیتا به صورت goio به ssd1963
تفاوت قابل تشخیص است!؟
@armeducation
Forwarded from armeducation (Mahdi Zarkoob)
کانال کاملا تخصصی میکروکنترلرهای ARM
شما معرف کانال به سایر دوستان خود باشید.
👇👇👇👇👇👇
@armeducation
با سپاس
@armeducation
کاربردی از رم به رم در DMA
همان طور که ذکر شد در بعضی مدل میکروها برای کار با ال سی دی یک فضای رمی در نظر گرفته شده است که با قرار دادن دیتا در این فضا نمایش بر روی ال سی دی انجام می شود.
https://news.1rj.ru/str/armeducation/90
https://news.1rj.ru/str/armeducation/678
همچنین یکی از اقسام انتقال دیتا رم به رم می باشد:
https://news.1rj.ru/str/armeducation/204
بنابراین به نظر شما با ترکیب این دو موضوع می توان به جای ارسال پیکسل به پیکسل توسط cpu به صورت polling به درایور ال سی دی یا خود ال سی دی از dma برای نمایش استفاده کرد!؟
آیا تاکنون این موضوع را اجرایی کرده اید؟
در اینجا هدف استفاده از امکانات میکرو برای نمایش سریع تر در TFT LCD است.
@armeducation
اولین پروژه با ARM بعد از دوره آموزشی میکروکنترلر stm32
درایور ۴ کانال موتور براشلس ، موتورهای اسکوتر
با تشکر از آقای مهندس رضا محزون بابت ارسال
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
اجرای عملی درایو ۴ کانال موتورهای براشلس
قابلیت کنترل مجزای سرعت و جهت ۴ عدد موتور براشلس
@armeducation
توضیح مختصر ارسالی از عملکرد درایور :
درایو ۴ کانال موتورهای براشلس
قابلیت کنترل مجزای سرعت و جهت ۴ عدد موتور براشلس سنسور دار (مثل موتور اسکوتر) از طریق سیگنال های مختلف ورودی (i2c,pwm,analog)

ولتاژ ورودی ۴۲ ولت و توان هر خروجی ۵۰۰ وات

کاربرد اینگونه درایو موتورها استفاده در ربات های سنگین وزن نظامی به منظور راه اندازی سیستم حرکتی ، ویلچر ، موتور سیکلت و دوچرخه های برقی و تمامی سیستم هایی که از موتورهای براشلس به منظور نیروی حرکتی استفاده میکنند
@armeducation