من با میکرو LPC1114 کار میکنم از خانواده Cortex-M0
البته این چیزی که می خواهم این پایین بگم فرق نداره شما با LPC1313 یا LPC1343 هم کار می کنید چون در امکانات مشابه به یک صورت هستند تقریبا (البته به طور واضح برای دیگر خانواده ها و مدل های غیر مشابه هم می تواند درست باشد!
)
خوب همان طور که می دونید و در دیتاشیت نوشته شده است ، وقتی یک پایه از پیکربندی ورودی به خروجی می رود مقدار همان لحظه ی ورودی به خروجی کشیده می شود ، به طور مثال در حالت پیش فرض PullUp ها برای پایه ها فعال است ، و اگر آن پایه را به خروجی پیکربندی کنید ، مقدار آن برابر High خواهد گردید ، این قابلیت از شناور شدن پایه جلوگیری می کند.
خب ، پس باید وقتی PullDown فعال می گردد ، و پایه به خروجی می رود ، مقدار آن LOW گردد ، نکته ای که مطرح است این است که اگر این دو عمل را پشت سر هم انجام دهید ، پایه LOW نخواهد شد ، همان حالت قبلی که PullUp است اجرا میگردد ، اگر بخواهیم این اتفاق بیاقتد باید بین این دو دستور طبق اندازه گیری های من 9 تا کلاک فاصله بیافته (در میکرو AVR وقتی یه مقدار در رجیستر PORT قرار گرفت 2 تا کلاک می خواست تا در داخل رجیستر PIN قرار بگیرد این رو از دیتاشیت هم می شد فهمید ، ولی این رو من از دیتاشیت LPC11XX نتوستم بفهمم )
اگر امکان دارد این تست رو انجام بدهید و در این جا اطلاع دهید که چند کلاک طول می کشد :
البته این نکته رو بگم که شبیه ساز Keil این مورد را در نظر نمی گیرد . باید با سخت افزار تست کنید
برای تعداد کلاک از سیمولاتور Keil می تونید کمک بگیرید
Debug-> Execution... ->Show Time
البته این چیزی که می خواهم این پایین بگم فرق نداره شما با LPC1313 یا LPC1343 هم کار می کنید چون در امکانات مشابه به یک صورت هستند تقریبا (البته به طور واضح برای دیگر خانواده ها و مدل های غیر مشابه هم می تواند درست باشد!

خوب همان طور که می دونید و در دیتاشیت نوشته شده است ، وقتی یک پایه از پیکربندی ورودی به خروجی می رود مقدار همان لحظه ی ورودی به خروجی کشیده می شود ، به طور مثال در حالت پیش فرض PullUp ها برای پایه ها فعال است ، و اگر آن پایه را به خروجی پیکربندی کنید ، مقدار آن برابر High خواهد گردید ، این قابلیت از شناور شدن پایه جلوگیری می کند.
خب ، پس باید وقتی PullDown فعال می گردد ، و پایه به خروجی می رود ، مقدار آن LOW گردد ، نکته ای که مطرح است این است که اگر این دو عمل را پشت سر هم انجام دهید ، پایه LOW نخواهد شد ، همان حالت قبلی که PullUp است اجرا میگردد ، اگر بخواهیم این اتفاق بیاقتد باید بین این دو دستور طبق اندازه گیری های من 9 تا کلاک فاصله بیافته (در میکرو AVR وقتی یه مقدار در رجیستر PORT قرار گرفت 2 تا کلاک می خواست تا در داخل رجیستر PIN قرار بگیرد این رو از دیتاشیت هم می شد فهمید ، ولی این رو من از دیتاشیت LPC11XX نتوستم بفهمم )
اگر امکان دارد این تست رو انجام بدهید و در این جا اطلاع دهید که چند کلاک طول می کشد :
کد PHP:
LPC_IOCON -> PIO2_6 =(0<<10) | (0x3<<6) | (0<<5) | (0x1<<3) | (0x0);
//i++;
//i++ --->delay
LPC_GPIO2 ->DIR |=1<<6;
البته این نکته رو بگم که شبیه ساز Keil این مورد را در نظر نمی گیرد . باید با سخت افزار تست کنید
برای تعداد کلاک از سیمولاتور Keil می تونید کمک بگیرید
Debug-> Execution... ->Show Time