نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
مهدی دمیرچیلو

آموزش آرم lpc1768 جلسه ۱ pin connect block

302

به نام خدا : میکرو LPC176x دارای ۵ پورت ۳۲ بیتی هستش، به نام های P0, P1, P2, P3, P4 که تعداد پایه های در دسترس در هر پورت متفاوت هستش و در ادامه این مورد رو میبینید(تعداد پایه های در دسترس برای استفاده ما)، هر پایه هم ۱-۴ تا نقش میتونه داشته باشه که نحوه انتخاب نقش اصلی و کارهای دیگه(کلا کار هایی برای کنترل پایه های میکروکنترلر) رو در این مطلب با هم مرور میکنیم.
آموزش آرم lpc1768 جلسه 1 pin connect block

آموزش آرم lpc1768 جلسه ۱ pin connect block

مباحث این مطلب آموزش LPC176x ( آموزش pin connect block )

  1. ریجستر های PINSEL0 تا PINSEL10
  2. ریجستر های PINMODE0 تا PINMODE9
  3. ریجستر I2CPADCFG

توجه : در مطلب زیر، متون صورتی رنگ، رو شک دارم در صحتش لذا رنگش رو تغییر دادم تا بدونید.

تو این مطلب میخوایم ۲۱ تا ریجستر اولی شکل زیر رو توضیح بدیم
تو این مطلب میخوایم ۲۱ تا ریجستر اولی شکل زیر رو توضیح بدیم :
توجه : تمام ریجستر های زیر R/W هستن ( یعنی هم میتونیم مقدارشون رو بخونیم و هم تغییر بدیم )
Pin Control Module registers
[۱] یه ریست خارحی، ریست واچداگ، ریست روشن شدن مدار یا ریست BOD میتونه مقدار تمام ریجستر های بالا به ۰ کنه.

توجه : نحوه استفاده از رجیسترهای فوق در کامپایلر کیل به صورت زیر هستش :

ریجستر های PINSEL0 تا PINSEL10

ریجستر های PINSEL0 تا PINSEL10

خب همون طور که میدونید مانند سایر میکروکنترلر های دیگه، lpc176x دارای تعدادی پایه هستش، که بعضی پایه ها دارای ۱ نقش هستن و بعضی دارای ۴ نقش!، یعنی روی یه پایه میکرکنترلر هم میتونیم وقفه خارجی داشته بشیم، هم ارتباط سریال هم ورودی خروجی و هم مثلا Spi(این فرمی که گفتم برا مثال بود)؛ ممکنه پایه ای باشه که فقط یه نقش داشته باشه و اونم ورودی/خروجی باشه، حالا مثلا پایه x ام میکرو کنترلر دارای امکانات IO/UART/SPI/EXTERNAL INTERRUPT هستش حالا ما میخوایم از ویژگی UART این پایه استفاده کنیم، باید چطوری به میکروکنترلر بفهمونیم که داداش من میخوام از UART در این پایه استفاده کنم، لذا اینو فعال کن رو این پایه و بقیه ویژگیها(امکانات) رو غیر فعال کن؟ خب از این ۱۰ تا ریجستر PINSEL استفاده میکنیم برای اینکار.(یا حضرت عباس ع، عجب توضیحی دادم^_^، امیدوارم متوجه شده باشید، البته در مطالب بعد و در ادامه متوجه میشید، با این سری از ریجستر ها زیاد کار داریم ^_^)

نحوه مقدار دهی هر ۱۱ تا ریجستر این قسمت رو در زیر عکس(جدول)شون رو قرار میدم و بعدش توضیح کوچولو میدم و بعد تمام جداول دیگه رو قرار میدم.

