NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 5131 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 13 از 13

موضوع: مشکل به GPIO در lpc2146

  1. #1
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض مشکل به GPIO در lpc2146

    سلام

    پورت ها در هنگام کاربری عمومی ولتاژ های شناوری دارن مثلا یکی 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 طبق برنامه که نوشتم تغییر نمی کردن !

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  3. #2
    مدیر انجمن farzadsw آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    تهران
    نوشته ها
    485
    تشکر
    105
    تشکر شده 745 بار در 309 پست

    پیش فرض

    اینو امتحان کنید :

    [PHP]

    /*

    \\\|///
    \\ - - //
    ( @ @ )
    +---------------------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 ();

    }
    }

    [/PHP]

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

  4. تشکرها از این نوشته :


  5. #3
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    فرزاد مشکل از کد نیست چون در پروتئوس در شبیه سازی به خوبی کار می کنه

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

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

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

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

    قسمت ها سخت افزاری من اینطوره : jtag پروگرامرمه ، پایه RTCK با یه مقاومت به زمین وصله تا وارد مد jtag شه . هم پروگرامر رو جدا کردم از برد هم جدا نکرده تست کردم نشد !
    1 روزه کامل روش نشستم مغزم خط خطی شده دیگه
    ویرایش توسط Aghaeifar : 07-04-2010 در ساعت 01:29

  6. #4
    مدیر انجمن Division آواتار ها
    تاریخ عضویت
    Jan 2010
    نام
    افشین علیزاده
    نوشته ها
    628
    تشکر
    206
    تشکر شده 1,013 بار در 407 پست

    پیش فرض

    پورت هاي وردي خروجي تو سري lpc2000 كلاً فرق مي كنه يني اينكه شما براي اينكه بتونين يه پايه رو صفر يا يك كنين بايد مراحل زير رو طي كنين .

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


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

  7. کاربران : 3 تشکر کرده اند از شما Division برای ارسال این پست سودمند:


  8. #5
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

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

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

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

  9. #6
    مدیر انجمن farzadsw آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    تهران
    نوشته ها
    485
    تشکر
    105
    تشکر شده 745 بار در 309 پست

    پیش فرض

    روپوش همون معادل mask هست

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

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

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

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

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

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

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

نام: 4-7-2010 10-52-33 PM.jpg
مشاهده: 30
حجم: 82.4 کیلو بایت  

  10. کاربران : 2 تشکر کرده اند از شما farzadsw برای ارسال این پست سودمند:


  11. #7
    مدیر انجمن Division آواتار ها
    تاریخ عضویت
    Jan 2010
    نام
    افشین علیزاده
    نوشته ها
    628
    تشکر
    206
    تشکر شده 1,013 بار در 407 پست

    پیش فرض

    منم كد آقاي farzadsw رو با keil شبيه سازي كردم درست جواب داد .

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

  12. تشکرها از این نوشته :


  13. #8
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    اولین باره با j link کار می کنم .
    اگر با خود keil در حالت شبیه سازی دیباگ کنم جواب صحیح می ده . در پروتئوس هم همین طور

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

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

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

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

  14. #9
    مدیر انجمن Division آواتار ها
    تاریخ عضویت
    Jan 2010
    نام
    افشین علیزاده
    نوشته ها
    628
    تشکر
    206
    تشکر شده 1,013 بار در 407 پست

    پیش فرض

    يه احتمال ضعيفي وجود داره اونم اينكه شايد ميكروتون سوخته يا نيم سوز شده !

    شما يه كاري كن، واحد pll رو روشنش كن و بعد از مقدار دهي MSEL و NSEL سعي كن از Main Oscillator به عنوان منبع نوسان ساز استفاده كني .
    ویرایش توسط Division : 08-04-2010 در ساعت 22:10
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

  15. تشکرها از این نوشته :


  16. #10
    مدیر انجمن farzadsw آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    تهران
    نوشته ها
    485
    تشکر
    105
    تشکر شده 745 بار در 309 پست

    پیش فرض

    پس شما اول ببین کیل میتونه میکرو رو شناسایی کنه (jlink به بورد و کامپیوتر وصل باشه و بورد هم روشن باشه) :




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


  17. تشکرها از این نوشته :


  18. #11
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    تست كردم هر دو رو شناخت به طور كامل

    تا حالا شما ديباگ كردين ؟
    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 كردم .
    كم كم دارم مجبور ميشم برم كتاب هاي صادق هدايت رو بخونم ديگه !! پوچ شدم
    ویرایش توسط Aghaeifar : 10-04-2010 در ساعت 17:43
    ما در انتظار رویت خورشیدیم ...

    اللهم عجل لولیک الفرج

  19. #12
    مدیر انجمن farzadsw آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    تهران
    نوشته ها
    485
    تشکر
    105
    تشکر شده 745 بار در 309 پست

    پیش فرض

    من دیباگ کردم

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

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

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

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

  20. #13
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    خوب فکر کنم بحث رو ادامه ندم دیگه چون احتمال بالا مشکلی داره میکرو

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

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

    اللهم عجل لولیک الفرج

موضوعات مشابه

  1. مشکل با پول اپ gpio
    توسط arvin2009 در انجمن LPC series (NXP)
    پاسخ: 9
    آخرين نوشته: 18-11-2013, 13:02
  2. مشکل با gpio
    توسط amintanharpd در انجمن LPC series (NXP)
    پاسخ: 5
    آخرين نوشته: 10-10-2013, 20:58
  3. وقفه gpio در lpc1313
    توسط mehdi-samani در انجمن LPC series (NXP)
    پاسخ: 9
    آخرين نوشته: 05-07-2013, 20:56
  4. Gpio-nxp1768
    توسط ramin_kent در انجمن LPC series (NXP)
    پاسخ: 11
    آخرين نوشته: 07-03-2013, 00:43
  5. gpio در lpc1768
    توسط avr_rva در انجمن LPC series (NXP)
    پاسخ: 2
    آخرين نوشته: 24-02-2013, 16:44

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •