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

موضوع: درخواست راهنمایی در مورد رجیستر ها

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2009
    نام
    محسن فنودی
    نوشته ها
    43
    تشکر
    72
    تشکر شده 11 بار در 9 پست

    Icon16 درخواست راهنمایی در مورد رجیستر ها

    سلام دوستان من شروع کار با فیلیپس هستم و تاکنون رجیستر هاش من رو گیج کرده !
    سوالاتی که دارم و قبل از این هم بگم من میکرو LPC2104 رو انتخاب کردم که بشود با پروتئوس شبیه سازی کرد اما سوالات من !
    به عنوان مثال پین یک از پورت 0 این میکرو رو میخوام خروجی بزارم خوب اینجوری مینویسم:
    کد:
    #include <LPC210X.H>
    int main(void) {
    	IODIR=0x02;
    	IOSET=0x02;	
    }
    حال سوال من اینجاست اگر بخوام پین یک خروجی و پین دوم ورودی از همان پورت را بنویسم باید رجیستر IODIR روبه عنوان ورودی پیکر بندی کنم که در نتیجه اونوقت تنظیمات خروجی بهم میخوره
    مثلا IODIR=0x03 خوب چه کار کنم ؟

    سوال بعدی میخوام یک کلید رو بزنم یکی از پین ها روشن بشه رجیستر مربوط به این کار IOPIN هست چه جوری بنویسم ؟
    دوستان سعی کنید یک مثال عملی بزنید

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

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

    پیش فرض

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

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


  5. #3
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    حال سوال من اینجاست اگر بخوام پین یک خروجی و پین دوم ورودی از همان پورت را بنویسم باید رجیستر IODIR روبه عنوان ورودی پیکر بندی کنم که در نتیجه اونوقت تنظیمات خروجی بهم میخوره
    مثلا IODIR=0x03 خوب چه کار کنم ؟
    خوب اینجا فکر کنم باید برنامه نویسیتون کمی خوب باشه

    مثلا این یک نمونه هست :

    [PHP]

    GPIOA->ODR = 0x00000001;
    GPIOA->ODR |= 0x00000010;

    [/PHP]حاصل داخل رجیستر GPIOA_ODR میشه :

    [PHP]

    GPIOA->ODR = 0x00000011

    [/PHP]باید از AND منطقی یا OR منطقی و غیره ... استفاده کنید
    *** اللّهم عجّل لولیک الفرج ***

  6. #4
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2009
    نام
    محسن فنودی
    نوشته ها
    43
    تشکر
    72
    تشکر شده 11 بار در 9 پست

    پیش فرض

    نقل قول نوشته اصلی توسط doloop نمایش پست ها
    خوب اینجا فکر کنم باید برنامه نویسیتون کمی خوب باشه

    مثلا این یک نمونه هست :

    [php]

    gpioa->odr = 0x00000001;
    gpioa->odr |= 0x00000010;

    [/php]حاصل داخل رجیستر gpioa_odr میشه :

    [php]

    gpioa->odr = 0x00000011

    [/php]باید از and منطقی یا or منطقی و غیره ... استفاده کنید
    من قبل اینکه سوال رو مطرح کنم یوزر مانوآل رو خوندم و مجله pmm9 اما اینجوری که من میخوام چیزی نفهمیدم که پورت ها رو به اختیار خودم در بیارم
    الان همینی که نوشتین رو با علامت هاش یک توضیح بدهید غیر قابل فهم هست ؟ مثلا این علامت ، اصلا odr چی هست ؟
    کد:
    ->
    ویرایش توسط Fanoudi : 21-06-2013 در ساعت 11:25

  7. #5
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2009
    نام
    محسن فنودی
    نوشته ها
    43
    تشکر
    72
    تشکر شده 11 بار در 9 پست

    پیش فرض

    ولی از همکاری در انجمن لذت بردم ، کسی هست جواب من رو بده که به چه صورت التماس کنم تا جواب بگیرم

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

    پیش فرض

    سلام
    این مثالی که آقا حسین فرمودند مربوط به رجیسترهای stm هست و شما با فیلیپس اشتباه نکنید
    در سری کورتکس همان طور که بارها قبلا در انجمن دوستان شرح دادند برای انتساب از <- استفاده می کنند. ولی این مدلی که شما دارید کار می کنید و می خواهید در پروتئوس باشد آرم 7 هست و اینگونه نیست و شبیه به همان 2378 رجیسترهاش تنظیم میشه. در هر مدلی از فیلیپس همان طور باز قبلا ذکر شده فایل h. که اول کار include می کنید رجیستر ها را بیان کرده
    اینکه می فرمایید می خواهم از یک پورت تعدادی ورودی باشد تعدادی خروجی ، خوب آنهایی که خروجی می کنید می شود خروجی و مابقی کما فی السابق ورودی می ماند دیگه چیزی به هم نمی ریزه که
    و اینکه برنامه ای که چگونه از یک پایه به عنوان ورودی استفاده کنیم قبلا ها قرار داده شده در همین انجمن یه سرچ بزنید دقیقا یادم نیست کجا
    این رجیستر های LPC2104 را من کار نکردم و در جریان جزییاتش نیستم ولی کلیاتش باید مثل همان2378 باشه.

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


  10. #7
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    این مثالی که آقا حسین فرمودند مربوط به رجیسترهای stm هست
    بله این مثالی که من زدم مربوط به رجیستر میکرو های STM هست ...

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

    این مثال برای STM هست و فقط برای درک این قضیه عرض میکنم , که شما برای رجیستر های میکروی خودتون چطور باید استفاده کنید ...
    فرض کنید همه پین ها ورودی هستن حالا ما میخواهیم یک پین را خروجی تعریف کنیم

    توی STM همه پین ها پیش فرض مقدار 0x44444444 دارند و هر کدوم از این 4ها معادل یک پین هست که یعنی همه ورودی انتخاب شدن
    حالا من میخام پین صفر رو خروجی کنم اگه کد تعین خروجی 8 باشه باید بنویسم 0x44444448 درست ...
    حالا فرض کنید من نمیدونم پیش فرض پین ها چی تعریف شدن اگه بیام مقدار 0x00000008 رو قرار بدم در اصل همه پین ها رو تغیر دارم که این کار درست نیست
    حالا باید از AND یا OR یا NOT منطقی استفاده کنم تا تنها یک بیت تغیر پیدا کنه نه همه بیت ها
    این علامت مربوط به OR کردن هست ( | ) اینم که علامت AND هست ( & ) اینم علامت NOT ( ! و ~ )

    اگر من بیام مقدار 0x00000008 رو با رجیستر مورد نظرم OR کنم تنها بیت صفرم پورت تغیر خواهد کرد و پین مورد نظر خروجی خواهد شد
    همونطور که میدونید این OR منطقی میاد بیت های نظیر رو با هم OR میکنه (اگه هر دو بیت 1 باشند یا یکی از دو بیت یک باشند پاسخ 1 و اگر هر دو صفر باشند باسخ صفر میشه)

    اینم یک نمونه
    [PHP]

    IODIR = 0x0002;
    IOSET = 0x0002;
    IODIR |= 0x0003;

    [/PHP]

    تقریبا باید یه همچین چیزی بشه باز میگم من از رجیستر های این میکرو اطلاعی ندارم ولی کلی عرض کردم تا بهتر درک کنید
    *** اللّهم عجّل لولیک الفرج ***

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


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

  1. درخواست راهنمایی
    توسط masudz در انجمن گفت و گوي آزاد
    پاسخ: 1
    آخرين نوشته: 19-01-2013, 15:31
  2. درخواست راهنمایی
    توسط asgharkarimi در انجمن گفت و گوي آزاد
    پاسخ: 0
    آخرين نوشته: 13-01-2013, 17:30
  3. راهنمایی در مورد رجیستر pwmmr0,1
    توسط reza kazemi در انجمن میکرو کنترلر های 32 بیتی(arm)
    پاسخ: 0
    آخرين نوشته: 07-05-2012, 22:11
  4. درخواست راهنمایی در مورد mmc
    توسط mihman در انجمن AVR
    پاسخ: 4
    آخرين نوشته: 19-03-2012, 14:47
  5. راهنمایی در مورد درست کردن پرتابلر.............
    توسط Elec_l0vE در انجمن میکروکنترلرهای 8و16 بیتی
    پاسخ: 18
    آخرين نوشته: 25-03-2010, 16:50

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

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