خب همون طور که در عکس زیر میبینید، مثلا برا پایه P0.0 دارای ۴ تا ویژگی(امکانات و یا هر چی که اسمش رو بزارید) هستش، ورودی خروجی(GPIO)، و RD1 و TXD3 و SDA1، حالا مثلا اگه بخوایم این پایه در نقش اولی ( GPIO ) قرار بگیره باید مقدار ۰۰ ( که عددی باینری هستش و فرم نمایش دیگه اش میشه ۰b10 و به صورت دسیمال میشه ۲) رو به بیت های ۰و۱ ریجستر PINSEL0 بدیم، اگه میخوایم پایه در نقش دوم(RD1) قرار بگیره باید مقدار ۰۱ بدیم به بیت های گفته شده، اگه بخوایم در نقش سومی(TXD3) باشه باید مقدار ۱۰ و اگه نقش ۴امی(SDA1) رو میخوایم باید مقدار ۱۱ بدیم.

توجه ۱ : تا جایی که من میدونم کل ریجستر های میکروکنترلر LPC176x همگی ۳۲ بیتی هستن همون طور که تا الان بودن!
توجه ۲ : همون طور که میبینید حداکثر ۴ حالت برای هر پایه میکرو میتونیم داشته باشیم، که میشه مقادیر ۰ تا ۳ که باید به ریجستر PINSEL بدیم، حالا همون طور که شما حتما با اعداد دسیمال/باینری/هگزا دسیمال آشنا هستید، میدونید که عدد ۳ یه عدد ۲بیتی هستش، لذا برا تعیین نقش هر پایه میکرو نیاز به ۲ بیت از ریجستر PINSEL هستش، تا بتونیم نقش مدنظرمون برای اون پایه میکرو رو تعیین کنیم؛ همون طور که در شکل های زیر میبینید به ازای هر ۱۶ تا پایه(پایه ۰ تا ۱۵ و ۱۶ تا ۳۱) یه ریجستر PINSEL مجزا داریم، به عبارت دیگه به ازای هر پورت، ۲ تا ریجستر PINSEL داریم و چون ۵ تا پورت داریم(پورت های ۰ تا ۴)، لذا ۱۰ تا ریجستر PINSEL هم داریم، یه ریجستر PINSEL دیگه هم با نام PINSEL10 داریم که کارش با ریجستر های PINSEL0 تا PINSEL9 یکم متفاوت هستش ولی خب چون ریجستر PINSEL10 با ریجستر های دیگه هم اسم هستش تو دیتاشیت تو همین قسمت توضیح داده بود ما هم تو همین قسمت توضیح میدیم!!!
۰۰ : انتخاب نقش اول برا پایه مد نظر
۰۱ : انتخاب نقش دوم برا پایه مد نظر
۱۰ : انتخاب نقش سوم برا پایه مد نظر
۱۱ : انتخاب نقش چهارم برا پایه مد نظر

خب دیگه توضیحات بسه، برید جداول زیر رو ببنیید :

ریجستر pinsel0
PINSEL0 : تعیین نقش پایه های P0.0 تا P0.15؛ پایه های P0.12 تا P0.14 در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.

سوال : داداش این داستان " پکیج ۸۰ پایه" چیه؟
جواب : خب تو جلسه ۰ گفتم که من با سری Cortex-M3 کار میکنم و مبنای آموزش من فایل LPC176x/5x User manual هستش، تو همون مطلب من یه لیست ۳۲ تایی اسم میکرو سری Cortex-M3 رو قرار دادم، که میکرو های شماره ۱ تا ۱۶ توضیحاتش تو اون فایل مرجع ما هستش، یعنی فایل مرجع ما این ۱۶ تا میکرو رو آموزش میده و پوشش میده، حالا تعداد پایه های این ۱۶ تا میکرو که با هم برابر نیست که، تو اون لینکی که تو جلسه ۰ قرار دادم(فایل pdf اش رو هم قرار دادم) اگه برید تو اون لینک و ستون "Package name" اگه برید و ببینید، میبینید! که یه سری از میکرو ها نوشته LQFP80 (پکیج ۸۰ پایه) و برا بقیه نوشته LQFP100 یا TFBGA100 یا WLCSP100 (پکیج ۱۰۰ پایه) و اسم های مشابه این ولی عدد ۱۰۰ توش وجود داره(یعنی ۱۰۰ پایه) ^_^ حالا دوهزاریت افتاد داستان ۸۰ و ۱۰۰ پایه چیه داش؟ ^_^

