PDA

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



Aghaeifar
06-04-2010, 23:40
سلام

پورت ها در هنگام کاربری عمومی ولتاژ های شناوری دارن مثلا یکی 1.2 یکی 2.3 ولت و... هستن چرا اینطور ه؟

من حتینتونستم یه LED رو وشن کنم انگار پورت اصلا نمی تونه جریان بده برای روشن کردن من کد ساده زیر رو نوشتم و جواب نداد اصلا


#include <LPC214x.H>

int main (void) {


IO0DIR = 0x40;

IO0CLR = 0xFFFFFFFF;
while (1) {
if(IO0PIN&0x80==0x80)
IO0CLR=0x40;
else
IO0SET=0x40;

}
}

pll و mam هم غیر فعال بودن جفتشون

رفتم رو دیباگ کلا قاطی بود ! رجیستر های GPIO طبق برنامه که نوشتم تغییر نمی کردن !

farzadsw
07-04-2010, 00:16
اینو امتحان کنید :




/*

\\\|///
\\ - - //
( @ @ )
+---------------------oOOo-(_)-oOOo-------------------------+
| |
| LED blinking |
| |
| 29/4/1388 |
| by Farzadsw |
| |
| Farzadsw@gmail.com |
| |
| Oooo |
+----------------------oooO--( )--------------------------+
( ) ) /
\ ( (_/
\_)

*/

#include <LPC214x.H>

void wait (void) { /* wait function */
int d;

for (d = 0; d < 10000000; d++); /* only to delay for LED flashes */
}


int main (void) {


IODIR0 = 1<<21; /* P0.21 defined as Outputs */

while (1) { /* Loop forever */
/* Blink LED 0,1,2,3,4,5,6 */
IOSET0 = 1<<21; /* Turn on LED */
wait (); /* call wait function */
IOCLR0 = 1<<21; /* Turn off LED */
wait ();

}
}



یه چشمک زن ساده هست . اولین پروژه من با آرم بود و از صحت کد هم اطمینان داشته باشید !

Aghaeifar
07-04-2010, 01:00
فرزاد مشکل از کد نیست چون در پروتئوس در شبیه سازی به خوبی کار می کنه

کد تو رو هم تست کردم لا جواب

علت سخت افزاری داری من پروگرامرم j link هست . نمی دونم شما از چی استفاده می کنی

در گروه lpc2000 یا هو کلی سرچ زدم بعضی ها می گفتن باید پایه ها pull up باشن و ... این جور حرف ها
کلا برام سواله چرا هر پایه رو که با مالتی متر نگاه می کنم یکی 1.2 ولته اون یکی 2 ولته و ... این ها چرا صفر و 3.3 ولت نیست ؟ انگار شناور هستن ...

شما روی بردت چیزی رو pull up نکردی ؟

قسمت ها سخت افزاری من اینطوره : jtag پروگرامرمه ، پایه RTCK با یه مقاومت به زمین وصله تا وارد مد jtag شه . هم پروگرامر رو جدا کردم از برد هم جدا نکرده تست کردم نشد !
1 روزه کامل روش نشستم مغزم خط خطی شده دیگه

Division
07-04-2010, 03:04
پورت هاي وردي خروجي تو سري lpc2000 كلاً فرق مي كنه يني اينكه شما براي اينكه بتونين يه پايه رو صفر يا يك كنين بايد مراحل زير رو طي كنين .

1- مي دونيد كه هر كدوم از پايه ها اكثراً چند تا فانكشنن دارن كه شما بايد توسط يه رجيستري فانكشن مد نظرتون رو انتخاب كنين
2- شما بايد مشخص كنيد كه از طريق باس AHB مي خواين به بيرون وصل بشين يا باس APB
3- شما بايد پورت مورد نظر را توسط رجيستري خاصي ورودي يا خروجي كنيد
4- در ضمن صفر يا يك كردن يك پايه از طريق يك رجيستر(مثل بقيه ميكروكنترلرها)صورت نمي پذيرد و براي صفر و يك كردن 2 رجيستر مستقل از هم در نظر گرفته شده است
5- بايد دقت كنيد كه روپوش پورت مربوطه اكتيو نباشه (كه براي اين منظور رجيستري خاص ديگه اي هم وجود داره)
6- حواستون به كلاك تعيين شده براي درگاه هاي وردي خروجي باشه


تمام رجيستري ها در ديتا شيت قطعه وجود داره و منم اشاره بش نكردم چون صحبتم كلي بود.

Aghaeifar
07-04-2010, 11:04
خوب اینکه چند تا فانکشن داره هر پورت ، وقتی میکرو ریست میشه در حالت gpio است من هم که دست به pinsel ها نزدم پس این قسمت منتفی !
گزینه 3-4 هم که مورد استفاده شده .

این روپوش رو نفهمیدم چیه !!

شما کد من یا فرزاد رو ببین ! مشکلش به این 6 تا گزینه می خوره یا نه ؟ !

farzadsw
07-04-2010, 23:56
روپوش همون معادل mask هست

منم با j-link پروگرم میکنم . قبلا با jlink پروگرم کرده بودید؟


رفتم رو دیباگ کلا قاطی بود ! رجیستر های GPIO طبق برنامه که نوشتم تغییر نمی کردن !

تو خود keil شبیه سازی کردم درست بود (کد خودم رو)

