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

موضوع: برنامه نویسی در keil

  1. #1
    عضو جدید
    تاریخ عضویت
    Jan 2012
    نوشته ها
    11
    تشکر
    9
    تشکر شده 4 بار در 4 پست

    پیش فرض برنامه نویسی در keil

    سلام به همه دوستان
    من تازه کار با ARM را شروع کردم ولی قبلا با AVR کار می کردم.
    حالا تفاوت های موجود کمی آزار دهنده شده از جمله آنکه در AVR ریجیسترها را می شد به راحتی به صورت bit به bit و به طور مستقیم تغییر داد مثلا
    PORTA.0=1 و یا PORTA.0~=PORTA.0
    ولی در ARM لااقل در keil این امکان به طور مستقیم وجود ندارد.
    حال سئوال من این است که من می خواهم یک بیت را در یک رجیستر NOT کنم این کار را باید چگونه انجام دهم ؟

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

  3. #2
    کاربر دائمی
    تاریخ عضویت
    Jun 2009
    نام
    روح الله خرم بخت
    نوشته ها
    403
    تشکر
    456
    تشکر شده 591 بار در 214 پست

    پیش فرض

    register=register&~(1<<bitnumber) //thi bit number is the bit which you want it to become zero

  4. کاربران : 4 تشکر کرده اند از شما roohlla برای ارسال این پست سودمند:


  5. #3
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    نقل قول نوشته اصلی توسط ali ali نمایش پست ها
    حالا تفاوت های موجود کمی آزار دهنده شده از جمله آنکه در AVR ریجیسترها را می شد به راحتی به صورت bit به bit و به طور مستقیم تغییر داد مثلا
    PORTA.0=1 و یا PORTA.0~=PORTA.0
    ولی در ARM لااقل در keil این امکان به طور مستقیم وجود ندارد.
    حال سئوال من این است که من می خواهم یک بیت را در یک رجیستر NOT کنم این کار را باید چگونه انجام دهم ؟
    سلام
    خوب در ARM هم میشه یه بیت از یک رجیستر را جدا ست و ریست کرد
    مثال برای ریست کردن :
    [PHP]LPC_PINCON->PINSEL1 &= ~((3<<2) | (3<<4)); /* P0.17, P0.18 cleared */[/PHP]

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


  7. #4
    کاربر فعال Dr.ROOSTA آواتار ها
    تاریخ عضویت
    Jun 2012
    نام
    اسماعیل
    نوشته ها
    136
    تشکر
    336
    تشکر شده 234 بار در 79 پست

    پیش فرض

    نقل قول نوشته اصلی توسط ali ali نمایش پست ها
    سلام به همه دوستان
    من تازه کار با ARM را شروع کردم ولی قبلا با AVR کار می کردم.
    حالا تفاوت های موجود کمی آزار دهنده شده از جمله آنکه در AVR ریجیسترها را می شد به راحتی به صورت bit به bit و به طور مستقیم تغییر داد مثلا
    PORTA.0=1 و یا PORTA.0~=PORTA.0
    ولی در ARM لااقل در keil این امکان به طور مستقیم وجود ندارد.
    حال سئوال من این است که من می خواهم یک بیت را در یک رجیستر NOT کنم این کار را باید چگونه انجام دهم ؟
    سلام دوست من . از این سوالت فهمیدم خیلی تازه کاری . ناراحت نشو ما همه از اول که اینکاره نبودیم ؛ ولی یه توصیه دوستانه که در وقتت صرفه جویی بشه : حتما فیلم های LPC17xx رو تهیه کن . قصدم تبلیغات یا ..... نیست ، فقط دوستانه یه پیشنهاد دادم که از قافله عقب نمونی ؛ چون ARM خیلی خیلی گسترده است . یکم که جلو بری و با کاربردهای منحصربه فردش که آشنا بشی منظورمو متوجه میشی .
    پروردگارا مرا پاک بپذیر ......

  8. کاربران : 5 تشکر کرده اند از شما Dr.ROOSTA برای ارسال این پست سودمند:


  9. #5
    عضو جدید
    تاریخ عضویت
    Jan 2012
    نوشته ها
    11
    تشکر
    9
    تشکر شده 4 بار در 4 پست

    پیش فرض

    با سلام:
    دوستان من گفتم که کار با میکرو ARM را تازه شروع کردم در اینکه در ARM تازه کارم شکی نیست قصد من هم این نبود که بگم AVR بهتر از ARM است که اگر اینطور بود دیگه لزومی نداشت من به دنبال ARM برم اما اینکه در برنامه نویسی تازه کارم فکر کنم جای بحث داره با این وجود از همه متشکرم.
    در مورد راهنمایی آقای خرم بخت من هم تقریبا از همین روش در برنامه ام استفاده کردم و از ایشان متشکرم.
    اما در مورد راهنمایی آقای زرکوب آنرا استفاده کردم ولی در debugger پایه های مورد نظر یعنی P0.17, P0.1 تغییر وضعیت ندادند
    علاوه بر آن من یک برنامه ساده به صورت زیر نوشتم
    LPC_PINCON->PINSEL1=1;
    delay(100000);
    LPC_PINCON->PINSEL1=0;
    delay(100000);
    در debugger پایه P0.16 تغییر وضعیت می داد با تغییر PINSEL1 به PINSEL2 پایه P1.0 تغییر وضعیت می داد ولی با PINSEL3 هیچ پایه ای تغییر نمی کرد!!!
    میشه بیشتر در مورد این دستور توضیح بدهید ؟

  10. #6
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    شما چرا با
    PINSEL می خواهید وضعیت پایه را تغییر دهید!!؟ این که مال کار دیگه هست ..
    با با رجیستر pin در رجیسترهای GPIO

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


  12. #7
    عضو جدید
    تاریخ عضویت
    Jan 2012
    نوشته ها
    11
    تشکر
    9
    تشکر شده 4 بار در 4 پست

    پیش فرض

    با pin؟؟؟!!!!
    خیلی جالب بود برای آنکه در avr ریجیستر pin فقط برای خواندن وضعیت پایه استفاده می شد و در آن مقداری نوشته نمی شد و این کار به خاطر جلو گیری از تغییر ناخواسته و اشتباهی خروجی در هنگام برنامه نویسی بود و من فکر می کردم در arm نیز همین طور باشد. با این وجود امتحان کردم و همان طور بود که گفتید و تعجب کردم چون یک ریجیستر هم برای setکردن هم برای clr کردن و هم برای خواندن استفاده می شود حالا برای من دو سئوال مطرح شده و آن این است که اولا این کار باعث نمی شود که به طور نا خواسته و اشتباهی در حین برنامه نویسی مقدارportها تغییر کند؟ ثانیا وقتی به این راحتی در ریجیستر pin می شود مقدار وارد کرد و هم پاک کرد پس فلسفه وجود ریجیسترهای set و clr چیست؟!(یعنی فقط یک راه موازی با ریجیستر pinاست؟)
    به خاطر این راهنمایی از شما متشکرم در صورت امکان در مورد lpc_pincon و pinsel و کارایی آنها اگر می شود توضیح دهید ممنون می شوم
    ویرایش توسط ali ali : 19-03-2014 در ساعت 23:02

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

    پیش فرض

    نقل قول نوشته اصلی توسط ali ali نمایش پست ها
    با pin؟؟؟!!!!
    ثانیا وقتی به این راحتی در ریجیستر pin می شود مقدار وارد کرد و هم پاک کرد پس فلسفه وجود ریجیسترهای set و clr چیست؟!(یعنی فقط یک راه موازی با ریجیستر pinاست؟)
    سلام
    یک علت ظریف اینجا وجود داره. وقتی با set و clr پورتها را یک و صفر می کنید زمان settling time برابر نیست. اگر پشت سر هم پورت را یک و صفر کنی موج مربعی با duty cycle پنجاه درصد نمی گیری. برای حل این مسئله می شه از رجیستر pin برای این منظور استفاده کرد.
    ما در انتظار رویت خورشیدیم ...

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

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


  15. #9
    کاربر دائمی
    تاریخ عضویت
    Jun 2009
    نام
    روح الله خرم بخت
    نوشته ها
    403
    تشکر
    456
    تشکر شده 591 بار در 214 پست

    پیش فرض

    نقل قول نوشته اصلی توسط ali ali نمایش پست ها
    با pin؟؟؟!!!!
    خیلی جالب بود برای آنکه در avr ریجیستر pin فقط برای خواندن وضعیت پایه استفاده می شد و در آن مقداری نوشته نمی شد و این کار به خاطر جلو گیری از تغییر ناخواسته و اشتباهی خروجی در هنگام برنامه نویسی بود و من فکر می کردم در arm نیز همین طور باشد. با این وجود امتحان کردم و همان طور بود که گفتید و تعجب کردم چون یک ریجیستر هم برای setکردن هم برای clr کردن و هم برای خواندن استفاده می شود حالا برای من دو سئوال مطرح شده و آن این است که اولا این کار باعث نمی شود که به طور نا خواسته و اشتباهی در حین برنامه نویسی مقدارportها تغییر کند؟ ثانیا وقتی به این راحتی در ریجیستر pin می شود مقدار وارد کرد و هم پاک کرد پس فلسفه وجود ریجیسترهای set و clr چیست؟!(یعنی فقط یک راه موازی با ریجیستر pinاست؟)
    به خاطر این راهنمایی از شما متشکرم در صورت امکان در مورد lpc_pincon و pinsel و کارایی آنها اگر می شود توضیح دهید ممنون می شوم
    خوب رجیستر های LPC_GPIOx->FIOSET ,FIOCLR برای این کار(ست و ریست مستقل ) هستند دیگه.

  16. #10
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

    نقل قول نوشته اصلی توسط ali ali نمایش پست ها
    در صورت امکان در مورد lpc_pincon و pinsel و کارایی آنها اگر می شود توضیح دهید ممنون می شوم
    سلام
    فکر کنم در فیلم آموزشی گفته شده ...

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

  1. [سوال] سوال برنامه نویسی در keil
    توسط rezapop در انجمن AT91 series (ATMEL)
    پاسخ: 1
    آخرين نوشته: 30-03-2014, 23:50
  2. سوال در مورد برنامه نویسی در keil
    توسط medadnoki در انجمن 8051
    پاسخ: 5
    آخرين نوشته: 03-09-2012, 11:55
  3. برنامه نویسی در keil
    توسط aliimani در انجمن AT91 series (ATMEL)
    پاسخ: 26
    آخرين نوشته: 17-01-2012, 22:29
  4. مشکل برنامه نویسی keil برای mmc
    توسط hamed20200 در انجمن LPC series (NXP)
    پاسخ: 9
    آخرين نوشته: 23-08-2011, 17:01
  5. مشکل برنامه نویسی با keil
    توسط t.o.e در انجمن LPC series (NXP)
    پاسخ: 8
    آخرين نوشته: 13-04-2011, 04:15

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

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