ریجستر PINSEL1
PINSEL1 : تعیین نقش پایه های P0.16 تا P0.30؛ پایه P0.31 در دسترس نیست.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.
[۲] پایه های P0.27 و P0.28 در حالت Open Drain هستند، برای سازگاری با پروتکول I2C

سوال : Open Drain چیه و کارش با i2c چیه؟
جواب : فقط یه مختصر توضیحی میدم، توضیح بیشتر هم بمونه برا مطلب مربوط به خودش(یه مطلب مختصش میخوام به زودی! بزارم تو سایت)، متن زیر رو بخون :
خب به کمک Open Drain سطح ولتاژ پایه های میکرو رو تغییر میدیم، تا با دستگاه های دیگه سازگار بشه، چون ممکنه سطح ولتاژ میکرو ما با وسایل دیگه یکسان نباشه، اگه متوجه نشدید فعلا گیر ندید، حالا حالا ها با بحث Open Drain کار نداریم، حداقل تو ۴-۵ مطلب بعدی فک کنم این طور باشه، حالا شاید بعدش رفتیم سراغش، هر چند که من به زودی! مطلبش رو میزارم.

ریجستر PINSEL2
PINSEL2 : تعیین نقش پایه های P1.0 تا P1.15؛ پایه های P1.2 تا P1.3 و P1.5 تا P1.7 و P1.11 تا P1.13 در دسترس نیستند.

ریجستر PINSEL3
PINSEL3 : تعیین نقش پایه های P1.16 تا P1.31
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.

ریجستر PINSEL4
PINSEL4 : تعیین نقش پایه های P2.0 تا P2.13؛ پایه های P2.14 و P2.15 در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.
[۲] این پایه ها پشتیبانی میکنن debug trace function رو وقتی که انتخاب شده باشن به وسیله ابزار development و یا به وسیله نوشتن در بیت سوم از ریجستر PINSEL10

سوال : داستان debug trace function چیه؟
جواب : خودم فعلا نمیدونم، ولی اینو میدونم که فعلا به کار ما نمیاد، همین طور که اون فایل مرجعمون رو پیش میریم، هر جا بهش رسیدم یا هر جا که بهش نیاز پیدا کردیم، اون وقت دربارش مطالعه میکنم و توضیحش میدم.

PINSEL5 : این ریجستر وجود ندارد چون پایه های P2.16 تا P2.31 در دسترس نیستند.

PINSEL6 : این ریجستر وجود نداره، چون پایه های P3.0 تا P3.15 در دسترس نیستند.

ریجستر PINSEL7
PINSEL7 : تعیین نقش پایه های P3.25 و P3.26؛ پایه های P3.16 تا P3.24 و P3.27 تا P3.31 در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.

PINSEL8 : این ریجستر وجود نداره، چون پایه های P4.0 تا P4.15 در دسترس نیستند.

ریجستر PINSEL9
PINSEL9 : تعیین نقش پایه های P4.28 تا P4.29؛ پایه های P3.16 تا P3.27 و P3.30 تا P3.31 در دسترس نیستند.

ریجستر PINSEL10
PINSEL10 : تنها بیت ۳ام این ریجستر در دسترس هستش و بقیه بیت ها رزرو شده هستند، این بیت استفاده میشه برای کنترل Trace function بیت های P2.2 الی P2.6

ریجستر های PINMODE0 تا PINMODE9

ریجستر های PINMODE0 تا PINMODE9

این سری از ریجستر ها برا تعیین ویژگی pull-up/pull-down پایه ها هستند( البته اگه پایه در نقش GPIO باشه در کل تا جایی که من شنیدم بهتره که از این مقاومت های داخلی استفاده نکنیم و از مقاومت ها خارجی استفاده کنیم، حالا این طوری هم حساب کنیم ممکنه سوال بشه که سازنده هاش بیکار بودن این ویژگی مقاومت داخلی رو به میکرو ها اضافه کردن؟، در این مورد باید بگم که من اطلاعات زیادی در این زمینه ندارم، خودتون برید تحقیق کنید، فهمیدید به ما هم بگید. )

