من کل اون کانفیگ ها رو برای بردن به حالتGPIO نوشتم . بعضی مثل همین خودشون تو حالت خروجی هستن (البته پیش فرض تو حالت خروجی برای I2C هست که بهتره به مد خروجی IO تغییر بدین ) . ولی کلا با توجه به اینکه هر پین قبلا تو چه مدی بوده بهتره وقتی که می خوایم بعنوان gpio استفاده کنیم برای اطمینان اینا رو بنویسیم ...
در ضمن دو پینی که نام بردم به جهت OpenDrain بودن مقاومت Pullup و PullDown ندارن ....!!!
برای اینکه براحتی عدد مورد نظر رو برای قرار دادن در رجیستر IOCON پیدا کنی .. راحتترین راه استفاده از شبیه ساز کیل هست . وقتی تو مد دیباگ نرم افزاری هستی از منوی Peripherals عبارت I/O Configurations رو باز کن.... حالا با انتخاب هر پین در پنجره بالا و انتخاب حالت مورد نظر از دو منوی کرکره ای وسط صفحه ، عدد متناظر در قسمت پایین پنجره مثلا IOCON_PIO0_4 همون عددی هست که باید تو رجیستر بنویسی...
ممنون از پاسختون عالی بود.
ببخشید که این قدر سوال میپرسم.
طبق گفته شما اگر بخواهم pio0_3 رو pull down کنم باید این کد رو بنویسم اما نمیشه.
و اون پین 1 هست!چیزی کم نداره؟
[PHP]#include <LPC13xx.h>
int main(void){
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6);
LPC_GPIO0->DIR=1<<3;
LPC_IOCON->PIO0_3=0x000000C8;
}[/PHP]
مهندس معمولا Pullup و PullDown برای حالت ورودی مورد استفاده قرار میگیره چون در حالت خروجی وضعیت پین مشخصه و Float نیست در نتیجه تاثیری نداره ... من دو مثال برای حالت ورودی و خروجی میزارم ...ممنون از پاسختون عالی بود.
ببخشید که این قدر سوال میپرسم.
طبق گفته شما اگر بخواهم pio0_3 رو pull down کنم باید این کد رو بنویسم اما نمیشه.
و اون پین 1 هست!چیزی کم نداره؟
برای خروجی :
[PHP]#include "LPC13xx.h"
//************************************************** *****************************
int main (void)
{
uint32_t i;
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6); // AHB Config
LPC_IOCON->PIO0_3=0x000000C0; // P0_3 Inactive PD/PU , GPIO
LPC_GPIO0->DIR=1<<3; // P0_3 Output
while(1)
{
LPC_GPIO0->MASKED_ACCESS[0xfff] |= 1<<3; // Output High
for(i=0;i<=10000000;i++);
LPC_GPIO0->MASKED_ACCESS[0xfff] &= ~(1<<3); // Output Low
for(i=0;i<=10000000;i++);
}
}
//************************************************** *****************************
[/PHP]
برای ورودی :
[PHP]#include "LPC13xx.h"
//************************************************** *****************************
int main (void)
{
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<6); // AHB Config
LPC_IOCON->PIO0_3=0x000000D0; // P0_3 PullUp , GPIO
LPC_IOCON->PIO0_2=0x000000C0; // P0_2 Inactive PU/PD , GPIO
LPC_GPIO0->DIR &= ~(1<<3); // P0_3 Input
LPC_GPIO0->DIR |= 1<<2; // P0_2 Output
while(1)
{
if (((LPC_GPIO0->MASKED_ACCESS[0xfff])>>3)&0x01) // if P0_3=1
LPC_GPIO0->MASKED_ACCESS[0xfff] |= 1<<2; // P0_2 High
else
LPC_GPIO0->MASKED_ACCESS[0xfff] &= ~(1<<2); // P0_2 Low
}
}
//************************************************** *****************************
[/PHP]
ممنون از پاسخ کاملتون.خیلی عالی
راستی تاپیک از موضوع اصلی منحرف شد.
ما منتظر آموزش های بعدی شما هستیم
اگه بشه یه هدر بورد خوب طراحی کنید و برا فروش توی فروشگاه بذارید خیلی خوبه، خیلیا مثل من هستن که دسترسی به جاهایی نداریم که امکان طراحی pcb متالیزه رو داشته باشیم.
من خودم برا lpc2103 یه بورد طراحی کردم اما هزینه پست و چاپش و همینطور دردسرهای مونتاژ اصلا ارزششو نداشت.
ممنون میشم اگه دوستانی که تو این زمینه آشناتر هستن پیگیری کنن.
با سپاس.
فوق العاده بود
سلام
فایل شماتیک و pcb رو حتما دانلود کنید و از روی شماتیک پایه ها رو پیدا کنید . پایه ها بترتیب هست .
پایه 1 و2 هم gnd و vcc هستند . تغذیه هم 3.3 ولت هست . حواستون باشه پلاریته رو اشتباه نزنید و ولتاژ هم رگوله باشه چون برد محافظی نداره .. موقعی که تغذیه رو وصل میکنید led پاور روی برد روشن میشه ..
دو پین هدر 3 تایی هم برای پروگرام با swd یا bootloader تعبیه شده که جهت استفاده از روش بوت لودر حتما توجه کنید سطح ولتاژ 3.3 باشه ...
یا حق
مهندس ببین شما اگه یه دیباگر مثل Jlink یا Ulink یا STLink و ... داری میتونی از پایه های SWD استفاده کنی و اگه نداری فقط میتونی از طریق بوت لودر سریال ( خطوط rx و tx ) میکرو رو پروگرام کنی ( نه دیباگ ) ...
برای پروگرام از طریق بوت لودر سریال هم یا از پین هدر مورد نظر استفاده میکنی و یا از پایه های rx,tx بیرون اومده از برد ... که به همون وصله درواقع ...
شما به برنامه Flash Magic احتیاج داری برای پروگرام . بعد ازاینکه اتصال فیزیکی رو برقرار کردی (اتصال Rx و Tx به کامپیوتر ) برنامه رو باز میکنی ... پورت سریال رو تنظیم میکنی و جامپر روی برد رو میبندی و دکمه ریستشو میزنی ... بعد جامپر رو برمیداری و پروگرام میکنی .... به همین سادگی ...
تو نقشه پروگرامر mini lpc 1پایه به نام dtr داره شمارش رو 1313 چنده که بهش متصل کنم
شنیدم این میکرو کنترلر فقط از طریق SWD پروگرم میشه و نمیشه از JTAG برای این میکرو استفاده کنیم و یه پروگرامر خاص میخواد...
اول اینکه SWD چیه؟
بعد اینکه با پروگرامر jlink توی فروشگاه میشه این میکرو رو برنامه ریزی کرد؟ و اگه نمیشه چارش چیه؟
با سپاس
ویرایش توسط mj3747 : 25-07-2012 در ساعت 02:44