PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کار با پورت به عنوان ورودی



salehjg
01-08-2010, 15:38
سلام
اول از همه بگم که در انجمن جستجو کردم ولی چیزی عایدم نشد ، مجله ی PMM هم خواندم ولی با خواندن شماره ی سوم مجله کمی هم گیج تر شدمii998)

سوالم در مورد پورت ها و دستوراتش هست(Keil)::roll:

1- کار این دستور چیه؟
AT91F_PIO_Enable

2-اگر برفرض پایه اول پورت A ورودی تعریف شده باشند ، میشه با دستور زیر 1 یا 0 بودنشون را چک کرد؟
(بدون استفاده از GETinput)

AT91C_PIO_PA1==1
AT91C_PIO_PA1==0

3- اگر بخواهیم با کد باینری که دستمون هست (مثلا 001 ، یعنی منظورم فقط یک پین هست) چطوری میشه وضعیت پین رو چک کرد؟(0 یا 1) _(منظورم با استفاده از دستور getInput هست)


ممنون:D

1nafar
01-08-2010, 16:00
سلام
ویرایش دوم مجلات pmm به زودی منتشر میشه و در ویرایش جدید همه چیز گفته شده ( از سیر تاپیاز ) .

1- کار این دستور چیه؟
AT91F_PIO_Enable
این دستور واحد pio رو فعال میکنه تا شما بتونید با دستورات بعدی اون رو در حالت ورودی یا خروجی پیکربندی کنید .

اگر برفرض پایه اول پورت A ورودی تعریف شده باشند ، میشه با دستور زیر 1 یا 0 بودنشون را چک کرد؟
در هدر lib_AT91SAM7X256.h این امکان وجود نداره ، در این هدر مقدار روی پورت خونده میشه و سپس با شماره
ی پایه ای که قصد خوندش رو دارید and میشه . در این حالت اگه پایه ی مورد نظر از پورت یک باشه ، حاصل عملیات and منطقی یک میشه و ....

اگر بخواهیم با کد باینری که دستمون هست (مثلا 001 ، یعنی منظورم فقط یک پین هست) چطوری میشه وضعیت پین رو چک کرد؟(0 یا 1) _(منظورم با استفاده از دستور getInput هست)
مثلا :
if ((AT91F_PIO_GetInput(AT91C_BASE_PIOA) & AT91C_PIO_PA27) == 0)
LEDSpeed =LEDSpeed-50000;
البته هدر lib_AT91SAM7X256.h دارای دستورات خیلی طولانی هست ، شما میتونید از هدر pio.h که در آدرس زیر آورده شده استفاده کنید :
You can see links before reply

meh1011
01-08-2010, 16:19
at91f, at91c,...
چه فرقی دارند و به جز این دو پیش دستور چه جیزای دیگه ای هم وجود ؟

meh1011
01-08-2010, 16:28
قابل توجه salehjg شما اگه دیتاشیت pio رو بخونید فکر کنم خیلی بدردتون بخوره شماتیکو میتونید توی سایت atmel پیدا کنید من خوندم خیلی خوب بود اگه برنامه نویسیت خوب باشه خیلی میتونی پیش بری

1nafar
11-08-2010, 11:30
at91f, at91c,...
چه فرقی دارند و به جز این دو پیش دستور چه جیزای دیگه ای هم وجود ؟
سلام
این پیشوند ها بستگی به نوع هدر استفاده شده داره و در نهایت دستور یک کار رو انجام میده .
مثلا AT91C_PIO_PA0 اسم پورت a.0 هست ، توی فایل at91sam7x256.h نوشته

#define AT91C_PIO_PA0 ((unsigned int) 1 << 0)
یعنی AT91C_PIO_PA0 برابر است با (unsigned int) 1 << 0 یا به عبارتی 0x1 در مبنای هگز .
at91f در هدر lib_at91sam7x256.h استفاده شده ...
ویرایش دوم pmm2 و 3 هم مطالب مفیدی در این باره داره