توجه ۱ : این ریجستر هم تقریبا شبیه ریجستر PINSEL هستش، در اینجا هم به ازای هر پایه، دو بیت PINMODE داریم، و به ازای هر ۱۶ تا پایه یه ریجستر PINMODE داریم و چون ۵ تا پورت داریم لذا ۱۰ تا هم ریجستر PINMODE داریم.

توجه ۲ : همون طور که در جدول زیر میبینید، نحوه مقدار دهی توضیح داده شده( و در جداول دیگه توضیح نداده این مورد رو، چون همون ۱ بار کافیه ^_^)، که در زیر براتون مینویسیم :
۰۰ : فعال کردن pull-up
۰۱ : فعال کردن مد Repeater
۱۰ : پایه نه pull-up باشه و نه pull-down
۱۱ : فعال کردن pull-down

سوال ۱ : این داستان pull-up و pull-down چیه؟
جواب ۱ : مطلب مقابل رو بخون : آموزش جامع میکروکنترلر AVR جلسه۱۲

سوال ۲ : مد Repeater رو میشه توضیح بدین؟
جواب ۲ : چند خط توضیح زیر رو ببین :
این مد فعال میکنه مقاومت pull-up اگه پایه مد نظر در حالت high باشه و فعال میکنه مقاومت pull-down رو اگه پایه مد نظر در حالت low باشه.

این مد برا بحث خارج کردن میکرو از مد Power down مناسب نیست.

The state retention is not applicable to the Deep Power-down mode.

این کار به این دلیله که پایه حفظ کنه آخرین وضعیت شناخته شده خودش رو، اگر پایه به صورت ورودی پیکربندی شده و is not driven externally

This causes the pin to retain its last known state if it is configured as an input and is not driven externally.

 

Repeater mode may typically be used to prevent a pin from floating (and potentially using significant power if it floats to an indeterminate state) if it is temporarily not driven.

توجه ۳ (مهم) : مهمون طور که در جداول زیر میبینید، مقدار Reset Value برابر ۰۰ هستش یعنی در حالت عادی که میکرو روشن میشه، تمام پایه ها در حالت عدی مقاومت داخلی pull-up شون فعال هستش، اینو گفتم چون در بعضی امکانات جانبی میکرو که جلسات بعد بهش میپردازیم ممکنه نیاز باشه که مقاومت داخلی فعال نباشه و یا حالت های دیگه ای مورد نیاز باشه.

ریجستر PINMODE0
PINMODE0 : این ریجستر برا تعیین مد پایه های P0.0 تا P0.15 هستش؛ پایه های P0.12 تا P0.14 در دسترس نیستند.

ریجستر PINMODE1
PINMODE1 : این ریجستر برا تعیین حالت مقاومت داخلی پایه های P0.16 تا P0.26 هستش؛ پایه های P0.27 تا P0.31 در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.
[۲] تعیین مقاومت داخلی برای پایه های P0.27 تا P0.30 امکانش نیست، پایه های P0.27 و P0.28 دارای نقش I2C هستن و دارای حالت Open Drain بدون مقاومت پول آپ/دان؛ پایه های P0.29 و P0.30 هم دارای نقش USB هستند و مقاومت پول آپ/دان ندارند، پایه های P0.29 و P0.30 همچنین باید جهت های یکسانی داشته باشند بعد از این که در نقش USB قرار میگیرن ( اگه به ریجستر PINSEL1  مراجعه کنید میبینید که نقش دوم پایه های P0.29 و P0.30، نقش USB هستش )

ریجستر PINMODE2
PINMODE2 : تعیین حالت مقاومت داخلی پایه های P1.0 تا P1.15؛ پایه های P1.2 تا P1.3 و P1.5 تا P1.7 و P1.11 تا P1.13 در دسترس نیستند.

PINMODE3
PINMODE3 : تعیین حالت مقاومت داخلی پایه های P1.16 تا P1.31

ریجستر PINMODE4
PINMODE4 : تعیین حالت مقاومت داخلی پایه های P2.0 تا P2.13؛ پایه های P2.14 و P2.15 در دسترس نیستند.

PINMODE5 : این ریجستر وجود ندارد چون پایه های P2.16 تا P2.31 در دسترس نیستند.

