PDA

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



ma-bah
23-08-2011, 13:24
سلام دوستان . این برنامه رو برای کیپد نوشتم اما جواب نمی ده .

اضافه کنم که از پین های P0.0 تا P0.7 برای کیپد استفاده کردم و هیچ گونه مقاومتی برای سخت افزار کیپد استفاده نکردم و از مقاومت های pullup خود میکرو استفاده کردم .

#include "LPC23xx.h"
#include "delay.h"

const unsigned char scan_key[16]= {
/* 1 2 3 4 */
0xEE , 0xDE , 0xBE , 0x7e ,
/* 5 6 7 8 */
0xed , 0xdd , 0xbd , 0x7d ,
/* 9 10 11 12 */
0xeb , 0xdb , 0xbb , 0x7b ,
/* 13 14 15 16 */
0xE7 , 0xD7 , 0xB7 , 0x77
};
int main(void)
{
unsigned char key;
unsigned char i;

SCS |=1;
PINSEL0=0x00000000;
FIO2DIR0 = 0xFF;
FIO2SET0 = 0xFF;

delay_ms(1000);


while(1)
{
FIO0DIR0 = 0x0F;
//PINMODE0=0x000000AA;
FIO0SET0 = 0x0F;
FIO0CLR0 = 0x0F;
delay_us(5);
key = FIO0PIN0 & 0xF0;

FIO0DIR0 = 0xF0;
//PINMODE0=0x0000AA00;
FIO0SET0 = 0xF0;
FIO0CLR0 = 0xF0;
delay_us(5);
key = (FIO0PIN0 & 0x0F) | key;

if((key & 0xFF)!= 0xFF)
{
for(i=0;i<16;i++)
{
if (scan_key[i]==key)
{
break;
}
}

if (i==16)
i=0;
else
i++; //to make range 1-16

delay_ms(100);
}


else
i=64;

FIO2CLR0 = 0xFF;
FIO2SET0 = i;
delay_ms(1000);

} // end while

}

من کد های کلید های کیپد رو از 1 گرفتم تا 16 . گفتم اگر دکمه ای زده نشه مقدار 128 رو روی پورت 2 بریز . اما در عجبم که نه مقداری بین 1 تا 16 میریزه (که نشانه زده شدن کلید هست ) و نه مقدار 128 رو (که نشانه زده نشدن کلید) . این delay_ms(1000); رو هم برای دیدن این زده نشدن کلید گذاشتم که برای تست هست و گذاشتم که یه وقت نگید که برنامه داره تند پایه ی P2.7‌ رو صفر و یک می کنه و led‌ دیده نمیشه و تو برنامه اصلی جایی نداره]

shayanmelody
23-08-2011, 14:26
سلام.
آقا منم از شما یکم عقب ترم ! برنامه چشمک زن نوشتم ، تو شبیه سازی همه رقمه جواب میده ، اما رو برد اصلا جواب نمیده.من ماژول آموزشی رو دارم.فایل پروژه هم ضمیمه هست.هر طوری باهاش ور رفتم نشد.
یه کمکی به ما هم بکنید.
تشکر.

sadmonew
23-08-2011, 16:13
با سلام
منم يه برد LPC2103 دارم. اما نتونستم هيچ كدوم از مثال هاي Keil رو با اون اجرا كنم.
دقيق تر بگم. ميكرو شناسايي ميشه. حافظه فلش پاك ميشه. ميكرو پروگرم ميشه اما نميدونم چرا اجرا نميشه. ديگه كلافم كرده:unh:. شايد تنظيمات مربوط به PLL درست نيست.

________________________
برنامه نويسي، الكترونيك(PE) (You can see links before reply)
________________________

ma-bah
24-08-2011, 01:42
سلام.
آقا منم از شما یکم عقب ترم ! برنامه چشمک زن نوشتم ، تو شبیه سازی همه رقمه جواب میده ، اما رو برد اصلا جواب نمیده.من ماژول آموزشی رو دارم.فایل پروژه هم ضمیمه هست.هر طوری باهاش ور رفتم نشد.
یه کمکی به ما هم بکنید.
تشکر.

