Forwarded from armeducation (Mahdi Zarkoob)
کاربردی از رم به رم در 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
همان طور که ذکر شد در بعضی مدل میکروها برای کار با ال سی دی یک فضای رمی در نظر گرفته شده است که با قرار دادن دیتا در این فضا نمایش بر روی ال سی دی انجام می شود.
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
Telegram
armeducation
تفاوت بین ارسال یک پیکسل برروی TFT در میکروکنترلر LPC1788 و LPC1768
میکروکنترلر LPC1788 دارای کنترلر LCD داخلی
میکروکنترلر LPC1768 توسط درایو، به LCD متصل است.
تفاوت قابل تشخیص است!؟
@armeducation
میکروکنترلر LPC1788 دارای کنترلر LCD داخلی
میکروکنترلر LPC1768 توسط درایو، به LCD متصل است.
تفاوت قابل تشخیص است!؟
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
زمان انتقال عکس از میکرو به tft به چند روش مختلف
ال سی دی 7 اینچ 800 در 480 پیکسل
عکس 16 بیت bmp
به نظر شما در این میکرو چرا زمان انتقال عکس با dma از رم به رم چند میلی ثانیه بیشتر از انتقال به روش رم به رم می باشد؟
@armeducation
ال سی دی 7 اینچ 800 در 480 پیکسل
عکس 16 بیت bmp
به نظر شما در این میکرو چرا زمان انتقال عکس با dma از رم به رم چند میلی ثانیه بیشتر از انتقال به روش رم به رم می باشد؟
@armeducation
armeducation
کاربردی از رم به رم در DMA همان طور که ذکر شد در بعضی مدل میکروها برای کار با ال سی دی یک فضای رمی در نظر گرفته شده است که با قرار دادن دیتا در این فضا نمایش بر روی ال سی دی انجام می شود. https://news.1rj.ru/str/armeducation/90 https://news.1rj.ru/str/armeducation/678 همچنین یکی…
قبلا این موضوع را مطرح کردم که برای نمایش عکس روی tft در میکروهایی که درایور داخلی دارند می توان از dma نیز استفاده کرد. بعد از حدود یک و نیم سال! فرصت و البته نیاز شد تا آن را اجرایی کنم.
https://news.1rj.ru/str/armeducation/1085
در اجرایی کردن این موضوع نکات و سوالات مختلفی به وجود آمد که با دیدن فیلم احیانا برای شما هم پیش آمده است. که می توانید در گروه مطرح کنید.
در حین انجام این کار بسیار علاقه مند بودم نتیجه اجرا را مشاهده کنم و تصور این بود سرعت نمایش با dma خیلی بهتر خواهد شد. ولی در عمل در مقایسه با حالت رم به رم (که به صورت polling می باشد) اینگونه نشد هر چند خیلی بهتر از حالت عادی انتقال از رم به tft بود.
پریفرال های هر میکرو قابلیت هایی دارد که در انجام کار خود را نشان می دهند. در واحد dma این میکروی lpc1788 تعداد دفعات انتقال 4095 می باشد. بنابراین برای جابجایی یک فایل عکس بین رم بایستی حدود 200 بار انتقال انجام شود و در زیروال وقفه dma مجدد تنظیمات و فعال سازی. اگر در میکرویی تعداد دفعات انتقال را بتوان بیشتر انتخاب کرد مسلما زمان میکرو کمتر در زیروال وقفه هدر میرود. در هر صورت اینکه در حین نمایش عکس، cpu درگیر نباشد بسیار خوب است و چند میلی ثانیه بیشتر از حالت رم به رم اصلا مهم نیست.
در اینجا به چند موضوع توجه شود :
- نوع کد نویسی برای افزایش سرعت انتقال
- استفاده از ظرفیت های میکرو برای انجام بهتر یک کار
- هر میکرویی دارای یک ظرفیتی است و بایستی در همان حد از آن انتظار داشت.
@armeducatio
https://news.1rj.ru/str/armeducation/1085
در اجرایی کردن این موضوع نکات و سوالات مختلفی به وجود آمد که با دیدن فیلم احیانا برای شما هم پیش آمده است. که می توانید در گروه مطرح کنید.
در حین انجام این کار بسیار علاقه مند بودم نتیجه اجرا را مشاهده کنم و تصور این بود سرعت نمایش با dma خیلی بهتر خواهد شد. ولی در عمل در مقایسه با حالت رم به رم (که به صورت polling می باشد) اینگونه نشد هر چند خیلی بهتر از حالت عادی انتقال از رم به tft بود.
پریفرال های هر میکرو قابلیت هایی دارد که در انجام کار خود را نشان می دهند. در واحد dma این میکروی lpc1788 تعداد دفعات انتقال 4095 می باشد. بنابراین برای جابجایی یک فایل عکس بین رم بایستی حدود 200 بار انتقال انجام شود و در زیروال وقفه dma مجدد تنظیمات و فعال سازی. اگر در میکرویی تعداد دفعات انتقال را بتوان بیشتر انتخاب کرد مسلما زمان میکرو کمتر در زیروال وقفه هدر میرود. در هر صورت اینکه در حین نمایش عکس، cpu درگیر نباشد بسیار خوب است و چند میلی ثانیه بیشتر از حالت رم به رم اصلا مهم نیست.
در اینجا به چند موضوع توجه شود :
- نوع کد نویسی برای افزایش سرعت انتقال
- استفاده از ظرفیت های میکرو برای انجام بهتر یک کار
- هر میکرویی دارای یک ظرفیتی است و بایستی در همان حد از آن انتظار داشت.
@armeducatio
Telegram
armeducation
زمان انتقال عکس از میکرو به tft به چند روش مختلف
ال سی دی 7 اینچ 800 در 480 پیکسل
عکس 16 بیت bmp
به نظر شما در این میکرو چرا زمان انتقال عکس با dma از رم به رم چند میلی ثانیه بیشتر از انتقال به روش رم به رم می باشد؟
@armeducation
ال سی دی 7 اینچ 800 در 480 پیکسل
عکس 16 بیت bmp
به نظر شما در این میکرو چرا زمان انتقال عکس با dma از رم به رم چند میلی ثانیه بیشتر از انتقال به روش رم به رم می باشد؟
@armeducation
❤1
armeducation
تفاوت rtc در میکروکنترلر LPC1768 و STM32F10x : در LPC1768 رجیسترهای جدایی برای ثانیه، دقیقه ساعت همین طور روز، ماه و سال وجود دارد که صرفا این مقادیر خوانده شده و نمایش داده می شود. ولی در STM32F1 یک عدد به عنوان شمارنده (RTC counter register) وجود دارد که…
تفاوت rtc در میکروکنترلر STM32F4 و STM32F10x :
در STM32F1 یک عدد به عنوان شمارنده (RTC counter register) وجود دارد که زمان و تاریخ باید به صورت نرم افزاری از آن استخراج شود و دارای یک آلارم است.
واحد RTC میکروی stm32f429 بسیار مفصل تر است. این واحد دارای یک رجیستر جدا برای اعمال ثانیه، دقیقه ساعت همین طور یک رجیستر جدا برای روز، ماه و سال و روز هفته وجود دارد. همچنین دارای دو آلارم است. سایر ویژگی ها در رفرنس منوال ذکر شده که بنا به نیاز می توان از آن استفاده کرد.
@armeducation
در STM32F1 یک عدد به عنوان شمارنده (RTC counter register) وجود دارد که زمان و تاریخ باید به صورت نرم افزاری از آن استخراج شود و دارای یک آلارم است.
واحد RTC میکروی stm32f429 بسیار مفصل تر است. این واحد دارای یک رجیستر جدا برای اعمال ثانیه، دقیقه ساعت همین طور یک رجیستر جدا برای روز، ماه و سال و روز هفته وجود دارد. همچنین دارای دو آلارم است. سایر ویژگی ها در رفرنس منوال ذکر شده که بنا به نیاز می توان از آن استفاده کرد.
@armeducation
نظرتون چیه پشتیبانی مجموعه فیلم های آموزشی بشه تا این حد!؟ 😁
@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
فروشگاه:
https://goo.gl/oMHSom
پاسخگویی به سوالات :
https://goo.gl/2Zr5Qg
فیلم پیشرفته
فروشگاه :
https://goo.gl/JBvEZg
سوالات :
https://goo.gl/XVsMBf
@armeducation
armeducation
sun.java.7.0.80.x64.exe
Java.SE.Runtime.Environment.8.Update.251.x64.exe
73.7 MB
جاوا لازم برای نصب cubemx نسخه 64 بیتی
👉 @armeducation
👉 @armeducation
en.stm32cubef1.zip
109.8 MB
پک stm32F1 ورژن 1.8.0برای نرم افزار STM32CubeMX
👉 @armeducation
👉 @armeducation
Forwarded from armeducation (Mahdi Zarkoob)
مجموعه فیلم های آموزش کار با نرم افزار STM32CubeMX و توابع HAL
1-1- نحوه ایجاد پروژه در نرم افزار STM32CubeMX برای keil و پروگرام کردن بر روی برد
https://news.1rj.ru/str/armeducation/270
2-1- نحوه تنظیمات در نرم افزار STM32CubeMX برای خروجی کردن پایه ها
https://news.1rj.ru/str/armeducation/282
2-2- نحوه تنظیمات در نرم افزار STM32CubeMX برای ورودی کردن پایه ها
https://news.1rj.ru/str/armeducation/284
3-1- نحوه تنظیمات در نرم افزار STM32CubeMX برای وقفه خارجی
https://news.1rj.ru/str/armeducation/287
4-1- نحوه تنظیمات در نرم افزار STM32CubeMX برای پورت سریال و ارسال یک رشته
https://news.1rj.ru/str/armeducation/290
4-2- دریافت یک کاراکتر و رشته از پورت سریال با استفاده از توابع HAL
https://news.1rj.ru/str/armeducation/295
4-3- دریافت یک کاراکتر از پورت سریال با استفاده از وقفه در توابع HAL
https://news.1rj.ru/str/armeducation/301
5-1- راه اندازی تایمر و وقفه آن با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/331
5-2- راه اندازی PWM با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/334
6-1- راه اندازی ADC با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/341
6-2- استفاده از وقفه در راه اندازی ADC با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/343
7-1- راه اندازی DAC با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/346
8-1- راه اندازی RTC با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/353
8-2- وقفه RTC با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/358
@armeducation
1-1- نحوه ایجاد پروژه در نرم افزار STM32CubeMX برای keil و پروگرام کردن بر روی برد
https://news.1rj.ru/str/armeducation/270
2-1- نحوه تنظیمات در نرم افزار STM32CubeMX برای خروجی کردن پایه ها
https://news.1rj.ru/str/armeducation/282
2-2- نحوه تنظیمات در نرم افزار STM32CubeMX برای ورودی کردن پایه ها
https://news.1rj.ru/str/armeducation/284
3-1- نحوه تنظیمات در نرم افزار STM32CubeMX برای وقفه خارجی
https://news.1rj.ru/str/armeducation/287
4-1- نحوه تنظیمات در نرم افزار STM32CubeMX برای پورت سریال و ارسال یک رشته
https://news.1rj.ru/str/armeducation/290
4-2- دریافت یک کاراکتر و رشته از پورت سریال با استفاده از توابع HAL
https://news.1rj.ru/str/armeducation/295
4-3- دریافت یک کاراکتر از پورت سریال با استفاده از وقفه در توابع HAL
https://news.1rj.ru/str/armeducation/301
5-1- راه اندازی تایمر و وقفه آن با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/331
5-2- راه اندازی PWM با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/334
6-1- راه اندازی ADC با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/341
6-2- استفاده از وقفه در راه اندازی ADC با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/343
7-1- راه اندازی DAC با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/346
8-1- راه اندازی RTC با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/353
8-2- وقفه RTC با تنظیمات در STM32CubeMX
https://news.1rj.ru/str/armeducation/358
@armeducation
Telegram
armeducation
1-1- نحوه ایجاد پروژه در نرم افزار STM32CubeMX برای keil و پروگرام کردن بر روی میکروی stm32f103ve
لینک مشاهده در آپارات :
https://www.aparat.com/v/fExms
#آموزش_توابع_هال_F1
@armeducation
لینک مشاهده در آپارات :
https://www.aparat.com/v/fExms
#آموزش_توابع_هال_F1
@armeducation
❤1
معلم با آموزش چیزی را نمی سازد. کسانی را آموزش می دهد که آنها آینده را می سازند.
12 اردیبهشت روز بزرگداشت مقام آموزگار، استاد و معلم را برتمامی تلاشگران این عرصه تبریک می گوییم.
@armeducatin
12 اردیبهشت روز بزرگداشت مقام آموزگار، استاد و معلم را برتمامی تلاشگران این عرصه تبریک می گوییم.
@armeducatin
en.stm32cubef4_v1-25-0.zip
636.4 MB
پک stm32F4 ورژن 0-25-1 برای نرم افزار STM32CubeMX
👉 @armeducation
👉 @armeducation
پک stm32F7 ورژن 0-16-1 برای نرم افزار STM32CubeMX
1.2 گیگ علی برک الله 😊
لازم شد خودتان از سایت st دانلود کنید :
https://www.st.com/content/st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32cube-mcu-mpu-packages/stm32cubef7.html
@armeducation
1.2 گیگ علی برک الله 😊
لازم شد خودتان از سایت st دانلود کنید :
https://www.st.com/content/st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm32-embedded-software/stm32cube-mcu-mpu-packages/stm32cubef7.html
@armeducation
STMicroelectronics
STM32CubeF7 - STMicroelectronics
STM32CubeF7 - STM32Cube MCU Package for STM32F7 series (HAL, Low-Layer APIs and CMSIS, USB, TCP/IP, File system, RTOS, Graphic - and examples running on ST boards), Patch_CubeF7, STM32CubeF7, STMicroelectronics
نقل قول یک خاطره از مهندس کی نژاد که از چندین سال قبل در ذهن من مانده بود :
در این پست قصد دارم جزئیات نسبتا طولانی یک مشکل مشاهده شده در جریان برنامه نویسی اسمبلی را به عنوان تجربه ای برای مخاطبین محدود این موضوع توضیح دهم.
در عملکرد کد مفصلی که به منظور استفاده از حداکثر ظرفیت پردازشی 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
در این پست قصد دارم جزئیات نسبتا طولانی یک مشکل مشاهده شده در جریان برنامه نویسی اسمبلی را به عنوان تجربه ای برای مخاطبین محدود این موضوع توضیح دهم.
در عملکرد کد مفصلی که به منظور استفاده از حداکثر ظرفیت پردازشی 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
ممکن است این سوال برای برخی مخاطبین مطرح شود که آیا نمی شد به جای استفاده از ابزار برنامه نویس اسمبلی از کامپایلر های سطح بالا برای پیاده سازی مورد نظر استفاده کرد تا چنین مشکلاتی ایجاد نشود؟ پاسخ این سوال منفی است. به این ترتیب که برای انجام منظور مورد نظر چنان بار پردازشی به cpu تحمیل می شود که در صورت لزوم استفاده از XMEGA نمی توان به روش دیگری این برنامه نویسی را انجام داد و تنها چاره کار با فرض استفاده از XMEGA همین شیوه برنامه نویسی بوده است.
در هر صورت کل این پروسه حداقل بیش از 50 ساعت کاری از من زمان گرفت و به نظرم رسید شاید نقل آن بتواند برای برخی دوستان خاص مفید باشد.
——————————
متن یکم طولانی بود به صورت دو قسمتی ارسال شد .
@armeducation
در هر صورت کل این پروسه حداقل بیش از 50 ساعت کاری از من زمان گرفت و به نظرم رسید شاید نقل آن بتواند برای برخی دوستان خاص مفید باشد.
——————————
متن یکم طولانی بود به صورت دو قسمتی ارسال شد .
@armeducation
در یک دستگاهی بعد از تولید و تست به صورت اتفاقی ملاحظه شد که اگر دمای فعلی از دمای تنظیمی کمتر شود، یک خروجی را در موقع لازم ست نمی کند. در حالی که اگر دمای فعلی از دمای تنظیمی بیشتر باشد همه چیز درست است!
بعد از صرف زمان و بررسی و دیباگ کردن برنامه ملاحظه شد که نوع یک متغییر را درست تعریف نکرده ایم و موقع منفی شدن عدد این متغییر در بازه مورد نظر قرار نمی گرفت و شرط مربوطه را اجرا نمی کرد.
بله این همه صرف وقت به خاطر عدم تعریف درست نوع یک متغییر 😐
بنابراین به موارد بسیار جزیی در برنامه نویسی که بی اهمیت تلقی می شود باید توجه کرد که عدم رعایت آن باعث عملکرد ناصحیح در کار خواهد شد. این عملکرد ناصحیح ممکن است خودش را چندین ماه بعد از زمان تست و تحویل نشان دهد.
@armeducation
بعد از صرف زمان و بررسی و دیباگ کردن برنامه ملاحظه شد که نوع یک متغییر را درست تعریف نکرده ایم و موقع منفی شدن عدد این متغییر در بازه مورد نظر قرار نمی گرفت و شرط مربوطه را اجرا نمی کرد.
بله این همه صرف وقت به خاطر عدم تعریف درست نوع یک متغییر 😐
بنابراین به موارد بسیار جزیی در برنامه نویسی که بی اهمیت تلقی می شود باید توجه کرد که عدم رعایت آن باعث عملکرد ناصحیح در کار خواهد شد. این عملکرد ناصحیح ممکن است خودش را چندین ماه بعد از زمان تست و تحویل نشان دهد.
@armeducation
افرادی که قصد شرکت در :
🎓دوره پیشرفته میکروکنترلر STM32
🏢 مکان : "اصفهان"
⏱ مدت : 36 ساعت
🕔 زمان : پنج شنبه صبح 9 تا 13
▶️ شروع دوره : 23 مرداد ماه 99 "قطعی"
را دارند ، لطفا اطلاع دهند.
به دلیل شرایط موجود ظرفیت محدود 3 نفر
🆔 -》 تلگرام @mzarkoob
☎️ -》 واتساپ 09359956361
با سپاس
@armeducation
🎓دوره پیشرفته میکروکنترلر STM32
🏢 مکان : "اصفهان"
⏱ مدت : 36 ساعت
🕔 زمان : پنج شنبه صبح 9 تا 13
▶️ شروع دوره : 23 مرداد ماه 99 "قطعی"
را دارند ، لطفا اطلاع دهند.
به دلیل شرایط موجود ظرفیت محدود 3 نفر
🆔 -》 تلگرام @mzarkoob
☎️ -》 واتساپ 09359956361
با سپاس
@armeducation
🎓 دهمین دوره آموزش مقدماتی متوسط میکروکنترلر STM32 در سال 99
🏢 مکان : "اصفهان"
(سطح مقدماتی متوسط)
⏱ مدت "40" ساعت
🕔 زمان : جمعه ها ساعت 9 الی 13، در 10 هفته
▶️ شروع دوره : 31 مرداد
👤 مدرس : مهندس مهدی زرکوب با 9 سال سابقه آموزش حرفه ای میکروکنترلرهای ARM
📚 پیش نیاز : آشنایی با زبان برنامه نویسی سی
https://news.1rj.ru/str/armeducation/210
8️⃣ ظرفیت : 6 نفر. ظرفیت باقی مانده : تکمیل .
💲 شهریه : 950 هزار تومان
⚠️ اولویت با کسانیست که ثبت نام خود را زودتر قطعی نمایند.
👈 مشاوره رایگان در زمانهای هماهنگ شده قبل از شروع دوره
🖋 جهت ثبت نام :
🆔 تلگرام-》 @mzarkoob
☎️ واتسآپ -》 09359956361
✅ آموزش این دوره مقدماتی متوسط از پایه، عملی و کاملا کاربردی خواهد بود نه صرفا آشنایی با رجیسترها یا توابع آماده و راه اندازی آنها .
✔️شرح رجیسترها و اصول عملکرد توابع، به صورت موازی آشنایی با توابع cmsic و HAL و ” کاربردهای پریفرالها ” و اجرای عملی در کلاس و تمرین بعد از آن و رفع ایراد در جلسه بعد. پشتیبانی در گروه
💻تجهیزات لازم : لب تاب. همچنین برد و پروگرامر برای کار در خارج از کلاس
👈🏾 تسلط کامل به مباحث این دوره پیشنیاز دوره پیشرفته می باشد .
@armeducation
🏢 مکان : "اصفهان"
(سطح مقدماتی متوسط)
⏱ مدت "40" ساعت
🕔 زمان : جمعه ها ساعت 9 الی 13، در 10 هفته
▶️ شروع دوره : 31 مرداد
👤 مدرس : مهندس مهدی زرکوب با 9 سال سابقه آموزش حرفه ای میکروکنترلرهای ARM
📚 پیش نیاز : آشنایی با زبان برنامه نویسی سی
https://news.1rj.ru/str/armeducation/210
8️⃣ ظرفیت : 6 نفر. ظرفیت باقی مانده : تکمیل .
💲 شهریه : 950 هزار تومان
⚠️ اولویت با کسانیست که ثبت نام خود را زودتر قطعی نمایند.
👈 مشاوره رایگان در زمانهای هماهنگ شده قبل از شروع دوره
🖋 جهت ثبت نام :
🆔 تلگرام-》 @mzarkoob
☎️ واتسآپ -》 09359956361
✅ آموزش این دوره مقدماتی متوسط از پایه، عملی و کاملا کاربردی خواهد بود نه صرفا آشنایی با رجیسترها یا توابع آماده و راه اندازی آنها .
✔️شرح رجیسترها و اصول عملکرد توابع، به صورت موازی آشنایی با توابع cmsic و HAL و ” کاربردهای پریفرالها ” و اجرای عملی در کلاس و تمرین بعد از آن و رفع ایراد در جلسه بعد. پشتیبانی در گروه
💻تجهیزات لازم : لب تاب. همچنین برد و پروگرامر برای کار در خارج از کلاس
👈🏾 تسلط کامل به مباحث این دوره پیشنیاز دوره پیشرفته می باشد .
@armeducation
Telegram
armeducation
در پست های قبلی بر روی این مطلب تاکید شد که
• پیش نیاز کار با میکروکنترلرهای ARM ، آشنایی با زبان C می باشد.
https://news.1rj.ru/str/armeducation/78
برای یک دوره مقدماتی میکروکنترلرهای ARM مواری از زبان برنامه نویسی C که بیشتر در عمل به کار می آید بدین صورت می باشد…
• پیش نیاز کار با میکروکنترلرهای ARM ، آشنایی با زبان C می باشد.
https://news.1rj.ru/str/armeducation/78
برای یک دوره مقدماتی میکروکنترلرهای ARM مواری از زبان برنامه نویسی C که بیشتر در عمل به کار می آید بدین صورت می باشد…
armeducation
مشاهده اجرای عملی عملکرد روتاری @armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
یکی از کاربردهای جالب روتاری انکدر استفاده از آن برای چرخش روی منوهای TFT و انتخاب منوی مورد نظر است.
@armeducation
@armeducation