PINMODE6 : این ریجستر وجود نداره، چون پایه های P3.0 تا P3.15 در دسترس نیستند.

ریجستر PINMODE7
PINMODE7 : تعیین حالت مقاومت داخلی پایه های P3.25 و P3.26؛ پایه های P3.16 تا P3.24 و P3.27 تا P3.31 در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.

PINMODE8 : این ریجستر وجود نداره، چون پایه های P4.0 تا P4.15 در دسترس نیستند.

ریجستر PINMODE9
PINMODE9 : تعیین حالت مقاومت داخلی پایه های P4.28 تا P4.29؛ پایه های P3.16 تا P3.27 و P3.30 تا P3.31 در دسترس نیستند.

ریجستر های PINMODE_OD0 تا PINMODE_OD4

ریجستر های PINMODE_OD0 تا PINMODE_OD4

۵ تا ریجستر PINMODE_OD داریم و هر کدوم برا یه پورت میکروکنترلر هست، ریجستر PINMODE_OD0 برا پورت ۰ هستش و...، همون طور که در عکس زیر میبینید، بیت ۰ هر ریجستر متناظر با همون بیت از پورت میکرو هستش، نحوه مقدار دهی هر بیت این رجیستر به صورت زیر هستش :
۰ : پایه مد نظر در نقش عادی خودش هستش و Open Drain غیر فعال هستش.
۱ : حالت Open Drain اون پایه فعال میشه.

ریجستر PINMODE_OD0
PINMODE_OD0 : تعیین فعال بودن یا نبودن حالت Open Drain پایه های P0.0 تا P0.31، پایه P0.12 تا P0.14 و P0.27 و P0.28 و P0.31 در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.
[۲] پایه های P0.27 و P0.28 باید تنظیم بشن در ریجستر I2CPADCFG اگر این دو استفاده شدن برای پروتکول I2C، مقدار دهی بیت های ۲۷ و ۲۸ ریجستر PINMODE_OD0 تاثیری در پایه های P0.27 و P0.28 میکروکنترلر ندارد(چون به صورت پیش فرض مد Open Drain برا این دو پایه برا بحث سازگاری I2C با دستگاه های دیگه، فعال هستش)
[۳] پایه های ۰و۱ و ۱۰و۱۱ و ۱۹و۲۰ از پورت ۰ میکروکنترلر قابلیت استفاده به عنوان I2C رو دارند(اگه به نقش های این پایه ها توجه کنید میبینید که یکی از نقش های این پایه های یا SDA هستش یا SCL، یعنی همون پایه های I2C)، اگر این خصوصیت فعال شود در این پایه ها، حالت Open Drain در این پایه ها باید فعال شود به وسیله ریجستر PINMODE_OD0

ریجستر PINMODE_OD1
PINMODE_OD1 : تعیین فعال بودن یا نبودن حالت Open Drain پایه های P1.0 تا P1.31؛ پایه P1.2 تا P1.3 و P1.5 تا P1.7 و P1.11 تا P1.13 در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.

ریجستر PINMODE_OD2
PINMODE_OD2 : تعیین فعال بودن یا نبودن حالت Open Drain پایه های P2.0 تا P2.13؛ پایه ها P2.14 تا P2.31 در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.

ریجستر PINMODE_OD3
PINMODE_OD3 : تعیین فعال بودن یا نبودن حالت Open Drain پایه های P3.25 و P3.26؛ بقیه پایه ها در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.

ریجستر PINMODE_OD4
PINMODE_OD4 : تعیین فعال بودن یا نبودن حالت Open Drain پایه های P4.28 و P4.29؛ بقیه پایه ها در دسترس نیستند.

ریجستر I2CPADCFG

ریجستر I2CPADCFG