من این برنامه رو برای پورت 2 پین 0 نوشتم ببین جواب می ده یا نه ؟

You can see links before reply

shayanmelody
24-08-2011, 13:24
من این برنامه رو برای پورت 2 پین 0 نوشتم ببین جواب می ده یا نه ؟

You can see links before reply


ممنون از بابت برنامه ای که گذاشتی.
من اومدم جای پورت 2 ، 3 رو قرار دادم و هیچ تغییر دیگه ای تو برتامه ات ندادم.چون ال ای دی های رو برد به پورت 3 وصله.ولی متاسفانه بازم کار نکرد.تنها پروژه ای که رو بردم کار کرد پروژه ای بود که آقای زارعی تو قسمت کلیه آموزش ها و نکات این برد گذاشتند در مورد وقفه که با کلیک sw1 4 تا ال ای دی اول یکبار خاموش رو شن میشه.
برنامه بوت لودر رو هم خودم چندین بار رو برد ریختم و پاک کردم.پس از بابت سالم بودن برد مطمئن هستم.

ma-bah
24-08-2011, 18:58
ممنون از بابت برنامه ای که گذاشتی.
من اومدم جای پورت 2 ، 3 رو قرار دادم و هیچ تغییر دیگه ای تو برتامه ات ندادم.چون ال ای دی های رو برد به پورت 3 وصله.ولی متاسفانه بازم کار نکرد.تنها پروژه ای که رو بردم کار کرد پروژه ای بود که آقای زارعی تو قسمت کلیه آموزش ها و نکات این برد گذاشتند در مورد وقفه که با کلیک sw1 4 تا ال ای دی اول یکبار خاموش رو شن میشه.
برنامه بوت لودر رو هم خودم چندین بار رو برد ریختم و پاک کردم.پس از بابت سالم بودن برد مطمئن هستم.

معلومه جواب نمی ده . چون پورتهای 3 و 4 یه فرقی با دیگر پورت ها دارند اونم اینه که برای اونها حتما بازم می گم حتما باید PINSEL ها رو مقدار 0 داد . که برای پورت 3 حتما باید
PINSEL6=0x00000000;
رو قرار بدی .
پس برنامه رو دوباره این طوری بنویس حتما دیگه درسته .

#include "LPC23xx.h"
#include "delay.h"

int main(void)
{
PINSEL6 = 0x00000000;
FIO3DIR0 = 0x01;
FIO3SET0 = 0x01;
delay_ms(1000);

while(1)
{
delay_ms(500);
FIO3CLR0 = 0x01;
delay_ms(500);
FIO3SET0 = 0x01;

}

}


راسیتش برنامه ای که خودتون نوشته بودید هم درست بود اما من گفتم پورت رو تغییر بدم و یه تست بزنید شما که فکر کنم بد نباشه همون برنامه ای که برای پورت 2 پین 0 بود رو هم چک می کردید حالا با یه سیم و مقاومت هم اون برنامه رو تست کنید .

shayanmelody
25-08-2011, 00:02
آقا ممنون ، کار ما ردیف شد.حالا تا اینجاش که مارو آوردی ، این پورت 3 قضیش چیه ؟

ma-bah
25-08-2011, 01:33
آقا ممنون ، کار ما ردیف شد.حالا تا اینجاش که مارو آوردی ، این پورت 3 قضیش چیه ؟

راسیتش نمی دونم دلیلش چیه و چه حکمتی داره اما من به صورت عملی و تجربی به این نتیجه رسیدم که :

اگر بخواهیم از پورت های 3 و 4 برای GPIO‌ استفاده کنیم باید :

برای پورت 3 برای پین های 0 تا 7 حتما باید PINSEL6=0x00; در برنامه آورده شود و برای پین های 23 تا 26 این کار لازم نیست .
(مانند پورت های 0 و 1 و 2 که لازم نبود PINSEL رو در برنامه بیاریم .)

