اطلاعیه

Collapse
No announcement yet.

آموزش ARM به زبان ساده

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    آموزش ARM به زبان ساده

    با سلام

    هرچی توی این سایت گشتم و گشتم به جز مطالب تکه تکه و بعضی جاها هم سوالات بسیار ساده و بعضی جاها هم بحث های خیلی پیچیده و بعضی جاها هم به جای گزاشتن برنامه و تحلیل آن فایل آن پلود شده بود و ....
    به نظر من این کار ها و این تاپیک های پشت سر هم و این سر درگمی ها و این پیچ و تاب ها و این کتاب های مرجع که به جز بحث هایی که من حتی یک کلمه از آن رو هم نفهمیدم ، سودی ندارد
    بیاین دستامون به دستای هم بگیریم و از همین الان شروع کنید به برنامه نویسی کردن ، همین الان شروع کنیم به کار کردن و همین الان شروع کنیم به ساخت پروژه چشمک زن

    1 . کامپایلری که انتخاب می کنید IAR هست ( این جمله تا کنون در چندین هزار سایت و انجمن و ... تکرار شده است ولی همچنان پست های نیمه کاره و رها شده ای که همگی با این جمله شروع شدند تمامی ندارد )
    2 . دوستانی که به فکر Bascom هستند نباید به ARM فکر کنن ( دیگه نیازی به توضیح نیست چون کامپایلری برای Basic نیست )
    3 . پروگرام کردن میکرو هم با دو روش امکان پذیر است یکی SAM-BA و دیگری JTAG که به نظر من SAM-BA بهتر است چون نیاز به پروگرامر ندارد
    4 . برای شروع یک هدر برد AT91SAM7S64 بخرید از همین فروشگاه که پروگرامر SAM-BA رو روش داره
    5 . به نظر من خودتون رو درگیر این برد های آموزشی نکنید که شما رو محدود به همون آموزشات توی کتابچه اش می کنه ( پس اگه برد آموزشی دارید برید کتابچش رو بخونید و از خوندن این تاپیک منصرف بشید )
    6 . اگه هدر برد خریدید یه بردبرد هم که بزارید کنارش فقط میمونه یه LCD کاراکتری و یه KeyPad که فکر کنم همه یه چندتایی توی کابینت آشپزخونشون یا به جای پاشنه کش توی جا کفشی خونشون دارن
    7 . کامپایلر IAR رو بخرید ، خودتون رو گول نزنید و دور خودتون به دنبال کامپایلر IAR به حجم 1 کیلوبایت بگردید چون حجمش 500 مگابایته پس بهتره از همین فروشگاه سایت بخرید
    8 . اصلا کتاب نخرید
    9 . حالا همه چیز آماده است مثل من و بعضی از دوستان دیگر که همه ی این وسایل رو تهیه کردن ولی یک منبع آموزشی ندارند
    10 . من که خودم مبتدی هستم پس می خواهیم از 0 شروع کنیم
    11 . دستورات بدرد نخور رو یاد نمیگیریم
    12 . اول از همه از دوستانی که با IAR کار کردند درخواست می کنم دستور SET , Reset کردن رو در IAR و نحوه نسبت دادن آن به یک پایه رو توضیح دهند
    13 . از هدربرد های آماده استفاده میکنیم و فعلا قاطی این بحث ها نمیشیم
    14 . پس درخواست بعدی من اینه که یک هدر برد آماده که بتوان بدون دردسر دستور Set و Reset رو در IAR نوشت اینجا پلود کنید و نحوه معرفی در IAR یعنی همون کانفیگ خودمون رو توضیح دهند

    15 . خدانگهدار تا .... ( بستگی به همکاری دوستان داره )
    http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

    #2
    پاسخ : بیاین دستامون رو به دستای هم بگیریم (حتما این تاپیک رو بخونیند)

    سلام ... نگاه کنید بهتر خودتون شروع کنید دوستان هم کمکتون میکنند من نمیدونم در چه حد آشنایی دارید ولی من برعکس شما میگم باید از یه کتاب شروع کرد اول هم کامل کتاب رو خوند !! بعد اگه دیدی اصلا به مزاجت میخوره بعد بری مخلفاتش رو بخری !!! :smile: من به شخصه میگم هر کسی در هر حدی که باشه اگه بخواد میتونه یاد بگیره . اصلا هم ربطی نداره که حتما باید AVR بلدی باشی !! خوب بلد باشی یه مزیت خیلی خوب هست ولی به نظر من نباشی هم نمیتونه مانع از این بشه که طرف نتونه یاد بگیره !! پس هر کسی هم که با BASCOM کار کرده میتونه یاد بگیره فقط باید قبول کنه که میتونه میتونه !! نمیدنم چرا این ارم رو تو این انجمن این همه غولش کردن !!! من خودم مبتدی هستم اما باور دارم که میتونم یاد بگیرم !!! و تو این زمینه خیلی ها هستن که میتون بهت کمک کنن ولی شما هم باید یه حرکتی بکنید هیچی که نمیشه !!! :smile:
    مصادیق اظهار محبت به همسر
    بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
    ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
    اثر قصه گویی برای کودکان

    دیدگاه


      #3
      پاسخ : بیاین دستامون رو به دستای هم بگیریم (حتما این تاپیک رو بخونیند)

      باور کنید ARM و AVR و ... اگه به زبان C یکم وارد باشید فرق چندانی با هم ندارن.همین الان من برنامه ای که برای AVR نوشته بودم رو کپی کردم داخل برنامه ARM و بدون هیچ مشکلی کار کرد.تنها تفاوت اونها نحوه راه اندازی اولیه تجهیزاتشون هست که اونم یه بار اول برنامه انجام میشه و کدهای ثابتی داره.اگه تو زبان C مشکلی نداشته باشین تو ARM هم مشکلی نخواهین داشت.برای همین توصیه میکنم پایه زبان C تون رو موازی کار با ARM با مطالعه کتابهایی مثل کتاب جعفرنژاد قمی تقویت کنین.

      چندسال پیش که من میخواستم با 8051 شروع کنم یه ماه کشید اسمبلر keil a51 و یه پروگرمر و یه برنامه ابتدایی پیدا کنم.بعدش که با همین keil c51 تونستم زبان C رو تقویت کنم فقط 2 روز کشید که به codevision کوچ کنم و تو اولین پروژه ام یه برنامه 2000 سطری برای AVR نوشتم.حالا هم به لطف هدر برد x256 و پروگرامر sam-ba خیلی راحت رفتم سراغ ARM و کامپایلر قدیمیم Keil.

      دیدگاه


        #4
        پاسخ : بیاین دستامون رو به دستای هم بگیریم (ح&#1578

        با سلام

        من کتاب مرجع میکروکنترلر های AT91 رو خریداری کردم ولی هنگام مطالعه مختصری از کتاب متوجه شدم که بیشتر کتاب به توضیح در مورد ساختار و ساختمان ARM صرف شده است و دستورات بسیار زیادی که شاید هیچ موقع به کار نیاید

        من فقط دستورات اساسی رو نیاز دارم بعدا به مرور دیگر دستورات رو نیز یاد میگیرم مثلا set . Reset کردن پایه و ...

        من یک برنامه چشمک زن میزارم تا از همین حالا روی همین برنامه بسیاری از دستورات و توضیحات اون هارو یاد بگیرم

        من هدر برد تهیه کردم

        لطفا در مورد این هدر برد های ARM در IAR توضیح دهید

        بسیار بسیار ممنون از پاسخ هاتون
        http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

        دیدگاه


          #5
          پاسخ : پاسخ : بیاین دستامون رو به دستای هم بگیž

          سلام
          هنگام مطالعه مختصری از کتاب متوجه شدم که بیشتر کتاب به توضیح در مورد ساختار و ساختمان ARM صرف شده است
          اما این جوری هم که میگید نیست فکر کنم تقریبا تا فصل 4 این جوری که شما میگید باشه ما بقی ضمن توضیح مختصری از ساختمانش دیگه رفته سراغ رجیستر هاش .. در ثانی تازه به نظر من هر چی درباره ساختمان داخلی اش گفته باشه که خیلی خوبه !!!!!

          دستورات بسیار زیادی که شاید هیچ موقع به کار نیاید
          من که توش دستورات اصلا ندیدم همه اش یه مشت رجیستر گفته که باید متناسب با کارت داخلش عدد بریزی همین !! ولی خوب من حالا متناسب با همین کتابی که خوندم گفتم البته هنوز هم کامل نخوندم میگم !! البته خوب در پروژهای بزرگ تر شاید حجم دستورات زیاد تر بشه ولی تو این کتاب که من تا این جایی که خوندم ندیدم !! بعد هر دستوری هم اگه باشه یه روزی به درد میخوره !!! حتما یه کاربردی داره !!
          من فقط دستورات اساسی رو نیاز دارم بعدا به مرور دیگر دستورات رو نیز یاد میگیرم مثلا set . Reset کردن پایه و ...
          این همه هم اسم دستور رو نیار !!! خیلی حساس نشو بهش !! :biggrin: مثلا همین ست و ریست که می گید کافی رجیسترش رو بدونی چی هست و همون پایه رو یک کنی خوب به این که دیگه نمیگن دستور !!!! میگین بازی با اعداد و رجیستر !!!! :agree:


          مصادیق اظهار محبت به همسر
          بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
          ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
          اثر قصه گویی برای کودکان

          دیدگاه


            #6
            پاسخ : آموزش ARM به زبان ساده

            با سلام

            اگر لطف کنید و رجیستر هایی مانند رجیستر SET کردن و یا Reset کردن یک پایه و چگونگی 0 و 1 کردن پایه مورد نظر با این رجیستر رو بگزارید خیلی خیلی ممنون می شوم و اگر لطف کنید و هدربرد های مورد نیاز برای راه اندازی میکرو در حالت Normal رو پلود کنید و نحوه کانفیگ کردن اون ها توی IAR رو توضیح دهید خیلی خیلی ممنون می شوم چون من طبق خوانده هایم به این نکته پی بردم که باید مثلا برای LCD یا KeyPad هدربرد مخصوص خودش رو داشته باشی و در IAR معرفی کنی و یا خودت هدربرد بنویسی ، درسته !
            چون من فعلا می خواهم از هدربرد های آماده استفاده کنم

            با سپاس
            http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

            دیدگاه


              #7
              پاسخ : آموزش ARM به زبان ساده

              اگر لطف کنید و رجیستر هایی مانند رجیستر SET کردن و یا Reset کردن یک پایه و چگونگی 0 و 1 کردن پایه مورد نظر با این رجیستر رو بگزارید
              سلام .. میگم امیدوارم درست باشه
              من با فرض این که تنظیمات کلاک سیستم رو انجام دادیم میگم چه جوری میشه یه پایه رو به عنوان خروجی تعریف کرد .
              کلا هر پایه میکرو میتونه 3 حالت مختلف داشته باشه (صفحه 129)
              1-ورودی/خروجی 2-حالت A حالت B

              پس اولین کاری که بکنی اینه که تشخیص بدی از کدام یک از این 3 حالت میخوای استفاده کنی که حالا هدف ما تعریف کردن یک پایه به عنوان خروجی هست مثلا میخوایم پایه شماره 14 رو خروجی تعریف کنیم . پس باید یه رجیستر باشه که مشخص کنه این پایه به عنوان ورودی/خروجی هست اسم این رجیستر PIO_PER هست . کلا همه رجیستر ها 32 بیتی هستن حالا باید بیت 14 ام از این رجیستر رو یک کنی تا به میکرو حالی کنی این پایه میخواد به عنوان ورودی / خروجی تعریف بشه !!!(این هم بگم هنوز مشخص نکردیم که وردی هست یا خروجی فقط میگیم میخوایم وردی / خروجی باشه این که خروجی باشه باید از یه رجیستر دیگه استفاده کنی ) یعنی یه دستور شبیه این :
              کد:
              AT91C_BASE_PIOA->PIO_PER=(1<<14)
              این جمله اولی یعنی AT91C_BASE_PIO در واقع مثل یه پوشه ای هست که همه رجیسترهای مربوط به بخش PIO داخلش هست ولی چون شما فقط رجیستر مربوط به فعال کننده وردی/خروجی رو میخواید اول میای پوشه ای که داخلش این رجیستر هست رو پیدا میکنی بعد میای از توی این پوشه فقط اون رجیستری رو که لازم داری رو میکشی بیرون که این کار رو توسط این فلش بیچاره انجام میدن !!!!! (البته فکر کنم این جوری باشه امیدوارم درست باشه حالا اشتباه بود دوستان بگن )
              که ما این جا رجیستر PIO_PER رو بیرون کشیدیم البته منظورم از بیرون کشیدن اینه که میخوای مشخصا روی این رجیستر کار کنیم ..
              اون دستور 14>>1 هم یعنی بیای این یک بیچاره رو 14 بار هل بدی تا بیفته تو خونه 14 ام از رجیستر PIO_PER (که مهندسی اش میگن شیف دادیم )
              البته باید مثل این که قبلش یه چیزی میگفتم خوب حالا میگم :smile: نگاه کن هر قسمت میکرو رو که میخوای ازش کار بکشی باید حتما بهش کلاک بدی وگرنه اصلا برات کار نمیکنه !!! ( اول پولش رو میگیره بعد کار میکنه !!! )
              پس باید کلاک مربوط به ورودی / خروجی رو هم فعال کنی این هم یه رجیستر داره !! در واقع با این رجیستر میشه کلاک های قسمت های مختلف رو فعال کرد اسمش هم PMC_PCER هست .
              اگه جدول صفحه 4-7 صفحه 118 رو نگاه کنی برای این که کلاک به پین های ورودی / خروجی برسه باید بیت دوم از این رجیستر رو یک کنی یعنی یه دستوری شبیه این
              کد:
              AT91C_BASE_PMC->PMC_PCER=(1<<2)
              خوب حالا باید بیای مشخص کنی این پایه 14 میخواد خروجی باشه یا وردی ؟؟؟ چون هنوز مشخص نکردیم حالا یه رجیستر هم برای این بیاد یه پایه رو خروجی تعریف بشه هست اسم این رجیستر PIO_OER هست که باید بیت 14 ام رو یک کنی پس مینویسیم :

              کد:
              AT91_BASE_PIO ->PIO_OER=(1<<14)
              الان با این دستور پایه 14 خروجی شده حالا مثلا میخوای این پایه رو یک کنی برای این کار باید از رجیستر PIO_SODR استفاده کنی یعنی دستور شبیه :
              AT91C_BASE_PIOA->PIO_SODR=(1<<14)
              حالا اگه بخوای این پایه رو صفر کنی از رجیستر PIO_CODR استفاده میکنی یعنی دستور شبیه :
              AT91C_BASE_PIO->PIO _CODR=(1<<14)
              دیگه فکر کنم تموم شده !!! البته خوب همین ست کردن یا ریست کردن رو میتونی فقط با یه رجیستر هم انجام بدی که حالا من نگفتم ولی باید قبلش یه رجیستر دیگه رو هم فعال کنی ... حالا تو کتاب هم گفته ...


              مصادیق اظهار محبت به همسر
              بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
              ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
              اثر قصه گویی برای کودکان

              دیدگاه


                #8
                پاسخ : آموزش ARM به زبان ساده

                راستش من حالا یه چیزی گفتم امیدوارم درست باشه مابقی سوالات هم از این جا بپرس ...

                http://www.eca.ir/forum2/index.php?topic=49931.msg264747#new
                مصادیق اظهار محبت به همسر
                بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
                ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
                اثر قصه گویی برای کودکان

                دیدگاه


                  #9
                  پاسخ : آموزش ARM به زبان ساده

                  با سلام

                  من می خواستم که آموزش XMEGA رو شروع کنم ولی هنگامی که با ARM و قابلیت های آن آشنا شدم ، هدربرد AT91SAM7S64 رو به همراه پروگرامر Wigller و کتاب " مرجع کامل میکروکنترلر های ARM سری AT91 " تهیه کردم ولی حالا که متوجه برنامه نویسی آن شدم و این که سختی آن چندین برابر AVR هست و این که کامپایلر Basic نیست و این که Bascom در کار نیست و این که یدونه ATmega32 و یدونه LCD نیست و این که بردبرد پر از LED نیست و این که ....

                  من برای یادگیری AVR با زبان Basic و کامپایلر Bascom از مقاله آقای احمد فهیمی (nex2004) ( آموزش بیسیک به زبان بسیار ساده ) استفاده کردم
                  من از توضیحات آقای ali_abc مطالب زیادی آموختم ولی در صورتی که از کتاب مرجع میکروکنترلر های ARM ، چیزی نفهمیدم
                  پس آموزش گام به گام از 0 ، بهتر از مرجع است

                  ************************************************** ************************************************** ****************
                  پس اگر در همین تاپیک دوستان به خصوص دوستان تیم تحقیقات ARM دور هم جمع بشند و مطالب این کتاب رو به زبان ساده تبدیل کنند و گام به گام آموزش دهند به نظر من بسیار بسیار عالی می شود من خودم هم سعی میکنم که کمک کنم

                  اگر به پایان برسد فکر کنم بهترین مقاله برای آموزش ARM در ایران باشد و من و دیگر دوستان علاقه مند به ARM می توانند با آن شروع به کار کنند مانند آقای علی کاهه
                  ************************************************** ************************************************** *****************

                  با سپاس
                  http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                  دیدگاه


                    #10
                    پاسخ : آموزش ARM به زبان ساده

                    نوشته اصلی توسط Soodi
                    با سلام

                    هرچی توی این سایت گشتم و گشتم به جز مطالب تکه تکه و بعضی جاها هم سوالات بسیار ساده و بعضی جاها هم بحث های خیلی پیچیده و بعضی جاها هم به جای گزاشتن برنامه و تحلیل آن فایل آن پلود شده بود و ....
                    به نظر من این کار ها و این تاپیک های پشت سر هم و این سر درگمی ها و این پیچ و تاب ها و این کتاب های مرجع که به جز بحث هایی که من حتی یک کلمه از آن رو هم نفهمیدم ، سودی ندارد
                    بیاین دستامون به دستای هم بگیریم و از همین الان شروع کنید به برنامه نویسی کردن ، همین الان شروع کنیم به کار کردن و همین الان شروع کنیم به ساخت پروژه چشمک زن

                    1 . کامپایلری که انتخاب می کنید IAR هست ( این جمله تا کنون در چندین هزار سایت و انجمن و ... تکرار شده است ولی همچنان پست های نیمه کاره و رها شده ای که همگی با این جمله شروع شدند تمامی ندارد )
                    2 . دوستانی که به فکر Bascom هستند نباید به ARM فکر کنن ( دیگه نیازی به توضیح نیست چون کامپایلری برای Basic نیست )
                    3 . پروگرام کردن میکرو هم با دو روش امکان پذیر است یکی SAM-BA و دیگری JTAG که به نظر من SAM-BA بهتر است چون نیاز به پروگرامر ندارد
                    4 . برای شروع یک هدر برد AT91SAM7S64 بخرید از همین فروشگاه که پروگرامر SAM-BA رو روش داره
                    5 . به نظر من خودتون رو درگیر این برد های آموزشی نکنید که شما رو محدود به همون آموزشات توی کتابچه اش می کنه ( پس اگه برد آموزشی دارید برید کتابچش رو بخونید و از خوندن این تاپیک منصرف بشید )
                    6 . اگه هدر برد خریدید یه بردبرد هم که بزارید کنارش فقط میمونه یه LCD کاراکتری و یه KeyPad که فکر کنم همه یه چندتایی توی کابینت آشپزخونشون یا به جای پاشنه کش توی جا کفشی خونشون دارن
                    7 . کامپایلر IAR رو بخرید ، خودتون رو گول نزنید و دور خودتون به دنبال کامپایلر IAR به حجم 1 کیلوبایت بگردید چون حجمش 500 مگابایته پس بهتره از همین فروشگاه سایت بخرید
                    8 . اصلا کتاب نخرید
                    9 . حالا همه چیز آماده است مثل من و بعضی از دوستان دیگر که همه ی این وسایل رو تهیه کردن ولی یک منبع آموزشی ندارند
                    10 . من که خودم مبتدی هستم پس می خواهیم از 0 شروع کنیم
                    11 . دستورات بدرد نخور رو یاد نمیگیریم
                    12 . اول از همه از دوستانی که با IAR کار کردند درخواست می کنم دستور SET , Reset کردن رو در IAR و نحوه نسبت دادن آن به یک پایه رو توضیح دهند
                    13 . از هدربرد های آماده استفاده میکنیم و فعلا قاطی این بحث ها نمیشیم
                    14 . پس درخواست بعدی من اینه که یک هدر برد آماده که بتوان بدون دردسر دستور Set و Reset رو در IAR نوشت اینجا پلود کنید و نحوه معرفی در IAR یعنی همون کانفیگ خودمون رو توضیح دهند

                    15 . خدانگهدار تا .... ( بستگی به همکاری دوستان داره )
                    7- خوب اگه قضیه خریدن هست خوب چرا از خود شرکت نخریم که لایسنس معتبر هم داشته باشیم؟
                    اگرم قراره کرک کنیم که خوب دانلود کردنش زیاد هم وقت نمیگیره
                    8-اتفاقا کتاب در این زمینه بسیار موثره! شما خودتم که کتاب گرفتی!
                    11-نمیدونم منظور شما دستورات زبان سی هست یا دستورات مربوط به میکرو اما در کل هیچ دستوری بدرد نخور نیست و در بسیاری از موارد بسیار هم بدرد بخور هست
                    در ضمن پروگرم کردن به روش جی تگ بسیار بهتره و سریع تره کی گفته هر ارزونی بهتره؟
                    منبع های آموزشی رایگان هم تو نت ریختن
                    میتونستید این پست رو تو یکی از موضوع های مهم این بخش بزنید
                    با تشکر

                    دیدگاه


                      #11
                      پاسخ : آموزش ARM به زبان ساده

                      دستوراتی که توی iar و keil استفاده میشه فرقی نداره حتی اکثرا میشه از کتابخانه یکیش تو یکی دیگه استفاده کرد اما به نظرم نرم افزار keil کتابخونه های بیشتری براش در دسترس هست
                      در ضمن شاید sam-ba نیاز به پروگرم نداشته باشه اما سرعت کارتون رو کم میکنه چون بعد از هر بار استفاده باز باید میکرو رو ببرید در مد sam-ba اما با jtag میتونید پشت سر هم پروگرم کنید!ساخت پروگرمر jtag هم سخت نیست حتی میتونید رو برد بورد هم ببندید و استفاده کنید

                      دیدگاه


                        #12
                        پاسخ : آموزش ARM به زبان ساده

                        با سلام

                        من پروگرمر ARM Wiggler Programmer رو تهیه کردم ولی به دلیل استفاده از سیستم عامل Windows 7 64Bit نمی توانم از این پروگرامر استفاده کنم
                        دوستان اگر راه حلی برای این مشکل در نظر دارند لطف کنند و من رو راهنمایی کنند که چگونه در این سیستم عامل از پورت Parallel استفاده کنم ؟

                        با سپاس
                        http://vz.iminent.com/vz/39a77668-19...h-fishing.giff

                        دیدگاه


                          #13
                          پاسخ : آموزش ARM به زبان ساده

                          [move][glow=red,2,300]تعریف یه پایه در حالت ورودی و توضیحی درباره رجیستر PIO_ODSR [/glow][/move]

                          با سلام ..
                          حالا اگه مثلا بخوایم یه پایه رو مثلا 14 رو به عنوان ورودی تعریف کنیم باید مراحل زیر رو طی کنیم که به طور خلاصه :

                          1- کلاک ورودی / خروجی فعال باشه رجیستر PMC_PCER

                          2-پین رو در حالت یک یعنی ورودی / خروجی تعریف کنیم رجیستر PIO_PER

                          3-حالا چون میخوایم ورودی باشه باید از رجیستر PIO_ODR استفاده کنیم یعنی مثلا برای پایه 14 این جوریه :
                          کد:
                          AT91_BASE_PIOA->PIO_ODR=(1<<14)

                          [glow=red,2,300]رجیستر PIO_ODSR و PIO_OWER [/glow]

                          همان طور که قبلا هم در مورد خروجی ها گفته شد یک رجیستر هست که میشه ست و ریست کردن یه پایه رو با اون انجام داد در صورتی که در حالت عادی برای ست کردن یه پایه که در خروجی تعریف شده باید از رجیستر PIO_SODR استفاده کرد و پین متناظر داخل این رجیستر ور یک کرد و برای ریست کردنش از رجیستر PIO_CODR استفاده کرد و پین متناظر با اون رو یک کرد . ولی حالا میخوایم یه کاری بکنیم که برای ست کردن و ریست کردن یه پایه که در خروجی تعریف شده تنها از یک رجیستر استفاده کنیم اسم این رجیستر PIO_ODSR هست این رجیستر در واقع یه رجیستر وضیعت هست .. رجیستر وضعیت دیگه چیه ؟؟!! oo: همنطور هم که از اسمش پیداست مشخص کننده وضعیت هست مثلا همین رجیستر PIO_ODSR مشخص میکنه که وقتی مثلا یه پایه خروجی تعریف شده سطح ولتاژ اون پایه خروچی چیه . مثلا اگه پایه 14 رو خروجی تعریف کرده باشیم بعد توی این رجیستر خونه 14 امش رو بخونیم و عدد یک داخل خونه 14 امش باشه یعنی پایه 14 رو که الان خروجی تعریف کردیم مقدار ولتاژش HIGH است (تقریبا ولتاژش 3.3 هست ) و اگر خونه 14 ام رو خوندیم و دیدیم عدد صفر هست یعنی سطح ولتاژ پایه 14 ام که خروجی تعریف کردیم هم اکنون LOW است (ولتاژ صفر ولت ) .
                          کلا تمامی رجیستر های وضعیت فقط خوندنی هست مفهوم این که یک رجیستر فقط خوندنی هست یعنی اصلا نمیتونی داخلش بنویسی میکرو خودش اون رو مدیریت میکنه !! :agree: اگر در صفحه 135 نگاه کنید :read:در کنار رجیستر PIO_ODSR دو تا جمله نوشته :
                          Read only فقط خوندنی یا Read - write خوندنی - نوشتنی
                          یعنی این رجیستر فقط میتونه خوندنی باشه یا خوندنی و نوشتنی باشه
                          در حالت عادی این رجیستر فقط خوندنی هست حالا اگه بخوایم خوندنی و نوشتنی باشه باید از رجیستر PIO_OWER استفاده کرد

                          مثلا فرض کنید من میخوام همون پایه 14 رو ست و ریست کنم ولی با رجیستر PIO_ODSR انجامش بدم یعنی فقط با یک رجیستر :

                          کد:
                           AT91C_BASE_PMC -> PMC_PCER=(1<<2)
                          کد:
                          AT91C_BASE_PIOA->PIO_OER=(1<<14)
                          کد:
                          AT91C_BASE_PIOA->PIO_OWER=(1<<14)
                          کد:
                          AT91C_BASE_PIOA->PIO_ODSR=(1<<14)
                          کد:
                          AT91C_BASE_PIOA->PIO_ODSR=(0<<14)
                          1- کلاک ورودی / خروجی فعال شده

                          2- پایه 14 خروجی شده

                          3- با این دستور رجیستر PIO_ODR فقط و فقط خونه 14 ام یا همون بیت 14 ام از این رجیستر خوندنی - نوشتنی شده باز هم تاکید میکنم فقط بیت 14 ام از این رجیستر خوندنی - نوشتنی شده بقیه بیت ها همون خوندنی هست

                          4- پایه 14 ام یک شده

                          5-پایه 14 ام صفر شده


                          [/b][/color]
                          مصادیق اظهار محبت به همسر
                          بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
                          ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
                          اثر قصه گویی برای کودکان

                          دیدگاه


                            #14
                            پاسخ : آموزش ARM به زبان ساده

                            نوشته اصلی توسط ali_abc
                            [move][glow=red,2,300]تعریف یه پایه در حالت ورودی و توضیحی درباره رجیستر PIO_ODSR [/glow][/move]

                            سلام .. اولش یه تشکر کنم از [shadow=red,left][glow=red,2,300]استاد خوبم آقای حامد AT91[/glow][/shadow] که من هر چی یاد گرفتم از ایشون بوده سوالی هم داشتید از ایشون بپرسید !!! :agree:
                            حالا اگه مثلا بخوایم یه پایه رو مثلا 14 رو به عنوان ورودی تعریف کنیم باید مراحل زیر رو طی کنیم که به طور خلاصه :

                            1- کلاک ورودی / خروجی فعال باشه رجیستر
                            PMC_PCER

                            2-پین رو در حالت یک یعنی ورودی / خروجی تعریف کنیم رجیستر PIO_PER

                            3-حالا چون میخوایم ورودی باشه باید از رجیستر PIO_ODR استفاده کنیم یعنی مثلا برای پایه 14 این جوریه :
                            کد:
                            AT91_BASE_PIOA->PIO_ODR=(1<<14)

                            [glow=red,2,300]رجیستر PIO_ODSR و PIO_OWER [/glow]

                            همان طور که قبلا هم در مورد خروجی ها گفته شد یک رجیستر هست که میشه ست و ریست کردن یه پایه رو با اون انجام داد در صورتی که در حالت عادی برای ست کردن یه پایه که در خروجی تعریف شده باید از رجیستر PIO_SODR استفاده کرد و پین متناظر داخل این رجیستر ور یک کرد و برای ریست کردنش از رجیستر PIO_CODR استفاده کرد و پین متناظر با اون رو یک کرد . ولی حالا میخوایم یه کاری بکنیم که برای ست کردن و ریست کردن یه پایه که در خروجی تعریف شده تنها از یک رجیستر استفاده کنیم اسم این رجیستر PIO_ODSR هست این رجیستر در واقع یه رجیستر وضیعت هست .. رجیستر وضعیت دیگه چیه ؟؟!! oo: همنطور هم که از اسمش پیداست مشخص کننده وضعیت هست مثلا همین رجیستر PIO_ODSR مشخص میکنه که وقتی مثلا یه پایه خروجی تعریف شده سطح ولتاژ اون پایه خروچی چیه . مثلا اگه پایه 14 رو خروجی تعریف کرده باشیم بعد توی این رجیستر خونه 14 امش رو بخونیم و عدد یک داخل خونه 14 امش باشه یعنی پایه 14 رو که الان خروجی تعریف کردیم مقدار ولتاژش HIGH است (تقریبا ولتاژش 3.3 هست ) و اگر خونه 14 ام رو خوندیم و دیدیم عدد صفر هست یعنی سطح ولتاژ پایه 14 ام که خروجی تعریف کردیم هم اکنون LOW است (ولتاژ صفر ولت ) .
                            کلا تمامی رجیستر های وضعیت فقط خوندنی هست مفهوم این که یک رجیستر فقط خوندنی هست یعنی اصلا نمیتونی داخلش بنویسی میکرو خودش اون رو مدیریت میکنه !! :agree: اگر در صفحه 135 نگاه کنید :read:در کنار رجیستر PIO_ODSR دو تا جمله نوشته :
                            Read only فقط خوندنی یا Read - write خوندنی - نوشتنی
                            یعنی این رجیستر فقط میتونه خوندنی باشه یا خوندنی و نوشتنی باشه
                            در حالت عادی این رجیستر فقط خوندنی هست حالا اگه بخوایم خوندنی و نوشتنی باشه باید از رجیستر PIO_OWER استفاده کرد

                            مثلا فرض کنید من میخوام همون پایه 14 رو ست و ریست کنم ولی با رجیستر PIO_ODSR انجامش بدم یعنی فقط با یک رجیستر :

                            کد:
                             AT91C_BASE_PMC -> PMC_PCER=(1<<2)
                            کد:
                            AT91C_BASE_PIOA->PIO_OER=(1<<14)
                            کد:
                            AT91C_BASE_PIOA->PIO_OWER=(1<<14)
                            کد:
                            AT91C_BASE_PIOA->PIO_ODSR=(1<<14)
                            کد:
                            AT91C_BASE_PIOA->PIO_ODSR=(0<<14)
                            1- کلاک ورودی / خروجی فعال شده

                            2- پایه 14 خروجی شده

                            3- با این دستور رجیستر PIO_ODR فقط و فقط خونه 14 ام یا همون بیت 14 ام از این رجیستر خوندنی - نوشتنی شده باز هم تاکید میکنم فقط بیت 14 ام از این رجیستر خوندنی - نوشتنی شده بقیه بیت ها همون خوندنی هست

                            4- پایه 14 ام یک شده

                            5-پایه 14 ام صفر شده

                            بعدا انشالله درباره وضیعت پایه در حالت A و B صحبت میشه و هم چنین رجیستر های مربوط به کلاک سیستم که اگه این تنظیم نشه اصلا همه چیز بی فایده خواهد بود !!!!!!!!!!!!! :agree:

                            راستش من کلا ادم بی دقتی هستم پس خودتون حتما کتاب رو بخونید ممکنه اشتباه توش باشه !!! اصلا شک نکنید !!!!!!!!

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

                            دیدگاه


                              #15
                              پاسخ : آموزش ARM به زبان ساده

                              نوشته اصلی توسط علی علی پور ریکنده
                              با سلام
                              تا اونجایی که عقل ناقص من قد میده باید فقط در حالتی که میخوایم از پین به صورت ورودی استفاده کنیم باید کلاکش رو فعال کنیم!
                              این جمله عقل ناقص رو هم بردار ماشاالله من تو هر انجمنی میرم شما هستید !!!!
                              اول تشکر که خوندی .و نظر دادی . :smile: ولی به نظر من چه تو حالت ورودی و چه خروجی فرقی نداره هر دوتاش باید کلاک فعال باشه . مثلا در مثال صفحه 142 کتاب یه مثال زده که هر چهار تا پین خروجی هستن ولی می بینی که تو برنامه کلاک PIO رو فعال کرده یعنی این دستور :

                              AT91_BASE_PMC -> PMC_PCER=(1<<AT91C_ID_PIOA)
                              که البته AT91C_ID_PIOA مقدار 2 داخلش هست .
                              موفق باشید ... :smile:
                              مصادیق اظهار محبت به همسر
                              بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
                              ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
                              اثر قصه گویی برای کودکان

                              دیدگاه

                              لطفا صبر کنید...
                              X