راه اندازی پورت دیباگ(ِDBGU) – سورس…

هدف پروژه

هدف از انجام این پروژه راه اندازی پورت دیباگ میکرو میباشد.پورت دیباگ همانند پورت سریال میکرو می باشد با تفوت که همانند پورت سریال یک پورت کامل نمیباشد.یک پورت سریال کامل شامل پین زیر میباشد.TXD,RXD,RI,DSR,DCD,DTR,CTS,RTS حال آنکه پورت دیباگ تنها دارای دو پین TXD,RXDاست.پورت سریال دارای مد های کاری متعددی است که در پروژه راه اندازی پورت سریال به طور مفصل به توضیح آنها پرداخته ایم.حال آنکه پورت دیباگ تنها در مد کاری ارسال و دریافت دیتا به صورت غیر هم زمان و Buadrate مشخص کار میکند.

سخت افزار مورد استفاده

دراین پروژه از واحد دیباگ موجود در میکروکنترلر ARM و همچنین پینهای متصل به این واحد استفاده میکنیم.واحد دیباگ دارای دو پینTXD,RXD میباشد که در برد آموزشی ARM این دو پین به یک مبدل سریال به USBمتصل شده اند این کار به این سبب بوده که اکثر سیستم های کامپیوتر کنونی یا desktopفاقد پورت سریال نه پین میباشند و تنها دارای پورت USB میباشند بدین خاطر در این برد آموزشی برای راحتی کار با استفاده از یک کابل USB میتوان از پورت دیباگ میکرو استفاده کرد که میبایت اول درایور مبدل سریال به USB را بر روی سیستم نصب و سپس کابل USB را به سیستم متصل نماییم.پس از این کار با رفتن به پنجره Device Manager مشاهده میکنیم که که یک پورت COM به سیستم ما اضافه شده است.حال می بایست نرم افزار Hyper Terminal سیستم را باز نماییم و پورت COM را که بعد از اتصال پورت USB در سیستم ایجاده شده است را به آن اختصاص دهیم.حالا سخت افزار لازم برای کار با واحد دیباگ آماده میباشد و به راحتی میتوانیم با میکروکنترلر ARM jfhng داده نماییم.

کتابخانه های استفاده شده

  •  کتابخانه DBGU برای راه اندازی واحد دیباگ(برای یاد گیری درباره این کتابخانه اینجا کلیک کنید)
  • کتابخانه TRACE برای انجام عمل TRACE کردن یا دنبال نمودن برنامه(برای یاد گیری درباره این کتابخانه اینجا کلیک کنید)

تشریح کد برنامه

در این بخش به بررسی main برنامه میپردازیم.

در ابتدا برنامه کتابخانه های مورد ایستفاده را include میکنیم که شامل کتابخانه های زیر میباشد.

#include <board.h>
#include <pio/pio.h>
#include <utility/trace.h>
#include <stdio.h>

در کتابخانه board.hهمانطور که در فیلم های آموزشی گفته شده تمامی پورت های میکرو برای اتصال به بخشهای جانبی تعریف شده اند.

پین های مربوط به واحد دیباگ در کتابخانه board.h به صورت زیر تعریف شده اند.

#define PINS_DBGU  {0x18000000, AT91C_BASE_PIOA, AT91C_ID_PIOA, PIO_PERIPH_A, PIO_DEFAULT}

در مرحله اول پروژه می بایست پین های متصل به واحد دیباگ را تعرف نماییم برای این این کار از دستور زیر استفاده میکنبم.

const Pin pinsDbgu[] = {PINS_DBGU};

سپس با استفاده از کتابخانه PIO.h پین متصل به واحد دیباگ را پیکر بندی میکنیم.برای این کار از دستور زیر استفاده میکنیم.

PIO_Configure(pinsDbgu, PIO_LISTSIZE(pinsDbgu))

و در مرحله آخر از راه اندازی واحد دیباگ می بایست خود واحد دیباگ را پیکر بندی نماییم.این پیکر بندی شامل تعیین Buad Rate یا نرخ ارسال اطلاعت و همچنین تعیین مد کاری واحد دیباگ میباشد که برای این کار از دستور زیر استفاده میکنیم.

DBGU_Configure(DBGU_STANDARD, 115200, BOARD_MCK)

مقدار BOARD_MCK در کتابخانه board.h تعریف شده است که برابر است با فرکانس کاری هسته میکرو ARM یعنی برابر48000000 هرتز میباشد.

پس از پیکر بندی پورت واحد دیباگ به راحتی میتوان از توابع مربوط به ارسال و دریافت داده در واحد دیباگ استفاده کرد بدین صورت که برای ارسال داده از واحد دیباگ از دستور DBGU_PutChar و برای دریافت اطلاعات از دستور DBGU_GetChar استفاده میکنیم.به عنوان مثال در اینجا ما کارکتر A را ارسال کرده و سپس منتظر دریافت کارکتر B هستیم.

DBGU_PutChar('A')
 
}do
 
;{ while('B'=!DBGU_GetChar())

دانلود سورس کد

در اینجا شما میتوانید سورس برنامه را دریافت ،کامپایل و پروگرم نمایید و شاهد عملکرد برنامه باشید.

مشاهده نتیجه

با کلیک بر روی عکس زیر فیلم راه اندازی این پروژه را مشاهده کیند.

فیلم راه اندازی پورت دیباگ میکروکنترلر ARM

Tags: , , , , , , , , , ,