برای پورت 4 برای پین های 0 تا 15 حتما باید PINSEL8=0x00; در برنامه آورده شود و برای پینهای 24 و 25 و 30 و 31 حتما باید PINSEL9=0x00; در برنامه آورده شود و برای دو پین 28 و 29 این کار لازم نیست .

ma-bah
25-08-2011, 01:37
کسی نبود به برنامه ی ما که تو پست اول هست یه نگاهی بندازه ؟

sadmonew
25-08-2011, 02:16
با سلام
لطفا به من بگيد كجاي برنامه اي به اين سادگي مشكل داره كه تو LPC2103 اجرا نميشه.

#include <LPC2103.h>
int main(void)
{
PINSEL0=0x00000000;
FIODIR=0xFFFFFFFF;
PINSEL1=0x00000000;

FIOSET = 0xFFFFFFFF;

{


________________________
برنامه نويسي، الكترونيك(PE) (You can see links before reply)
________________________

shayanmelody
25-08-2011, 23:38
با سلام
لطفا به من بگيد كجاي برنامه اي به اين سادگي مشكل داره كه تو LPC2103 اجرا نميشه.

#include <LPC2103.h>
int main(void)
{
PINSEL0=0x00000000;
FIODIR=0xFFFFFFFF;
PINSEL1=0x00000000;


FIOSET = 0xFFFFFFFF;


{



________________________



برنامه نويسي، الكترونيك(PE) (You can see links before reply)


________________________





سلام.
مهندس جان ! شما دقیقا همین کد رو تو کامپایلر نوشتید ؟ii998) از کلمه اول تا آخرش رو نگاه کنید ببینم خودتون متوجه اشکال میشید ؟
شایدم موقع تایپ این اشکال به وجود اومده باشه اما در هر صورت امکانش هست.
شما یه بررسی مو به مو کنید به من بگید.

sadmonew
25-08-2011, 23:51
با سلام
بالاخره يه نفر پيدا شد يه جواب به من بده.
اينو بگم اين برنامه كامپايل ميشه و خروجي hex رو هم داره(كامپايلر Keil).
نميدونم شما بگيد مشكل كجاست؟ البته من با ميكروهاي ARM شركت اتمل مشكل ندارم.
ممنونم.


________________________
برنامه نويسي، الكترونيك(PE) (You can see links before reply)
________________________

shayanmelody
26-08-2011, 00:03
واسا من برنامه رو تست کنم.

shayanmelody
26-08-2011, 00:11
اشتباه فاحش شما این بود که اول برنامه نوشتید :


#include < lpc2103>


شما اومدید اسم میکرو رو نوشتید ، در صورتی که باید مینوشتید :


#include <lpc210x.h>


دوما ، با این میکرو نمیتونید از طریق رجیستر Fast با پورت ها در ارتباط باشید ، چون اصلا رجیستر Fast ندارند !
سوما ......
اینا رو تست کنید اگر جواب نداد سومی رو میگم ، چون بعید میدونم از این باشه.
شما مدار رو تو پروتئوس بستید یا برد دارید ؟

sadmonew
26-08-2011, 00:13
با سلام
پس شما هم صبر كنيد تا من هم تست كنم ببينم مشكل نداره. اگه مشكل داشته باشه بازم سوال بپرسم.
بله برد دارم.
ممنونم


________________________
برنامه نويسي، الكترونيك(PE) (You can see links before reply)
________________________

sadmonew
26-08-2011, 00:26
ممنونم كه داريد پاسخ ميديد. مشكل هنوز حل نشده . اون LED كه بايد روشن شه روشن نميشه.
لطفا مورد سوم رو هم بگيد. راستي PINSEL رو درست نوشتم.
شما تو پروتئوس تست كرديد؟

________________________
برنامه نويسي، الكترونيك(PE) (You can see links before reply)
________________________

sadmonew
26-08-2011, 00:50
فايل LPC210X.H براي ميكروهاي LPC2104 , LPC2105 , LPC 2106 هستش.
و فايل LPC2103.H براي ميكروهاي LPC2101 , LPC2102 , LPC2103 نوشته شده.
خوب من بايد از هدر فايل LPC2103.h استفاده كنم.
كجا رفتين؟ اي كاش بقيه جواب رو هم بگيد.
بازم ازتون ممنونم.


________________________
برنامه نويسي، الكترونيك(PE) (You can see links before reply)
________________________

shayanmelody
26-08-2011, 00:53
کی گفته ؟

shayanmelody
26-08-2011, 00:54
ممنونم كه داريد پاسخ ميديد. مشكل هنوز حل نشده . اون led كه بايد روشن شه روشن نميشه.
لطفا مورد سوم رو هم بگيد. راستي pinsel رو درست نوشتم.
شما تو پروتئوس تست كرديد؟

________________________
برنامه نويسي، الكترونيك(pe) (You can see links before reply)
________________________


شما تست کردی تو پروتئوس ؟
من الآن میتونم تست کنم.

sadmonew
26-08-2011, 00:59
آقا شايان دستت دردنكنه بابت وقتو پاسخ. با همون فايل هدر LPC2103.h درست شد.:018::018:

________________________
برنامه نويسي، الكترونيك(PE) (You can see links before reply)
________________________

shayanmelody
26-08-2011, 01:01
خوب من بايد از هدر فايل lpc2103.h استفاده كنم.


________________________
برنامه نويسي، الكترونيك(pe) (You can see links before reply)
________________________


این هدری که شما میگید کجاست ؟
آدرسش رو بدید

sadmonew
26-08-2011, 01:03
کی گفته ؟

تو مسير E:\Keil412_ITD\ARM\INC\Philips چند تا فايل هدر هست. يكي از اونها LPC2103.h كه داخلش نوشته شده. و يكي ديگه از اونها LPC210x.h هستش كه تو اين هم نوشته شده براي چه ميكرويي بايد استفاده شه.

بازم دستت در نكنه. با مرام:018:
________________________
برنامه نويسي، الكترونيك(PE) (You can see links before reply)
________________________

shayanmelody
26-08-2011, 01:23
این پروژه اصلی برنامه + شبیه سازی در پروتئوس.
تست کن ببین چطور میشه.

shayanmelody
26-08-2011, 01:53
تو مسير E:\Keil412_ITD\ARM\INC\Philips چند تا فايل هدر هست. يكي از اونها LPC2103.h كه داخلش نوشته شده. و يكي ديگه از اونها LPC210x.h هستش كه تو اين هم نوشته شده براي چه ميكرويي بايد استفاده شه.

بازم دستت در نكنه. با مرام:018:
________________________
برنامه نويسي، الكترونيك(PE) (You can see links before reply)
________________________

جالبه ! من اینو قبلا ندیده بودم !
الآن تست کردم دیدم تو پروتئوس با هر دوتا هدر جواب داد !
من خودم قبلا با پروتئوش کار میکردم از همون هدر lpc210x استفاده میکردم.شما که برد داری باید تست کنی ببینی که تو عمل با کدوم هدر بهتر کار میکنه که قاعدتا باید با همون 2103 درست کار کنه.با اون هدر هم من فکر میکنم چون معماری حافظه های این میکرو ها خیلی شبیه هم هستند ، آدرس بعضی از رجیستر هاشون تو حافظه باید یکی باشه ، مثل همین ioset .

shayanmelody
26-08-2011, 01:55
آقا شايان دستت دردنكنه بابت وقتو پاسخ. با همون فايل هدر lpc2103.h درست شد.:018::018:

________________________
برنامه نويسي، الكترونيك(pe) (You can see links before reply)
________________________

اشکال از کجا بود آخرش ؟
در ضمن کاری نکردم ، وظیفه بود.