اون که میگید بعضی پایه ها ولتاژ درست نمیدن برای اینکه که میکرو بعد ریست پایه ها رو ورودی تعریف میکنه . (تو سری اتمل با پول آپ و سری فیلیپس احتمالا بدون پول آپ) . برای همین پایه ها واتاژ خاصی ندارن. البته من الان چک کردم ، پایه ها یا حدود 3.2 بودن یا حدود 0.12 ولت . 1و2 ولت ندیدم .

وقتی پروگرم میکنید پیغام خطا نمیده؟

rtck رو که پول دان کردید ، به هدر jtag هم بردید؟ مثل شکلی که اتچ کردم؟

-----------------------------------------

سایت رو من به طور عادی نمیتونم باز کنم (احتمالا isp من ف.ی.ل.ت.ر کرده ! ) برای همین دیر به دیر میام

Division
08-04-2010, 00:25
منم كد آقاي farzadsw رو با keil شبيه سازي كردم درست جواب داد .

در ضمن به صورت پيش فرض وقتي ميكرو lpc بالا مي باد پول آپ فعاله ميشه . (رجيستري مربوطه هم PINMODE0:10 هستش )

Aghaeifar
08-04-2010, 10:58
اولین باره با j link کار می کنم .
اگر با خود keil در حالت شبیه سازی دیباگ کنم جواب صحیح می ده . در پروتئوس هم همین طور

ولی روی سخت افزار مشکل داره
بله اون پایه پول داون شده ( اگه نشه اصلا نمیشه پروگرم کرد )

در پروگرم کردن خطایی که من ندیدم بده ولی در دیباگ کردن از روی خست افزار از همون اول می مونه و جلو نمی ره یعنی اول تابع main می مونه ( run to main رو تیک زدم ) و باید دکمه stop code execution رو بزنم اون وقت خطا می ده که : Illegal breakpoint handle (0x0001)
در همین جا که گیر کره و وارد main نمی ه برای دیباگ اگه pin block رو دید بزنم می بینم خیلی از پایه ها روی فاکنشن ها ی دیگری هستن

روی سخت افزار حتما یک مشکلی هست که اینطوری شده . من پایه vbat هم به گفته قلیلی از علما زدن به 3.3 ولی بدون تغییر

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

Division
08-04-2010, 22:07
يه احتمال ضعيفي وجود داره اونم اينكه شايد ميكروتون سوخته يا نيم سوز شده !

شما يه كاري كن، واحد pll رو روشنش كن و بعد از مقدار دهي MSEL و NSEL سعي كن از Main Oscillator به عنوان منبع نوسان ساز استفاده كني .

farzadsw
08-04-2010, 23:25
پس شما اول ببین کیل میتونه میکرو رو شناسایی کنه (jlink به بورد و کامپیوتر وصل باشه و بورد هم روشن باشه) :

You can see links before reply


اگه چیزی نشون نداد ببینید اصلا خود jlink سالمه :

You can see links before reply

Aghaeifar
10-04-2010, 17:40
تست كردم هر دو رو شناخت به طور كامل

تا حالا شما ديباگ كردين ؟
l
من فكر ميكنم مشكلم از فايل startup هستش ، البته وقتي ديباگ رو از روي تراشه انجام مي دم نه از رو حالت شبيه سازي
من با keil نسخه اخرش كار مي كنم 4.1 شايد فايل هاي startup اين تغيير كردن مال شما هم همين نسخه هست ؟

همه چي به خوبي پيش مي ره تا اينكه مي رسه به خط زير در فايل start up :
خط 246


LDR PC, [PC, #-0x0FF0] ; Vector from VicVectAddr
LDR PC, FIQ_Addr

اينجا خيل از پايه ها عملكردشون عوض ميشه يكي ميشه ADC و بقيه هم همين طور و ديگه جلو نميره ديباگ و اون علامت ضربدر كه مثل توقف ممنوع خودمونه فعال ميشه

كسي مي دونه در اين دو خط چه اتفاقي مي افته كه اينطور ميشه ؟ چرا در حالت شبيه سازي نميشه ؟

من روي رگولاتورم خازن صافي براي فركانس بالا و پايين گذاشتم ،‌ ريست هم با 3.9 كيلو pull up كردم .
كم كم دارم مجبور ميشم برم كتاب هاي صادق هدايت رو بخونم ديگه !! پوچ شدم

farzadsw
10-04-2010, 22:41
من دیباگ کردم

ورژن کیل منم 4.1 هست

اون دو خط ربطی به تغییر وضعیت پایه ها نداره . استارت آپ منم این 2تا خط رو داره ولی مشکلی پیش نیومد.

شما وقتی دیباگ میکنید و run یا F5 رو میزنید ، تو بوردتون LED که (تو مثال من) به پایه p0.21 وصل شده چشمک نمیزنه ؟ من که امتحان کردم کار میکرد!

طبق چیزهایی که تا حالا گفتید ، یا اشکال از کامپایلره یا سخت افزاریه

Aghaeifar
11-04-2010, 00:22
خوب فکر کنم بحث رو ادامه ندم دیگه چون احتمال بالا مشکلی داره میکرو

در هنگام دیباگ کردن اصلا از فایل start up بیرون نمیره که برسه به فایل سورس من اونجا می مونه .
وقتی که شروع میشه مثل اینکه از همون اول کلید F5 زده شده ولی م ننزدم ها . و همه دکمه ها غیر فعال میشن و فقط اون علامت توقف ممنون فعال میشه . که روی اون هم کلیک کنید اون خطایی که صفحه قبل نوشتم میده .

اصلا که اینجور شد من این برد رو در گدهمایی دوم می ارم می دم به تو حلش کنی ( شوخی کردم یه دفعه پشیمون نشی نیایی ها ... )