نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه

آموزش میکرو کنترلر arm سری lpc2368 جلسه اول

بنام خدا

آموزش میکرو کنترلر arm سری lpc2368 جلسه اول : با  آموزش ARM در خدمتتون هستم…قرار بر این شد من با arm lpc2368  در خدمتتون باشم و آقا پویا زحمت ۱۷۶۸ رو بکشن ، خوب بریم سر اصل مطلب

ما با کامپایلر کیل کار میکنم >>>
خوب اول برنامه کیل را اجرا میکین اگر از قبل پروژه ای باز بود حتما باید از منوی project گزینهclose  project پروزه را ببندیم
آموزش میکرو کنترلر arm سری lpc2368 جلسه اول
 
خوب حالا از منوی project گزینه new project را انتخاب میکنیم
آموزش میکرو کنترلر arm
 
در اینجا پنجره creat new project باز میشود که آدرس محل ذخیره فایل های پروژه را میدهیم بهتر است همه آنها را داخل یک پوشه ذخیره کنیم
سپس پنجره زیر باز میشود که در اینجا باید از دنیای میکروهای arm میکروی ۲۳۶۸ را از خانواده nxp انتخاب کنیم
آموزش ARM
 
پس از انتخاب میکرو اطلاعاتی در مورد میکرو در روبرو نوشته میشود
البته میتوانیم در پنجره search هم نام میکرو را وارد کنیم و مستقیم میکروی مورد نظر انتخاب میشود
بعد از Ok کردن این پنجره پنجره زیر وارد میشود
آموزش lpc سری 2368
 
در اینجا چاره ای جز تایید کردن و فشردن گزینه yes نداریم .
وارد محیط اصلی کیل میشوم در گوشه سمت چپ زیر شاخ هایی مانند شکل زیر بوجود می آید.
آموزش lpc
 
حالا از گزینه file  و new یک صفحه جدید ایجاد میکنیم
سپس روی گزینه save کلیک میکنیم و صفحه ایجاد شده را با نام دلخواه  ولی با پسوند c ذخیره میکنیم
مثلا main.c
میکروکنترلر ARM
 
اگر دقت کرده باشین این فایل هنوز به زیر شاخه پروزه ما الحاق نشده است خوب کاری نداره که الحاقش میکنیم
با راست کلیک روی شاخه ها پنجره زیر باز میشود
پروژه Arm
 
و گزینه add file یا add existing file را انتخاب میکنیم و در پنجره باز شده ادرس فایلی که با پسوند c  ذخیره کردیم را میدهیم
اگر این کار را درست انجام داده باشیم آن قایل با همان نام به این زیر شاخه اضافه میشود
آموزش ARM
 
