به اطلاع می رساند فیلم آموزش پیشرفته میکروکنترلر lpc1768 (ویرایش جدید) آماده ارائه و در فروشگاه کویرالکترونیک قرار داده شده است:
http://goo.gl/HnLQAH
تاپیک سوالات در فروم ایران میکرو :
http://goo.gl/HnLQAH
@armeducation
http://goo.gl/HnLQAH
تاپیک سوالات در فروم ایران میکرو :
http://goo.gl/HnLQAH
@armeducation
www.iranmicro.ir
[خبر] فیلم آموزش پیشرفته lpc1768 (ورژن2)
بعد از ارائه "ویرایش جدید فیلم آموزشی میکروکنترلر LPC17xx در سطح مقدماتی و متوسط " ، مجموعه " فیلم آموزشی پیشرفته میکروکنترلر LPC17xx" ویرایش جدید آماده ارائه به شما علاقه مندان به میکروکنترلر می باشد.
گاهی موارد انجام جزییات کار یا پروژه ای بیش از انجام اصل خود کار زمان بر است!
بنابراین در انجام کاری کاملا باید جزییات کار مشخص باشد.
@armeducation
بنابراین در انجام کاری کاملا باید جزییات کار مشخص باشد.
@armeducation
با استفاده از دستور atoi() در کتابخانه stdlib.h می توان یک رشته را به عدد تبدیل کرد. نمونه ای از کاربرد ساده این دستور در پورت سریال است که از دیتای دریافت شده که در رشته به عدد تبدیل شده، استفاده نمود.
@armeducation
@armeducation
بیشتر موارد با کپی کردن قسمت هایی از برنامه های مختلف، برنامه جدید خود را تکمیل می کنیم. بدین ترتیب در زمان خیلی کمتری کار جدیدی را شروع خواهیم کرد. در حین انجام این کار بسیار باید دقت کرد که به صورت درست محتوای کپی را مطابق میل بر اساس کار جدید، تغییر دهیم. زیرا بیشترین خطا در برنامه در همین جا رخ می دهد و اگر در این مرحله دقت نشود زمان بسیار بیشتری باید صرف رفع ایرادی کنیم که فکر می کنیم درست است!
@armeducation
@armeducation
در یک پروژه که کتابخانه های زیادی لازم است اضافه شود قائدتا هدرهای آنها نیز لازم است ابتدای برنامه include شود.
https://news.1rj.ru/str/armeducation/92
در اینجا می توان تمام این اینکلاد کردن ها را در داخل یک هدر دیگری قرار داد و فقط آن هدر را به ابتدای برنامه اینکلاد کرد. همچنین در صورتی که دیفاین های برنامه هم زیاد باشد می توان در همین هدر قرار داد و باعث خلوت تر صفحه کردن برنامه main شد. این موضوع بیشتر در استفاده از کتابخانه های SMSIS و HAL و... استفاده می شود.
@armeducation
https://news.1rj.ru/str/armeducation/92
در اینجا می توان تمام این اینکلاد کردن ها را در داخل یک هدر دیگری قرار داد و فقط آن هدر را به ابتدای برنامه اینکلاد کرد. همچنین در صورتی که دیفاین های برنامه هم زیاد باشد می توان در همین هدر قرار داد و باعث خلوت تر صفحه کردن برنامه main شد. این موضوع بیشتر در استفاده از کتابخانه های SMSIS و HAL و... استفاده می شود.
@armeducation
Telegram
armeducation
یکی از موارد پایه در ایجاد پروژه، نحوه ایجاد کتابخانه جدید و اضافه کردن آن به پروژه می باشد.
روش کار به این صورت است که تمام توابع در یک کتابخانه با فرمت c. مثلا name.c قرار داده و به پروژه اضافه می شود. تیتر تمام توابع که قصد داریم در جای دیگری استفاده کنیم…
روش کار به این صورت است که تمام توابع در یک کتابخانه با فرمت c. مثلا name.c قرار داده و به پروژه اضافه می شود. تیتر تمام توابع که قصد داریم در جای دیگری استفاده کنیم…
در هدر stdint.h یک سری متغییر به صورت typedef قرار گرفته است که می توان به جای استفاده از
unsigned char
unsigned short int
و ... از آنها استفاده کرد. به عنوان نمونه :
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __int64 uint64_t;
بدین ترتیب با عنوان مختصر تری می توان متغییرها را به صورت uint8_t و uint16_t و uint16_t و .. تعریف کرد.
@armeducation
unsigned char
unsigned short int
و ... از آنها استفاده کرد. به عنوان نمونه :
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned __int64 uint64_t;
بدین ترتیب با عنوان مختصر تری می توان متغییرها را به صورت uint8_t و uint16_t و uint16_t و .. تعریف کرد.
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
تست عملی رفرش صفحه در ال ای دی 10.1 اینچ با میکروکنترلر LPC1788
با توجه به سخت افزار مربوطه :
https://news.1rj.ru/str/armeducation/101
@armeducation
با توجه به سخت افزار مربوطه :
https://news.1rj.ru/str/armeducation/101
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
تست اولیه تاچ 10.1 اینچ در میکروکنترلر LPC1788 با توجه به روال عملکرد :
https://news.1rj.ru/str/armeducation/89
@armeducation
https://news.1rj.ru/str/armeducation/89
@armeducation
This media is not supported in your browser
VIEW IN TELEGRAM
تشخیص نقطه لمس شده در تاچ 10.1 اینچ با استفاده از 4 نقطه دریافت شده در ابتدای کالیبراسیون
@armeducation
@armeducation
در نظر بگیرید در یک تاچ، مختصات 4 نقطه خوانده شده به صورت زیر بدست بیاید :
Point0 : X=236, Y=3559
Point1 : X=3905, Y=3531
Point2 : X=179, Y=209
Point3 : X=3918, Y=158
بنابراین با لمس تاچ مختصاتی بدست می آید که در رنج این اعداد است. با چند شرط ساده می توان موقعیت لمس شده را بدست آورد.
بنابراین لمس درست 4 نقطه اولیه برای تشخیص نقاط بعدی مهم می باشد.
@armeducation
Point0 : X=236, Y=3559
Point1 : X=3905, Y=3531
Point2 : X=179, Y=209
Point3 : X=3918, Y=158
بنابراین با لمس تاچ مختصاتی بدست می آید که در رنج این اعداد است. با چند شرط ساده می توان موقعیت لمس شده را بدست آورد.
بنابراین لمس درست 4 نقطه اولیه برای تشخیص نقاط بعدی مهم می باشد.
@armeducation
در نظر بگیرید هر بار که دستگاهی که دارای یک تاچ باشد به تغذیه متصل شود، نیاز باشد 4 نقطه اولیه برای کالیبراسیون داده شود! برای اولین بار که کالیبراسیون انجام شد، بایستی این نقاط در محلی ذخیره شود تا در دفعات بعد نیازی به انجام این کار نباشد. در اعمال نقاط کالیبراسیون نیز می توان ملاحظاتی را در نظر گرفت تا هر نقطه ای را قبول نکند. زیرا در صورت اشتباه وارد کردن، تشخیص نقاط بعدی درست انجام نمی شود. همچنین یک باتون در قسمت تنظیمات می توان قرار داد تا در صورت نیاز در حین کار وارد کالیبراسیون شود.
@armeducation
@armeducation
نمایش عدد 1 درTFT به صورت 24*16
عدد هگز هر سطر جلوی آن قرار داده شده
در روال نمایش، بیت به بیت یک سطر چک می شود. در صورتی که 1 بود رنگ مورد قرار داده شده در غیر این صورت رنگ پس زمینه .
@armeducation
عدد هگز هر سطر جلوی آن قرار داده شده
در روال نمایش، بیت به بیت یک سطر چک می شود. در صورتی که 1 بود رنگ مورد قرار داده شده در غیر این صورت رنگ پس زمینه .
@armeducation
کاراکتر 1 به صورت هگزادسیمال در آرایه ASCII_16x24 :
const uint16_t ASCII_16x24[] ={
……
/* ‘0’ */
/* ‘1’ */
0x0000, 0x0100, 0x0180, 0x01C0, 0x01F0, 0x0198, 0x0188, 0x0180,
0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
/* ‘2’ */
……
}
این آرایه در نمایش یک کاراکتر فراخوانی می شود :
ASCII_16x24[num*CHAR_H+pos];
@armeducation
const uint16_t ASCII_16x24[] ={
……
/* ‘0’ */
/* ‘1’ */
0x0000, 0x0100, 0x0180, 0x01C0, 0x01F0, 0x0198, 0x0188, 0x0180,
0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x0180,
0x0180, 0x0180, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
/* ‘2’ */
……
}
این آرایه در نمایش یک کاراکتر فراخوانی می شود :
ASCII_16x24[num*CHAR_H+pos];
@armeducation
در بعضی سمپل ها فقط یک فونت کوچک برای نمایش روی TFT LCD قرار داده شده است. در صورت نیاز بایستی آرایه هگزادسیمال سایر فونت ها (ASCII_8x16 , ASCII_24x32,ASCII_16x24 و ..)را ایجاد کرد و از آن استفاده نمود. در اینجا یک پارامتر بایستی به ورودی تابع نمایش یک کاراکتر اضافه شود و آن هم فونت می باشد :
WriteOneChar(uint16_t x,uint16_t y, uint8_t num, uint16_t PenColor, uint16_t BackColor, uint8_t font)
به جای ورودی فونت به عنوان نمونه می توان موارد از قبل تعریف شده :
#define FONT_8x16 0
#define FONT_16x24 1
را قرار داد و در تابع نمایش یک کاراکتر شرط های مختلف به ازای ورودی فونت های مختلف قرار داد تا از آرایه همان فونت استفاده شود:
void WriteOneChar(uint16_t x, uint16_t y, uint8_t num, uint16_t PenColor, uint16_t BackColor, uint8_t font)
{
if( font==FONT_8x16){
….
}
if( font==FONT_16x24){
…..
}
…..
@armeducation
WriteOneChar(uint16_t x,uint16_t y, uint8_t num, uint16_t PenColor, uint16_t BackColor, uint8_t font)
به جای ورودی فونت به عنوان نمونه می توان موارد از قبل تعریف شده :
#define FONT_8x16 0
#define FONT_16x24 1
را قرار داد و در تابع نمایش یک کاراکتر شرط های مختلف به ازای ورودی فونت های مختلف قرار داد تا از آرایه همان فونت استفاده شود:
void WriteOneChar(uint16_t x, uint16_t y, uint8_t num, uint16_t PenColor, uint16_t BackColor, uint8_t font)
{
if( font==FONT_8x16){
….
}
if( font==FONT_16x24){
…..
}
…..
@armeducation
Forwarded from armeducation (Mahdi Zarkoob)
نحوه نمایش در TFT LCD ها به صورت پیکسلی می باشد. رنگ هرپیکسل یک عدد دو بایتی است. برای پاک کردن کل صفحه همه پیکسل ها تغییر می کند. بنابراین سرعت رفرش پردازنده مهم است.
@armeducation
@armeducation
Forwarded from armeducation (Mahdi Zarkoob)
مجموعه فیلم های آموزشی میکروکنترلرهای ARM :
—------------------------------—
آموزش کاربردی زبان C در میکروکنترلرهای ARM :
http://goo.gl/PoYFu1
تاپیک در فروم ایران میکرو :
http://goo.gl/hKvO0J
—------------------------------—
آموزش مقدماتی میکروکنترلر LPC1788 :
https://goo.gl/l4MmGP
تاپیک :
https://goo.gl/JEo7f9
—------------------------------—
آموزش پیشرفته میکروکنترلر LPC1788 :
https://goo.gl/kKt72J
تاپیک :
https://goo.gl/qccMOi
—------------------------------—
آموزش مقدماتی میکروکنترلر LPC1768 ورژن جدید :
http://goo.gl/vBlK6N
تاپیک :
http://goo.gl/FVaEnI
—------------------------------—
آموزش تکمیلی و پیشرفته میکروکنترلر LPC1768 :
http://goo.gl/YHLD0J
تاپیک :
http://goo.gl/HnLQAH
—------------------------------—
@armeducation
—------------------------------—
آموزش کاربردی زبان C در میکروکنترلرهای ARM :
http://goo.gl/PoYFu1
تاپیک در فروم ایران میکرو :
http://goo.gl/hKvO0J
—------------------------------—
آموزش مقدماتی میکروکنترلر LPC1788 :
https://goo.gl/l4MmGP
تاپیک :
https://goo.gl/JEo7f9
—------------------------------—
آموزش پیشرفته میکروکنترلر LPC1788 :
https://goo.gl/kKt72J
تاپیک :
https://goo.gl/qccMOi
—------------------------------—
آموزش مقدماتی میکروکنترلر LPC1768 ورژن جدید :
http://goo.gl/vBlK6N
تاپیک :
http://goo.gl/FVaEnI
—------------------------------—
آموزش تکمیلی و پیشرفته میکروکنترلر LPC1768 :
http://goo.gl/YHLD0J
تاپیک :
http://goo.gl/HnLQAH
—------------------------------—
@armeducation
www.iranmicro.ir
[خبر] فیلم آموزش کاربردی زبان c در میکروکنترلر arm
آشنایی با زبان برنامه نویسی c مقدمه کار با میکروکنترلرهای ARM می باشد. در صورتی این آشنایی مفیدتر است که به صورت کاربردی باشد.
در این مجموعه آموزشی از ابتدا کارآموز با مقدمات کار که شامل آشنایی با محیط برنامه نویسی، نحوه ایجاد پروژه و ... آشنا شده و در…
در این مجموعه آموزشی از ابتدا کارآموز با مقدمات کار که شامل آشنایی با محیط برنامه نویسی، نحوه ایجاد پروژه و ... آشنا شده و در…
در برنامه نویسی لازم است در مواقعی از تابع تاخیر استفاده شود. مثلا بین هر ارسال در ال سی دی کاراکتری یا ارسال روی ماژول sim900 و زیروال وقفه و ... (هر چند این موارد می تواند بدون تاخیر delay هم انجام داد) این delay میتواند یک تاخیر دقیق یا تخمینی (تاخیر کیلویی !) باشد. حال در نظر بگیرید برنامه را به میکروی دیگری با سرعت بیشتر یا کمتر منتقل کرده اید. طبیعتا تاخیر کیلویی متناسب با سرعت آن پردازنده عمل می کند و این ممکن است کار را خراب کند. استفاده از تاخیر دقیق با systemtick
https://news.1rj.ru/str/armeducation/201
باعت می شود با تنظیم کلاک در ابتدا زمان تاخیر تغییر نکند.
@armeducation
https://news.1rj.ru/str/armeducation/201
باعت می شود با تنظیم کلاک در ابتدا زمان تاخیر تغییر نکند.
@armeducation
Telegram
armeducation
شرح مثال systemtick قسمت اول
@armeducation
@armeducation
تاخیر تخمینی که با تغییر عدد در حلقه for زمان تاخیر را می توان تغییر داد ،می تواند بدین صورت باشد:
void delay_ms (uint32_t Time)
{
uint32_t i;
i = 0;
while (Time--) {
for (i = 0; i < 16666; i++);
}
}
عدد 16666 برای کلاک 100 مگاهرتز زمان حدود یک میلی ثانیه را تاخیر ایجاد خواهد کرد. با یک تایمر می توان این عدد را دقیق انتخاب کرد :
https://news.1rj.ru/str/armeducation/238
این مدل تاخیر باعث اتلاف زمان پردازنده در مواردی که پردازنده بایستی کارهای دیگری را به صورت polling انجام دهد، خواهد شد.
@armeducation
void delay_ms (uint32_t Time)
{
uint32_t i;
i = 0;
while (Time--) {
for (i = 0; i < 16666; i++);
}
}
عدد 16666 برای کلاک 100 مگاهرتز زمان حدود یک میلی ثانیه را تاخیر ایجاد خواهد کرد. با یک تایمر می توان این عدد را دقیق انتخاب کرد :
https://news.1rj.ru/str/armeducation/238
این مدل تاخیر باعث اتلاف زمان پردازنده در مواردی که پردازنده بایستی کارهای دیگری را به صورت polling انجام دهد، خواهد شد.
@armeducation
Telegram
armeducation
برای محاسبه زمان دقیق یک پروسه می توان از تایمر استفاده کرد:
https://news.1rj.ru/str/armeducation/215
در نظر بگیرید در ابتدای کار تایمر را فعال و در انتها آن را متوقف می کنید. عددی در شمارنده تایمر وجود دارد که از این عدد بایستی زمان پروسه را محاسبه کنید. این کار به…
https://news.1rj.ru/str/armeducation/215
در نظر بگیرید در ابتدای کار تایمر را فعال و در انتها آن را متوقف می کنید. عددی در شمارنده تایمر وجود دارد که از این عدد بایستی زمان پروسه را محاسبه کنید. این کار به…
Forwarded from armeducation (Mahdi Zarkoob)
با ارائه نظرات، پیشنهادات و انتقادات ، باعث دلگرمی ما باشید و هم باعث بهبود مطالب آموزشی.
ادمین:
@mzarkoob
با سپاس
@armeducation
ادمین:
@mzarkoob
با سپاس
@armeducation
نحوه استفاده از تاخیر delay با استفاده از systemtick شرح داده شده در :
https://news.1rj.ru/str/armeducation/200
بدین صورت می باشد :
void SysTick_Handler (void)
{
SysTickCnt++;
}
/*******/
void Delay (unsigned long tick)
{
unsigned long systickcnt;
systickcnt = SysTickCnt;
while ((SysTickCnt - systickcnt) < tick);
}
/*-----------------------------------*/
/*-----------------------------------*/
int main(void)
{
SysTick_Config(SystemFrequency/1000 - 1);
while (1)
{
//......
printf("www.armeducation.ir");
Delay (1000);
}
}
@armeducation
https://news.1rj.ru/str/armeducation/200
بدین صورت می باشد :
void SysTick_Handler (void)
{
SysTickCnt++;
}
/*******/
void Delay (unsigned long tick)
{
unsigned long systickcnt;
systickcnt = SysTickCnt;
while ((SysTickCnt - systickcnt) < tick);
}
/*-----------------------------------*/
/*-----------------------------------*/
int main(void)
{
SysTick_Config(SystemFrequency/1000 - 1);
while (1)
{
//......
printf("www.armeducation.ir");
Delay (1000);
}
}
@armeducation
Telegram
armeducation
شرح رجیسترهای systemtick
@armeducation
@armeducation
در صورتی که بخواهید وسایل جانبی مانند ال سی دی کاراکتری،گرافیکی، ایتوپرام خارجی ، spi flash و .... را راه اندازی کنید تفاوتی در عملکرد وجود ندارد که لزوما این راه اندازی با رجیستر باشد یا توابع cmsis یا توابع HAL. بنابراین این سوال که کتابخانه ای می خواهم برای راه اندازی این موارد حتما با HAL یا .. ، مناسب نیست. در هر صورت بایستی کتابخانه ای اد شود و از توابع آن برای راه اندازی استفاده شود. حال اگر در کتابخانه این وسیله، از توابع cmsis یا توابع HAL استفاده شده باشد بایستی این کتابخانه ها هم به پروژه اد شود.
@armeducation
@armeducation