PDA

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



msmut7020
27-02-2011, 16:33
با سلام خدمت همه اساتید
من توی یه چیز کوچیک گیر کردم
من میخام یه برنامه به زبان Cبرای میکروLPC2378بنویسم که در اون یه پایه از میکرو به عنوان ورودی تعریف بشه و یه پایه دیگه به عنوان خروجی.
سپس اگر پایه ورودی یک (یا صفر) شد، اونوقت خروجی یک بشه.
(یعنی همون چیزی که در AVR با یک دستورIF ساده اجرا میشه.)
من خودم با استفاده از رجیستر FIOxPIN یکمی تلاش کردم،اما نشد.
:hi:

amiray
27-02-2011, 18:31
#include <lpc23xx.h>
int main (void)
{
FIO2DIR=0;
FIO3DIR=1;
while(1)
{
if(FIO2PIN==1)
{
FIO3SET=1;
}
}
}



بازم اگه سوال بود در خدمتم:wink:

msmut7020
02-03-2011, 16:12
سلام
باتشكر از شما به خاطر پاسخي كه داديد
اما ظاهرا سوال منو كاملا نخونديد،اگر خط آخر سوال را مجددا بخونيد مي بينيد كه من نوشتم با استفاده از FIOxPINجواب نگرفتم.
من دقيقا همين برنامه اي كه شما فرستاديد را قبلانوشته بودم حتي كاملتر.
اما در عمل وقتي كه بر روي بردهاي آموزشي كوير الكترونيك امتحان ميكنم جواب نميگيرم.
در سالم بودن برد آموزشي كه هيچ شكي ندارم .پس قطعا ايراد از برنامه است .
ممنون ميشم اگه راهنمايي بيشتري بكنيد

1nafar
02-03-2011, 20:13
سلام
توی میکرو کنترلر های LPC یه رجیستر به نام PINSELx وجود داره که میشه با مقدار دهی اون نقش پایه رو مشخص کرد ( مثلا پایه ورودی / خروجی باشه ، با ورودی ADC یا ورودی وقفه یا .... )

Aghaeifar
02-03-2011, 22:42
در ضمن مشکل کد amiray (You can see links before reply) این هست که ظاهرا رجیستر SCS رو مقدار دهی نکردن ( توی 2148 که اینطوزیه)

msmut7020
19-03-2011, 11:06
با سلام.
دوستان،من تمام كارهايي كه شما گفتيد را انجام دادم.ولي باز هم جواب نگرفتم.
رجيستر pinselبراي اين كاري كه من ميخام انجام بدم كه تنظيم خاصي نميخاد.چون در حالت پيش فرض ،تمام پايه ها بصورت ورودي و خروجي هستند.و فقط بايد رجيستر fiodirرا تنظيم كرد.
رجيستر scsهم زماني بايد تنظيم بشه كه بخواهيم از پورت 0 يا يك استفاده كنيم كه من هم اونو تنظيم كردم.
من يه خواهشي از دوستان دارم.اگه ميشه يكي از دوستان يه برنامه اي كه از عملكردش در اين زمينه مطمئنه را قرار بده كه اگه اون جواب نداد ،يه فكر ديگه بكنيم.
البته در شبيه سازي پروتئوس كاملا جواب ميده(با ميكرو 2132)،اما در عمل جواب نميده.
:018:اصلا تاحالا كسي به اين مشكل برخورد كرده؟

t.o.e
19-03-2011, 16:11
سلام:
منم برنامه رو تست میکنم ...نتیجه رو میگم.

kavir
19-03-2011, 18:20
// Test LED & SW1 EKE2LPC2378 v1.0
// You can see links before reply You can see links before reply
//Convert To bin file fromelf --bin --output=GPIOLPC2378.bin GPIOLPC2378.axf
// If use BootloaderUsb Flash->ConfigurFlash>Target->Rom1 and change to 0x2000 to 0x80000 For lpc2378
#include <LPC23xx.h>

/* LED Definitions */

#define LED_MSK 0x000000FF /* P3.0..7 */
#define LED_RD 0x00000001 /* P3.0 */
#define LED_WR 0x00000002 /* P3.1 */
#define LED_CFG 0x00000004 /* P3.2 */
#define LED_SUSP 0x00000008 /* P3.3 */
void delay(unsigned long i);


void key_read()
{
if((FIO2PIN & 1<<11)==0)
{
FIO3SET = LED_WR; /* Turn On Write LED */
FIO3SET=LED_RD;
FIO3SET=LED_CFG;
FIO3SET=LED_SUSP;
//delay(2000000);
delay(1);// for debug
FIO3CLR = LED_WR; /* Turn On Write LED */
FIO3CLR=LED_RD;
FIO3CLR=LED_CFG;
FIO3CLR=LED_SUSP;
//delay(2000000);
delay(1);
}

}

int main()
{
PINSEL6=0x00; // Set For GPIO
SCS |= 0x00000001; //Fast Mode
FIO3MASK= 0x00000000;// If=0 All = Fast Mode
FIO3DIR= 0xFFFFFFFF; //If=1 out put Else if=0 = input

PINSEL10 = 0; // Disable ETM interface, enable LEDs
// P2[0:7] = GPIO Function(xxxx 0000 0000 0000 0000 0000 0000 0000)
PINSEL4 = 0x00FF;
// Enable Pull-Up P2[0:7] (0101 1111 1111 1111 1111 1111 1111 1111)
PINMODE4 = 0x0000;
// Set GPIO-2[0:7] = Output(xxxx xxxx xxxx xxxx xxxx xxxx 1111 1111)
FIO2DIR = 0x00000000;

while(1)
{

key_read();
}
}
void delay(unsigned long i)
{
unsigned long j;
for (j=0;j<i;j++);
}

kavir
19-03-2011, 18:27
نکات مهم در تعریف ورودی:


پول آپ فعال هستند به صورت پیش فرض ولی مجدد فعال شده
بردهای آموزشی ما اکتیو لو هستند
همیشه از دیباگ استفاده کنید اینم فیلم آموزشی همین برنامه که با دیباگ هست


You can see links before reply

farzad.sg
20-05-2011, 22:17
ممنون . يكي ميشه اين قسمت رو توضيح بده لطفا ؟


if((FIO2PIN & 1<<11)==0)

msmut7020
23-05-2011, 19:27
سلام.
اگه اشتباه نكنم يعني :
اگر بيت يازدهم از پورت2(كه در برنامه بصورت ورودي تعريف شده)،صفر شد،يه كاري انجام بده.
در نهايت منظور خواندن مقدار از كليد هست كه ميخواهيم ببينيم آيا كليد فشرده شده يا نه.