خوب تبریک تا اینجا ما موفق شدیم وارد محیط برنامه نویسی برای میکروی arm بشیم
کمربند همت را محکم ببنید که داستان شروع شد.
البته  تا همینجای کار هم خیلی از مقدمات را بطور موقت نادیده گرفتم که انشالله در اسرع وقت و در لابلای مباحث به آنها میپردازم
پورتهای ورودی /  خروجی عمومی (GPIO)
رک و رو راست همه آتیشها از گور همین gpio بلند میشه پس با دقت به این نکات توجه فرمایید
در میکروهای arm  سری lpc پنج پورت وجود دارد با نامهای p0-p1-p2-p3-p4
در اینجا یک بحثی بوجود می اید که بدلیل اینکه نمیخوام از arm زده بشید به آن نمیپردازم
فقط بطور خلاصه میگم که دو پورت p0-p1 قابلیت دسترسی کند و تند و بقیه پورتها فقط قابلیت دسترسی تند را دارند . در مورد دسترسی تند و کند بعدا به طور کامل توضیح میدم .
اما در محموع توصیه میکنم که تمام پورتها را در دسترسی سریع راه اندازی کنیم.
((((( در اینجا اکیدا و شدیدا بهتون توصیه میکنم یه دفترچه داشته باشیم و در قسمتی از آن فقط رجیسترها را بنویسم با کمی از توضیحات  مربوط به آن )))).
برای دسترسی تند به پوزتها حتما باید رجیسترSCS  را مقدار دهی کنیم.
پس رجیستر SCS شد اولین رجیستر که با آن آشنا میشویم این رجیستر وظایف دیگری هم دارد که فعلا این یک وظیفه آن است.

برای دسترسی کند به پورتهای ۰ و ۱

و رجیتسر

 

 

برای دسترسی سریع به پورتها می باشد .

نکته مهم و اساسی اینکه همه پورتها ۳۲ بیتی است (از اینجا به قدرت و توانایی arm پی مبریم) اما همه پایه های پورتها به بیرون از پکیج میکرو منتقل نشده است حالا بنا به دلایل فنی مثلا در ۲۳۶۸ پایه های p0.14-p0.13-p0.12-p0.11 وجود ندارد
خوب حالا میخوایم ببنیم چطوری میشه این ۳۲ تا پایه از پورتها رو چطوری ورودی و چطوری خروجی کنیم .
در مورد رجیستر scs لازم است که نکاتی را بطور مختصر و مفید عرض کنم .
در داخل میکرو کنتر های سری Lpc23xx  دو مدل گذرگاه داریم . گذرگاه AHB که مختص اتصال هسته پردازنده با ادوات پرسرعتی مانند usb – ethernet و …. مورد استفاده قرار میگیرد .
سایر امکانات جانبی مانند usart – timer- adc -dac- از طریق گذرگاه کند APB و به کمک یک پل واسط به پردازنده متصل میشوند .
این پل واسط در واقع یک مقسم فرکانس است . همین مقسم فرکانس باعث میشود که ادواتی که به گذرگاه APB هستند با سرعت کمتری نسبت به ادوات AHB کار کنند . که این عمل خودباعث کاهش توان مصرفی میکرو میشود .
که البته لازم به ذکر است که کنترل کامل این خطوط گذرگاهی با کمک دو رجیستر با نامهای AHBCFG1  و AHBCFG2 امکان پذیر است که فعلا کمی زود است برای کار با این رجیسترها .
یک رجیستر دیگر  که فعلا یک بیت آن کار میکنیم رجیستر وضعیت و کنترل سیستم است . با نام scs که مخفف system controls and status register است که برای تنظیم برخی از عملکردهای جانبی سیستم از جمله پورتها و حافظه خارجی و  رابط sd/mmc  و سیستم کلاک میکرو کنترلر است . در مورد نحوه تنظیمات آن در آینده صحبت خواهیم کرد . فقط لازم به ذکر است که بیت اول این رجیستر مختص GPIO  می باشد . که مربوطبه همان راه اندازی تند و کند دو پورت صفر و یک است .
برای مطالعه بهتر در مورد این رجیستر توجهتان را به صفحه ۴۳ دیتا شیت LPC23XX جلب میکنم .

 
یه نکته خیلی مهم : تو دستور scs قبل از مساوی از | استفاده شده؛ شما بهتر میدانید که این علامت همان OR منطقی است . و در واقع در این دستور یعنی اینکه رجیتسر SCS حالت های قبلی خودش رو داشته باشه و این یک هم به ان اضافه شود.
 
خوب خیلی راحته با کمک رجیستر IODIR؛ در بالا گفتم که پورتهای ۰ و ۱ قابلیت دسترسی کند را دارند؛ در این حالت برای ورودی خروجی کردن این دو پورت از دستور

استفاده میکنیم و برای بقیه پورتها ۲-۳-۴ چون کلا این پورتها در حالت سریع یا fast هستند از دستور زیر استفاده میکنیم

لازم به ذکر است که اگر دو پورت ۰ و ۱ هم در حالت fast مورد استفاده قرار دادیم باید برای ورودی و خروجی کردن آن از دستور

استفاده کرد؛ خوب در دستورات بالا با صفر کردن هر بیت پایه متناظر آن ورودی و با یک کردن آن پایه متناظر آن خروجی میشود.
 
یک کردن پینهای پورت : برای یک کردن پینها از رجیستر زیر استفاده میکنیم :

و برای صفر کردن آنها از رجیستر زیر استفاده میکنیم :

خوب حالا وارد محیط کیل میشویم و کمی با این دستورات کار میکنم
قبل از اینکار بایدخدمت دوستان عرض کنم که همانطور که در برنامه نویسی زبان c مرسوم است اضافه کردن کتابخانه هاست که در اینحا هم بر همین منوال است
مثلا برای ۲۳۶۸ باید کتابخانه ای به شکل زیر اضافه شود

در ضمن در اینجا خیلی از کتابخانه ها باید توسط خودمون نوشته بشه
مثلا کتابخانه delay
خوب چون ما فعلا کار خاصی نمیخوایم انجام بدیم که زمان برامون خیلی مهم باشه و برای راحتی و درک بهتر و آشنای بیشتر از تابع زیر برای delay استفاده میکنیم

خوب حالا شروع میکنیم به برنامه خیلی راحت و سبک بنویسیم

 
 
در این برنامه بطور مثال آمدیم و پورت دو رو اولخروجی کردیم و بعد در حلقه while اول تمام پایه ها را یک کردیم و سپس یک تاخیر دادیم و سپس تمام پایه ها را صفر کردیم.من پورت دو را انتخاب کردم چون روی بردی که من دارم led ها روی ژورت دو وجو دارند

دانلود برنامه نوشته شده بالا

من هدر برد ۲۳۶۸ محصول eca رو روی برد آموزشی ۱۷۶۸ قرار دادم و پروگرم کردم اینم فیلمش

اینم یه برنامه نمونه دیگه که بهتر متوجه GPIO بشین
شاید این برنامه ها خیلی راحت باشه اما خوب برای شروع خوبه به نظرم .

 

دانلود برنامه دوم

 
امیدوارم مفید باشه؛ امری بود در خدمتم.

پسورد فایل های سایت :
www.dmf313.ir
ارسال دیدگاه
16

1) تعداد حروف غیر فارسی از حروف فارسی بیشتر باشه دیدگاه به صورت خودکار حذف میشه.

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) برای گزاشتن کدهاتون از این سایت استفاده کنید : debian

  1. مهمان

    علیرضا اهنی

    سلام.
    خیلی خوب بود چون زبان سی بود خیلی خوب فهمیدم.

    1396/05/04
    09:14
  2. مهمان

    علی

    خیلی خوب بود

    1395/10/13
    07:12
  3. مهمان

    حسین

    خیلی ممنون بابت اموزش

    1395/06/17
    12:04
  4. نویسنده این مطلب

    mehdir30

    سلام
    ایشالله چهارشنبه آموزشی در مورد رجیسترهای ورودی و روش خواندن کلید و رجیتسر بسیار مهم PINSEL صحبت خواهیم کرد

    1393/12/11
    10:25
  5. مهمان

    پویا

    سلام
    همون که دوستمون اقا مهدی گفتند نمیه ارم ها رو با هم مقایسه کرد اصلا کار درستی نیست بلکه حرام هم هست
    ولی اگه بخواید بدونید که فرق LPC و STM در چیه میتونم بگم که بازم هیچ فرقی نداره غیره یه چیز ترتیب پایه در میکرو STM منظم تر و به قولی صنعتی تره و هیچ فرقه دیگه ای نداره . wacko
    اکی دنبال میکروی خوب بد نگردید با هر کدوم که دلتون خواست کار کنید مگه این که نیاز به امکانات بیشتری داشته باشید
    در کل همشون یکه . yes

    1393/12/09
    11:38
  6. مهمان

    مجید

    حق با شماست
    ممنون از راهنماییتون
    بی صبرانه منتظر آموزشهاتون هستم
    موفق باشید

    1393/12/09
    10:55
  7. نویسنده این مطلب

    mehdir30

    ببنید دوست من آقا مجید
    عرض کنم خدمتتون که من هم خودم زیاد در مورد خانواده های arm اطلاعات کاملی ندارم
    در بالا تر هم در جواب یکی از دوستان عرض کردم که واقعا در مورد arm ها نمیشه مقایسه درست و حسابی انجام داد
    اما تاجایی که اطلاع دارن اینها از خانواده arm هفت هستند
    مطلب دیگر اینکه شرکتهای تولید کننده arm بسیار زیاد هستند چونکه همانطور که اطلاع دارید هسته arm فروخته میشه و شرکتهای دیگر بر اساس تکنولوزی های که دارن و به قول معروق سیاست اون شرکت برخی امکانات رو به این arm ها اضافه میکنن
    واقعا نمیشه مقایسه درستی از این همه مدل و تولیدات انجام داد
    از طرفی به دلیل تنوع زیاد arm ها واز انجایی که رجیتسر ها بسیار زیاد و در واقع نگارش برنامه نویسی متفاوتی ببین محصولات تولیدی شرکتها وجود دارد شما نمی تونید اشخصای رو بیابید که روی تمام میکروهای arm مسلط باشند
    برخی میگن میکروهای خانواده lpc صنعتی ترن برخی میگن stm تنوعش بیشتره و کیفیت تولید بهتری داره .
    اما تو بیشتر مراکز آموشی روی همین 2368 و جدیدا هم روی 1768 کار میکنن
    حالا اینکه شما با کدوم از این همه محصولات متنوع حال میکنی و کار کنی کاملا به خودت برمیگرده .
    در مورد مدل برسیده بودین که آره عزیزم مدلهای دیگری هم داره حدود 35 تا شرکت تولید کننده فقط تو برنامه کیل معرفی شدن که شما حالا بگو هر کدو هم میانگین 5 تا میکرو زده باشن ببین چقدر میشه . فکر کنم اگر بخوای رو همه اینا وقت بزاری صبر عیوب و عمر نوح میخواد .
    من که خودم تا حالا کسی رو ندیدم که به آرم مسلط باشه و با آرمهای زیادی کار کرده باشه معمولا همه سعی میکنن روی یک خانواده کار کنن .
    در مورد کتاب هم که برسیده بودین عرض کنم که بهترین کتاب دیتاشیت خود میکروی شما هست
    الان میگی وای خدا کی حال داره دیتا شیت بخونه و ترجمه کنه و انگلیسی هست
    داداشای من اگر حال ندارید دیتاشیت 700 صفحه ای رو بخونید ((هرچند که لازم نیست واو به واو همه 700 صفحه رو بخونید اما چون با رجیسترها زیاد سر و کار داریم باید بتونی تو اون همه سرفصل رجیستر مورد نظرتو بیابی و مطالبشو بخونی و بیدا کنی که هر بیت این رجیستر چکار میکته ))
    همه کتابهای موجود هم تقریبا دیتاشیت ترجمه کردن .
    اما اگر میخوای با 238 کار کنی کتابی که من خوشم اومد کتاب میکرو کنترلر arm سری lpc هست نوشته ابولفضل زرگری تالیف دیباگران .

    1393/12/09
    10:41
  8. مهمان

    مجید

    سلام
    آقا مهدی من هیچ اطلاعاتی از ARM ندارم ممنون میشم راهنمایی کنید.
    فرق بین AT91 با LPCهاچیه ؟اینا جزو کدوم خانواده میشن؟ARM7یا ARM9یا…
    برای کدوم سازنده س؟اتمل…
    مدل های دیگه هم دارن؟
    کتاب هم اگه میشه معرفی کنید

    1393/12/09
    10:10
  9. نویسنده این مطلب

    mehdir30

    دوستان اگرلازم یمدونید بازم چند تا برنام دیگه نمونه بزارم برای کار با gpio ????????????
    من مشتاقانه حاضرم
    laugh

    1393/12/08
    11:52
  10. نویسنده این مطلب

    mehdir30

    ببنید دوستان
    واقعا نمیشه میکرو کنترلرها رو با هم قیاس کرد
    آخه به قول معروف با چه سنگ محکی میخوای اینارو قیاس کنی ؟
    مگه میشه گفت ATMEGA 8 بهتره یا ATMEGA 128
    هرکدوم در جای خودش بسیار بکار می آیند
    در اینجا هم همونه
    ببنید کلا الان اکثر دور ههای آموزشی هم روی LPC ها برگزرار میشه
    به قول معروف رونتره تمام امکانات هم داره
    حالا ما خودت ببین اوضاعت جطوره و با کدوم حال میکنی
    ولی این 1768 و 2368 الان تو بورسه
    این دو تا رو یاد بگیری دیگه بعید میدونم رو بقیه مشکلی داشته باشی چون دستت راه افتاده دیگه
    خدایی خودتون حساب کنید الان من بگم مثلا 1768 بهترینه
    فردا یکی دیگه میاد میگه نه 2138 بهتره چون کمتر نویز میگره
    یکی دیگه میاد میگه نه 2768چون مثلا هشت تا ADC داره
    بعد دوباره یکی دیگه میاد میگه میکرو فقط ARM11
    یکی میگه با keil کار کنیم
    یکی میگه ir
    یکی میگه سی کار کنیم
    یکی میگه بیسک
    اینطوری بخوایم پیش بریم نسل arm منقرض شده و ما هنوز سر دوراهی هستیم
    پس لطفابیاید این بحثها رو کنار بزاریم رو همین خط پیش بریم و کمی تابع جمع بشیم
    مهندسین عزیز
    وقتی یه پروزه بهت میخوره مشتری بهت میگه من میخوام مثلا یه سنسوری تو فلان جا برام دتکت بشه و صد متر اونورتر بهم آلارم بده
    حالا اینکه شما با چی کار کنی و چی بنویسی و مثلا فیبر فایبر گلاس کار کنی یا استخونی
    یا اینکه خازنهای مدارت الکترولیت باشه یا تالیم و مقاومتهای مدارت پنج رنگ باشه یا چهار رنگ دیگه دستت خودته نه مشتریت اون فقط براش مهه که مدارت کار کنه
    پس عزیزان دل بیاد بیخیال این مباحث بشیم
    چون واقعااگر بخوایم اینا رو با هم مقایسه کنیم باید بریم دیتا شیت همه اینا رو پرینت بگیریم که هرکدوم حداقل صفحه هستند و بشینم واو به واو با هم مقایسه کنیم
    که فکر کنم اطلاعتی که جمع آوری میکنیم بدرد نوه نتیجه هامون بخوره که اون موقع هم دیگه احتمالا arm شده یه چیزی شبیه مرحوم z80 که الان کسی ازش یادی نمیکند

    1393/12/08
    11:53
  11. مهمان

    مجید

    سلام
    آقا مهدی خدا قوت خیلی خوب بود
    منتظر مطالب بعدیتون هستم
    یاعلی

    1393/12/08
    11:47
  12. نویسنده سایت

    رامین اصیلی

    میگم به جای فراخوانی تابع delay نمیتونستی از کتابخانه ی delay.hاستفاده کنی؟

    1393/12/08
    11:43
    • نویسنده این مطلب

      mehdir30

      رامین جان برادر
      تا جایی که من اطلاع دارم کتابخانه delay در این مبحث وجود ندارد
      میتونی تست کنی ببینی که بهت ارور میده
      عزیزان اگر در avr تابع کتابخانه را دیده باشید و مطالعه کرده باشید میبینید که در آن کتابخانه تایمر watchdog هم ریست میکنه هربار که شما delay میزنید
      برا همین خیلی حرفه ای نیست که با این تابع کار کرد
      اگر تاخیر خیلی دقیق در مبحث arm مورد نیاز باشد باید از تامیر ها استفاده کرد که ایشالره سر فرصت به ان هم میرسیم

      1393/12/08
      01:47
  13. نویسنده سایت

    رامین اصیلی

    خیلی ممنون
    میگم lpc بهتره یا (stm32f103 zet6) ؟

    1393/12/08
    11:38
  14. مهمان

    سید محمد

    مثل همیشه عالی بود . good
    سوال :
    از نظر سخت افزاری این دو مدل آرم ( 2368 و 1768) خیلی با هم فرق دارن . ( یکی cortex و دیگری arm7 )
    ولی انگار دستوراتشون به هم شبیهه !
    چی کار کنم ؟ موازی میشه روشون کار کرد یا قات میزنم ؟

    1393/12/08
    07:46
    • نویسنده این مطلب

      mehdir30

      دستورات زیاد بهم شباهت ندارن
      ولی خوب این دو تا میکرو تقریبا پر کاربرد هستند پس بهتره جفتش.ن ر. با هم یاد بگیریم

      1393/12/08
      08:12