این ریجستر اجازه پیکربندی پایه های I2C (فقط I2C0) رو به ما میده در دو مد استاندارد و سریع.
برای این که از این پایه ها به عنوان I2C استفاده کنیم، چه مد استاندارد و چه مد سریع(کلا I2C فعال باشه)، باید بیت های SDAI2C0 و SCLI2C0 مقدارشون ۰ باشه (مقدار پیشفرض همینه)
برای مد سریع، بیت های SDADRV0 و SCLDRV0 باید ۱ بشن.
برای استفاده های غیر I2C از این دو پایه، باید filtering و slew rate به وسیله ۱ کردن بیت های SDAI2C0 و SCLI2C0 غیر فعال شود.
ریجستر I2CPADCFG
بیت ۰ ( SDADRV0 ) :
بیت ۱ ( SDAI2C0  ) :
بیت ۲ ( SCLDRV0 ) :
بیت ۳ ( SCLI2C0  ) :
بیت های ۴ تا ۳۱ : در دسترس نیستند.
توضیحات این قسمت تا همین جا کافیه - فعلا بهش نیاز نداریم، هر چند که بیت ۰ و۲ برا تعیین مد و بیت ۱و۳ برا فعال/غیر فعال کردن i2c هستن همون طور که قبلا گفتیم، فعلا رو این ریجستر کاری نداشته باشید و حساس نشید بهش، فعلا کاری نداریم، گفتم چون دیتاشیت تو این قسمت این ریجستر رو توضیح داده بود، حالا در آینده به مبحث i2c رسیدیم یه برکشیت میزنیم به این مطلب و بررسی میکنم ریجسترش رو.

بررسی وضعیت PINMODE در مد فعال بودن Open Drain

بررسی وضعیت PINMODE در مد فعال بودن Open Drain

در حالت عادی، PINMODE استفاده میشه(اعمال میشه) برای یه پایه که به صورت ورودی هستش.
وقتی پایه ای، مد Open Drain اش فعال باشه، the input mode still does not apply when the pin is outputting a 0.

However, when the pin value is 1, PINMODE applies since this state turns off the pin’s output driver.

For example, this allows for the possibility of configuring a pin to be open drain with an on-chip pullup.

A pullup in this case which is only on when the pin is not being pulled low by the pin’s own output.

ریجستر PINMODE_OD فعال/غیر فعال میکنه مد open drain رو برای پورت های میکروکنترلر
مد اپن درین باعث میشه که پایه به صورت خودکار مقدار مقاومت پول دان داخلیش فعال بشه اگه مقدار این پایه خروجی ۰ باشه، در این حالت ولتاژ خروجی هم تقریبا ۰ میشه ( برای محاسبه مقدار دقیقش یه سری محاسبات داره که من بلط نیستم ولی یه جزوه در زیر میزارم برا مطالعه )
حالا اگه ما مقدار این پایه خروجی رو ۱ کنیم، این مد اپن درین غیر فعال میشه و اون ولتاژی که اعمال کردید به پایه ( مدارش رو در زیر میبینید ) در خروجی ظاهر میشه؛ این طوری و به کمک این مد اپن درین، میبینید که سطح ولتاژ خروجی پایه های میکرو رو از ۳٫۳ ولت به هر مقداری میتونیم برسونیم ( نیاید ۲۲۰ ولت وصل کنید، هر اتفاقی بیوفته پای خودتون ^_^ من تا ۱۲ ولت تست کردم مشکلی رخ نداد ^_^ )
توجه : در شکل زیر وقتی خروجی رو ۰ کنیم تقریبا ولتاژ خروجی ۰ میشه و وقتی خروجی رو ۱ کنیم، تقریبا خروجی برابر Vout میشه.
فعال کردن مد اپن درین پایه های میکرو

خلاصه چیزایی که تو این مطلب یاد گرفتیم :

  1. ریجستر های PINSEL0 تا PINSEL9 که برا تعیین نقش پایه های میکروکنترلر هستش ( با ریجستر PINSEL10 فعلا کاری نداریم) --> تعیین نقش پایه ها، مثلا پایه در نقش ورودی/خروجی باشه یا ارتباط سریال باشه یا spi باشه و... کلا نقش پایه چی باشه.
  2. ریجسترهای PINMODE0 تا PINMODE9 که برا تعیین نوع مقاومت داخلی پایه ها هستش(پول آپ، پول دان، Repeater و هیچ کدام-نه پول آپ و نه پول دان-)
  3. رجیتسرهای PINMODE_OD0 تا PINMODE_OD4 هم برا تغییر سطح ولتاژ پایه های میکرو مورد استفاده قرار میگیره، تا جلسه ۱۰-۱۲ این سری از آموزش به کارتون نمیاد ( یعنی اگه نخوندید یا متوجه نشدید زیاد مهم نیست )
  4. یه سری مطالب اضافه که فعلا لازم نبود ^_^ ( منظور ریجستر I2CPADCFG هستش )

