نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
مهدی دمیرچیلو

کتابخانه راه اندازی uart میکروکنترلر lpc1768

به نام خدا : قبلا مطالب آموزش و پروژه lpc1768 رو تو سایت میزاشتم، بعد رفتیم سمت آردوینو و یکم جذبش شدیم و بد نبود یه چیزایی یاد گرفتیم، دوباره برگشتیم سر خونه اول؛ قبلا آموزش و پروژه هایی درباره uart میکروکنترلر lpc1768  گزاشته بودم؛ آموزش ها که هیچی، همون ترجمه دیتاشیت بودن، اما پروژه ها و کتابخونش یکم جالب نبود و خوب نوشته نشده بود، تصمیم گرفتم یه کتابخونه درست و حسابی بنویسم برا تمام 4 تا uart های میکرو lpc1768 ( یوزارت 0 تا 3 ) البته این کتابخونه فقط rs232 هستش و همون طور که میدونید uart1 دارای rs485 هم هستش که خب این کتابخونه توی این مطلب فقط فقط مختص rs232 برا 4 تا تایمر میکرو هستش و تمام.
کتابخانه راه اندازی uart میکروکنترلر lpc1768

کتابخانه راه اندازی uart میکروکنترلر lpc1768


قبلا مطالبی درباب uart میکروکنترلر lpc1768 گزاشته بودم که در زیر میبینید :

  1. آموزش آرم میکروکنترلر lpc1768 جلسه 4 uart قسمت1
  2. آموزش آرم میکروکنترلر lpc1768 جلسه 5 uart قسمت2
  3. آموزش آرم میکروکنترلر lpc1768 جلسه 6 uart قسمت3
  4. پروژه arm ارتباط سریال uart میکروکنترلر lpc1768 ق1
  5. پروژه arm ارتباط سریال uart میکروکنترلر lpc1768 ق2

 
تو عکس زیر پایه های uart میکروکنترلر lpc1768 رو میبینید :
پایه های uart میکروکنترلر lpc1768
 
تو این کتابخونه از وقفه استفاده کردیم، وقفه دریافت، وقفه ارسال، و…؛ البته از ویژگی autobaud دیگه استفاده نکرد، نیازی نی بهش زیاد!؛ تقریبا سعی کردم تا حدودی شبیه کتابخونه سریال آردوینو باشه؛ اندازه بافرهای سریال رو میتونید تعیین کنید که برا این کار میرید تو فایل uart.h و کدهای زیر رو تغییر میدید :

 
کتابخونه به زیون ++C هستش لذا حتما باید پروژتون هم ++C باشه از کلاس استفاده کردم در نوشتن کتابخونه، کلاس هایی با نام های UART0, UART1, UART2, UART3 که برای استفاده از توابع هر کدوم از کلاس ها باید اول یه شیء از اون کلاس بسازید ( که خب میدونید اینو )؛ توابع تمام 4 تا سریال مث هم هستن.
 
من توابع یکی از کلاس ها ( UART0 ) رو توضیح میدم، برا بقیه UART ها هم عینا همینه :

خب همونطور که میبینید یه سری توابع داریم که از اسمشون کارون معلومه، لذا دیگه توضیحی نمیدم خخخ فقط اینو بگم که همیشه قبل از خوندن ( استفاده از تابع read ) قبلش از تابع available استفاده کنید ببینید چند تا دیتا برای خوندن وجود داره بعد از تابع read استفاده کنید تا مشکلی رخ نده.
 

 
آلبته کتابخونه مشکلاتی هم داره، مثلا حتی اگه شیء یی هم از کلاس ها ایجاد نکنید باز آرایه دریافت سریال ( UARTn_Buffer_Read ) ایجاد میشه چون داخل کلاس تعریف نشده چون هر چی خواستم داخل کلاس تعریفش کنم نتونستم که خب کدنویسی ما هم همین قدره دیگه خخخ سعی هم کردم ولی خب نشد دیگه این مورد دست اونایی که ++C شون خوبه رو میبوسه ( بزگترین مشکلش همینه بنظرم )
 
خب یه تقدیر و تشکری کنیم از نویسنده مطلب مقابل که منو از الافی 1روزه در ابرد با این مطلب خوبش، موردی که هستش بحث نوشتن وقفه ها در زبون ++C هستش که یکم با C فرق داره که برا این مورد مطلب مقابل رو بخونید که دونستش ظرر نداره براتون : نوشتن روتین وقفه در زبان C++ برای میکروکنترلر
 
این کتابخونه رو من تست کردم کار میده، سعی کنید فرکانس میکرو روی 100 میگ تست کنید – من روی این فرکانس تست کردم مشکلی نبود، هر چند که برا فرکانس های دیگه هم نباید موردی باشه؛ امیدوارم این کتابخونه مفید باشه براتون؛ پروژه هم نمیزارم چون حسش نی – چیز ساده ای هستش – پروژه نمیخواد خداییش خخخ – فعلا یا علی.
 
حدیث تصویری
 
============================
بروزرسانی در پنج شنبه – ۱ آذر ۱۳۹۷
تغیراتی در کتابخونه قبلی دادم که میتونید از زیر دانلود کنید ( البته این کتابخونه فعلا نیاز به ویرایش و اصلاح شدن داره )
در فایل h. هم در آخر هر کلاس یه شیء استاتیک تعریف کردم تا دیگه مشکل استفاده از مثلا UART0 تو چند تا فایل جدا رو نداشته باشید، البته اگه نیاز نداشتید به این مورد میتویند شیء های استاتیک فوق رو حذف کنید.

که مثلا میخواین تو پروژتون از UART0 برا LCD استفاده کنید میاید ماکرو زیر رو اول پروژتون ( بعد از تعریف کتابخونه سریال! ) تعریف میکنید برا ترتمیز شدن پروژه و راحتی کار، که دیگه ماکرو lcd همون شیء شما هستش و ازش استفاده میکنید :

 

گروه پرسش و پاسخ الکترونیکی در سروش
مهدی دمیرچیلو گوگل میفرماید : إِنَّ اللّه مَعَ السارِچین ( خداوند با سرچ کنندگان است )
ارسال دیدگاه
2

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

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

3) برای گزاشتن کدهاتون از این سایت استفاده کنید ( طبیعتا لینک کدتون رو باید برای من بفرستید! ) : debian

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

  1. Avatar

    مهمان

    مهدی

    سلام
    ببخشید من یه نیازی به تابع printf دارم میشه از این تابع تو نرم افزار کیل و به خصوص stm32 استفاده کرد اگه میشه میتونم ازتون بخوام کمکم کنید

  2. Avatar

    مهمان

    موسی

    سلام و خسته نباشید خدمت آقا مهدی. من تازه شروع کردم به استفاده از زبان c++ برای میکروکنترلر بهمین خاطر زیاد مسلط نیستم سوالم اینکه من یه کتابخونه بزبان c++ نوشتم حالا میخوام از توابع عمومی اون توی یک کتابخونه دیگه استفاده استفاده کنم با اینکه هدر کتابخونه اول رو در کتابخونه دوم اضافه می کنم بازم توابع کتابخونه رو نمیشناسه. ممنون میشم راهنماییم کنید. یا یه لینکی چیزی برام بزارید.