به نام خدا : میکرو LPC176x دارای ۵ پورت ۳۲ بیتی هستش، به نام های P0, P1, P2, P3, P4 که تعداد پایه های در دسترس در هر پورت متفاوت هستش و در ادامه این مورد رو میبینید(تعداد پایه های در دسترس برای استفاده ما)، هر پایه هم ۱-۴ تا نقش میتونه داشته باشه که نحوه انتخاب نقش اصلی و کارهای دیگه(کلا کار هایی برای کنترل پایه های میکروکنترلر) رو در این مطلب با هم مرور میکنیم.
مباحث این مطلب آموزش LPC176x ( آموزش pin connect block )
ریجستر های PINSEL0 تا PINSEL10
ریجستر های PINMODE0 تا PINMODE9
ریجستر I2CPADCFG
توجه : در مطلب زیر، متون صورتی رنگ، رو شک دارم در صحتش لذا رنگش رو تغییر دادم تا بدونید.
تو این مطلب میخوایم ۲۱ تا ریجستر اولی شکل زیر رو توضیح بدیم
تو این مطلب میخوایم ۲۱ تا ریجستر اولی شکل زیر رو توضیح بدیم : توجه : تمام ریجستر های زیر R/W هستن ( یعنی هم میتونیم مقدارشون رو بخونیم و هم تغییر بدیم )
[۱] یه ریست خارحی، ریست واچداگ، ریست روشن شدن مدار یا ریست BOD میتونه مقدار تمام ریجستر های بالا به ۰ کنه.
توجه : نحوه استفاده از رجیسترهای فوق در کامپایلر کیل به صورت زیر هستش :
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
LPC_PINCON->PINSEL0
LPC_PINCON->PINSEL1
LPC_PINCON->PINSEL2
LPC_PINCON->PINSEL3
LPC_PINCON->PINSEL4
LPC_PINCON->PINSEL5
LPC_PINCON->PINSEL6
LPC_PINCON->PINSEL7
LPC_PINCON->PINSEL8
LPC_PINCON->PINSEL9
LPC_PINCON->PINSEL10
LPC_PINCON->PINMODE0
LPC_PINCON->PINMODE1
LPC_PINCON->PINMODE2
LPC_PINCON->PINMODE3
LPC_PINCON->PINMODE4
LPC_PINCON->PINMODE5
LPC_PINCON->PINMODE6
LPC_PINCON->PINMODE7
LPC_PINCON->PINMODE8
LPC_PINCON->PINMODE9
LPC_PINCON->PINMODE_OD0
LPC_PINCON->PINMODE_OD1
LPC_PINCON->PINMODE_OD2
LPC_PINCON->PINMODE_OD3
LPC_PINCON->PINMODE_OD4
LPC_PINCON->I2CPADCFG
ریجستر های 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 : تعیین نقش پایه های P0.0 تا P0.15؛ پایه های P0.12 تا P0.14 در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.
سوال : داداش این داستان " پکیج ۸۰ پایه" چیه؟ جواب : خب تو جلسه ۰ گفتم که من با سری Cortex-M3 کار میکنم و مبنای آموزش من فایل LPC176x/5x User manual هستش، تو همون مطلب من یه لیست ۳۲ تایی اسم میکرو سری Cortex-M3 رو قرار دادم، که میکرو های شماره ۱ تا ۱۶ توضیحاتش تو اون فایل مرجع ما هستش، یعنی فایل مرجع ما این ۱۶ تا میکرو رو آموزش میده و پوشش میده، حالا تعداد پایه های این ۱۶ تا میکرو که با هم برابر نیست که، تو اون لینکی که تو جلسه ۰ قرار دادم(فایل pdf اش رو هم قرار دادم) اگه برید تو اون لینک و ستون "Package name" اگه برید و ببینید، میبینید! که یه سری از میکرو ها نوشته LQFP80 (پکیج ۸۰ پایه) و برا بقیه نوشته LQFP100 یا TFBGA100 یا WLCSP100 (پکیج ۱۰۰ پایه) و اسم های مشابه این ولی عدد ۱۰۰ توش وجود داره(یعنی ۱۰۰ پایه) ^_^ حالا دوهزاریت افتاد داستان ۸۰ و ۱۰۰ پایه چیه داش؟ ^_^
PINSEL1 : تعیین نقش پایه های P0.16 تا P0.30؛ پایه P0.31 در دسترس نیست.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.
[۲] پایه های P0.27 و P0.28 در حالت Open Drain هستند، برای سازگاری با پروتکول I2C
سوال : Open Drain چیه و کارش با i2c چیه؟ جواب : فقط یه مختصر توضیحی میدم، توضیح بیشتر هم بمونه برا مطلب مربوط به خودش(یه مطلب مختصش میخوام به زودی! بزارم تو سایت)، متن زیر رو بخون :
خب به کمک Open Drain سطح ولتاژ پایه های میکرو رو تغییر میدیم، تا با دستگاه های دیگه سازگار بشه، چون ممکنه سطح ولتاژ میکرو ما با وسایل دیگه یکسان نباشه، اگه متوجه نشدید فعلا گیر ندید، حالا حالا ها با بحث Open Drain کار نداریم، حداقل تو ۴-۵ مطلب بعدی فک کنم این طور باشه، حالا شاید بعدش رفتیم سراغش، هر چند که من به زودی! مطلبش رو میزارم.
PINSEL2 : تعیین نقش پایه های P1.0 تا P1.15؛ پایه های P1.2 تا P1.3 و P1.5 تا P1.7 و P1.11 تا P1.13 در دسترس نیستند.
PINSEL3 : تعیین نقش پایه های P1.16 تا P1.31
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.
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 : تعیین نقش پایه های P3.25 و P3.26؛ پایه های P3.16 تا P3.24 و P3.27 تا P3.31 در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.
PINSEL8 : این ریجستر وجود نداره، چون پایه های P4.0 تا P4.15 در دسترس نیستند.
PINSEL9 : تعیین نقش پایه های P4.28 تا P4.29؛ پایه های P3.16 تا P3.27 و P3.30 تا P3.31 در دسترس نیستند.
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
سوال ۲ : مد 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 : این ریجستر برا تعیین مد پایه های P0.0 تا P0.15 هستش؛ پایه های P0.12 تا P0.14 در دسترس نیستند.
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 : تعیین حالت مقاومت داخلی پایه های P1.0 تا P1.15؛ پایه های P1.2 تا P1.3 و P1.5 تا P1.7 و P1.11 تا P1.13 در دسترس نیستند.
PINMODE3 : تعیین حالت مقاومت داخلی پایه های P1.16 تا P1.31
PINMODE4 : تعیین حالت مقاومت داخلی پایه های P2.0 تا P2.13؛ پایه های P2.14 و P2.15 در دسترس نیستند.
PINMODE5 : این ریجستر وجود ندارد چون پایه های P2.16 تا P2.31 در دسترس نیستند.
PINMODE6 : این ریجستر وجود نداره، چون پایه های P3.0 تا P3.15 در دسترس نیستند.
PINMODE7 : تعیین حالت مقاومت داخلی پایه های P3.25 و P3.26؛ پایه های P3.16 تا P3.24 و P3.27 تا P3.31 در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.
PINMODE8 : این ریجستر وجود نداره، چون پایه های P4.0 تا P4.15 در دسترس نیستند.
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 : تعیین فعال بودن یا نبودن حالت 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 : تعیین فعال بودن یا نبودن حالت Open Drain پایه های P1.0 تا P1.31؛ پایه P1.2 تا P1.3 و P1.5 تا P1.7 و P1.11 تا P1.13 در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.
PINMODE_OD2 : تعیین فعال بودن یا نبودن حالت Open Drain پایه های P2.0 تا P2.13؛ پایه ها P2.14 تا P2.31 در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.
PINMODE_OD3 : تعیین فعال بودن یا نبودن حالت Open Drain پایه های P3.25 و P3.26؛ بقیه پایه ها در دسترس نیستند.
[۱] این موارد در پکیج ۸۰ پایه وجود نیستند.
PINMODE_OD4 : تعیین فعال بودن یا نبودن حالت Open Drain پایه های P4.28 و P4.29؛ بقیه پایه ها در دسترس نیستند.
ریجستر I2CPADCFG
ریجستر I2CPADCFG
این ریجستر اجازه پیکربندی پایه های I2C (فقط I2C0) رو به ما میده در دو مد استاندارد و سریع.
برای این که از این پایه ها به عنوان I2C استفاده کنیم، چه مد استاندارد و چه مد سریع(کلا I2C فعال باشه)، باید بیت های SDAI2C0 و SCLI2C0 مقدارشون ۰ باشه (مقدار پیشفرض همینه)
برای مد سریع، بیت های SDADRV0 و SCLDRV0 باید ۱ بشن.
برای استفاده های غیر I2C از این دو پایه، باید filtering و slew rate به وسیله ۱ کردن بیت های SDAI2C0 و SCLI2C0 غیر فعال شود. بیت ۰ ( 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 میشه.
خلاصه چیزایی که تو این مطلب یاد گرفتیم :
ریجستر های PINSEL0 تا PINSEL9 که برا تعیین نقش پایه های میکروکنترلر هستش ( با ریجستر PINSEL10 فعلا کاری نداریم) --> تعیین نقش پایه ها، مثلا پایه در نقش ورودی/خروجی باشه یا ارتباط سریال باشه یا spi باشه و... کلا نقش پایه چی باشه.
ریجسترهای PINMODE0 تا PINMODE9 که برا تعیین نوع مقاومت داخلی پایه ها هستش(پول آپ، پول دان، Repeater و هیچ کدام-نه پول آپ و نه پول دان-)
رجیتسرهای PINMODE_OD0 تا PINMODE_OD4 هم برا تغییر سطح ولتاژ پایه های میکرو مورد استفاده قرار میگیره، تا جلسه ۱۰-۱۲ این سری از آموزش به کارتون نمیاد ( یعنی اگه نخوندید یا متوجه نشدید زیاد مهم نیست )
یه سری مطالب اضافه که فعلا لازم نبود ^_^ ( منظور ریجستر I2CPADCFG هستش )
مطلب جلسه بعد : ( Chapter 9: LPC176x/5x General Purpose Input/Output ( GPIO
مطالعه بیشتر ( مربوط به بحث رجیتسرهای PINMODE_OD0 تا PINMODE_OD4 ) :
هزینه مطلب : برای شادی روح شهدا و امام شهدا ۳ تا صلوات بفرستید و برا سلامتی امام خامنه ای و علمای اسلام(و نه علمای انگلیس و انگلیسی) صلوات بفرستید و برا اموات خودم و خودتون یه فاتحه بخونید(عموی ما هم حدود ۲ هفته پیش فوت کرد خواستید فاتحه بخونید عموی من رو هم مد نظر داشته باشید ^_^)
داستان : من معمولا حیون نگه میدارم، از بچگی علاقه داشتیم تا الان!، یه جفت بلدرچین دارم، دو شب پیش بود، خواب دیدم بلدرچینم افتاده داره میمیره، بیدار شدم رفتم حیاط دیدم بلدرچینم افتاده تو قفس(زنده بود) بعد گزاشتمش تو خونه(آشپزخونه) تا یکم گرمش بشه شاید حالش خوب بشه، نیم ساعت بعد رفتم سراغش دیدم حیوون بیچاره مرده -_- تو خواب دیدن هم شانس نداریم ^_^
خب این مطلب هم تموم شد، امیدوارم مفید بوده باشه برای شما دوستان عزیز، دوستانی که انگلیسیشون خوبه اون موارد صورتی رنگ رو راهنمایی کنن؛ تا مطلب بعد، اگه زنده بودیم، یا علی، اگه هم فوت کردیم که رحم الله من یقرا فاتحمه الصلوات
سلام
آقا مهدی میخواستم بدونم امکانش نیست که هر جلسه آموزشتون رو بصورت pdf دربیارید برای دانلود؟ من خیلی اوقات دسترسی به نت ندارم . اگه امکان پذیره که خیلی خوبه اگر هم نه که باز هم ممنون از زحماتت
مشاهده پاسخ ها(1)
نویسنده این مطلب
مهدی دمرچیلو
سلام – وقتش و حسش نیست – اگه خودت حوصله داری که pdf کن بده بزارم تو سایت ملت هم دانلود کنن
مهمان
میلاد
سلام عزیز تفاوت کد نویسی تو iar با keil چیه ؟ آیا میشه همین آموزشاتون رو هم تو iar پیاده کرد
؟؟
مشاهده پاسخ ها(1)
نویسنده این مطلب
مهدی دمرچیلو
سلام
والا IAR کار نکردم – آموزش که همونه ولی مثلا اسم رجیستر X مثلا – تو کیل ممکنه AA باشه و تو IAR به صورت BB باشه – عند تفاوت همینه…..
آموزش ها مختص کامپایلر خاصی نیست – ولی پروژه ها برا کیل هستش – برا بحث IAR باید نام رجیستر ها رو تصحیح کنی.
مهمان
جهاد
جان داداش اگه کادر زرد اخر رو نمیزاشتی سرمو میکوبوندم به دیوار
پرژه محور باشه درکش بهتر میشه
باز بگو نگفتی
عالی بود خسته نباشید
مهمان
آموزشها عالی هستند ممنون از شما
مهمان
خدا قوت پهلون دمتون گرم..
مهمان
سلام
آقا مهدی میخواستم بدونم امکانش نیست که هر جلسه آموزشتون رو بصورت pdf دربیارید برای دانلود؟ من خیلی اوقات دسترسی به نت ندارم . اگه امکان پذیره که خیلی خوبه اگر هم نه که باز هم ممنون از زحماتت
نویسنده این مطلب
سلام – وقتش و حسش نیست – اگه خودت حوصله داری که pdf کن بده بزارم تو سایت ملت هم دانلود کنن
مهمان
سلام عزیز تفاوت کد نویسی تو iar با keil چیه ؟ آیا میشه همین آموزشاتون رو هم تو iar پیاده کرد
؟؟
نویسنده این مطلب
سلام
والا IAR کار نکردم – آموزش که همونه ولی مثلا اسم رجیستر X مثلا – تو کیل ممکنه AA باشه و تو IAR به صورت BB باشه – عند تفاوت همینه…..
آموزش ها مختص کامپایلر خاصی نیست – ولی پروژه ها برا کیل هستش – برا بحث IAR باید نام رجیستر ها رو تصحیح کنی.
مهمان
جان داداش اگه کادر زرد اخر رو نمیزاشتی سرمو میکوبوندم به دیوار
پرژه محور باشه درکش بهتر میشه
باز بگو نگفتی
عالی بود خسته نباشید