مطلب جلسه بعد : ( Chapter 9: LPC176x/5x General Purpose Input/Output ( GPIO

مطالعه بیشتر ( مربوط به بحث رجیتسرهای PINMODE_OD0 تا PINMODE_OD4 ) : 

  1. MOSFET as a Switch
  2. Choosing an Appropriate Pull-up/Pull-down Resistor for Open Drain Outputs

هزینه مطلب : برای شادی روح شهدا و امام شهدا ۳ تا صلوات بفرستید و برا سلامتی امام خامنه ای و علمای اسلام(و نه علمای انگلیس و انگلیسی) صلوات بفرستید و برا اموات خودم و خودتون یه فاتحه بخونید(عموی ما هم حدود ۲ هفته پیش فوت کرد خواستید فاتحه بخونید عموی من رو هم مد نظر داشته باشید ^_^)

داستان : من معمولا حیون نگه میدارم، از بچگی علاقه داشتیم تا الان!، یه جفت بلدرچین دارم، دو شب پیش بود، خواب دیدم بلدرچینم افتاده داره میمیره، بیدار شدم رفتم حیاط دیدم بلدرچینم افتاده تو قفس(زنده بود) بعد گزاشتمش تو خونه(آشپزخونه) تا یکم گرمش بشه شاید حالش خوب بشه، نیم ساعت بعد رفتم سراغش دیدم حیوون بیچاره مرده -_- تو خواب دیدن هم شانس نداریم ^_^

خب این مطلب هم تموم شد، امیدوارم مفید بوده باشه برای شما دوستان عزیز، دوستانی که انگلیسیشون خوبه اون موارد صورتی رنگ رو راهنمایی کنن؛ تا مطلب بعد، اگه زنده بودیم، یا علی، اگه هم فوت کردیم که رحم الله من یقرا فاتحمه الصلوات laugh

تعداد مطالب : 367 تا
جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
ارسال دیدگاه
7
نظرات این مطلب بسته شده است.
  1. ehs

    مهمان

    ehs

    آموزشها عالی هستند ممنون از شما smile

  2. احسان

    مهمان

    احسان

    خدا قوت پهلون دمتون گرم..

  3. بهزاد

    مهمان

    بهزاد

    سلام
    آقا مهدی میخواستم بدونم امکانش نیست که هر جلسه آموزشتون رو بصورت pdf دربیارید برای دانلود؟ من خیلی اوقات دسترسی به نت ندارم . اگه امکان پذیره که خیلی خوبه اگر هم نه که باز هم ممنون از زحماتت

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام – وقتش و حسش نیست – اگه خودت حوصله داری که pdf کن بده بزارم تو سایت ملت هم دانلود کنن

  4. میلاد

    مهمان

    میلاد

    سلام عزیز تفاوت کد نویسی تو iar با keil چیه ؟ آیا میشه همین آموزشاتون رو هم تو iar پیاده کرد
    ؟؟

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

      نویسنده این مطلب

      مهدی دمرچیلو

      سلام
      والا IAR کار نکردم – آموزش که همونه ولی مثلا اسم رجیستر X مثلا – تو کیل ممکنه AA باشه و تو IAR به صورت BB باشه – عند تفاوت همینه…..
      آموزش ها مختص کامپایلر خاصی نیست – ولی پروژه ها برا کیل هستش – برا بحث IAR باید نام رجیستر ها رو تصحیح کنی.

  5. جهاد

    مهمان

    جهاد

    جان داداش اگه کادر زرد اخر رو نمیزاشتی سرمو میکوبوندم به دیوار
    پرژه محور باشه درکش بهتر میشه
    باز بگو نگفتی smile
    عالی بود خسته نباشید