اطلاعیه

Collapse
No announcement yet.

سوالات کتاب at91 (نص)

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

    #46
    پاسخ : سوالات کتاب at91 (نص)

    eeeeeeeeeeeeeeeeeem :cry: :cry:
    سلام دوستان عزیز من نبودم شما چقدر پیش رفتین ایشالا به سلامتی :applause:
    .حالا منم پا کوبیدنم تموم بشه به شما ملحق می شم الانم کل صفحه ها رو پرینت می گیرم میبرم پادگان می خونم :wow:

    دیدگاه


      #47
      پاسخ : سوالات کتاب at91 (نص)

      [move][glow=red,2,300][shadow=red,left]فصل دهم مبدل انالوگ به دیجیتال[/shadow][/glow][/move]
      [glow=red,2,300]با سلام .... [/glow] :nerd:

      1- دزجه تفکیک در یک مبدل آنالوگ به دیجیتال نشونه چیه ؟؟!

      2-SAMPLE AND HOLD چه زمانی هست ؟؟

      3-در صفحه 252 گفته با یک نوشتن در بیت SWRST واحد ADC رو ریست سخت افزاری میکنم ! ببخشید مگه ریست سخت افزاری معنی این رو نمیده که از بیرون فرمان صادر بشه ؟؟ یعنی مثلا تو برنامه بنویسم اگه یه پالس بالارونده به این پایه اومده ریست انجام بده ؟ فکر کنم باید مینوشته نرم افزاری !!!! البته ببخشید ها من این همه ............ :redface:(تازه به دوران رسیده ایراد هم می گیره !!!!!!! چی کار کنم اصلا این ویژگی با وجودم اجین شده !!! به همه چیز گیر میدم !!! )

      4-در صفحه 255 انتهای صفحه اسم دو تا رجیستر ADC_RCR و ADC_RNCR رو آورده اما توی فصل توضیحی دربارش نداده !! ببخشید این ها چی کار میکنند ؟؟؟

      [shadow=red,left][b]صفحه 260 مثال 10-1 :
      [/shadow]
      5-در قسمت شرط While گفته که عد یک رو 4 بار شیفت بده بعد با رجیستر ADC_SR ؛ AND اش کنه اما مشخص نکرده که این عدد یک که باید 4 بار شیفت داده بشه تو چه رجیستری یا متغیری شیفت داده بشه ! یعنی یک رو تو هوا شیفت بدیم بعد اندش کنیم !!!

      6-میتونستیم مستقیم بنویسیم ADC_SR & 0X10 ؛ این جوری فرقی داشت ؟؟

      7-بعدش شرط انگار جور در نمیاد !!!(استاد اگه اشتباه گفتم عصبانی نشید ها !!! :-SS) فرض کنیم EOC4 در رجیستر ADC_SR ؛ صفر هست یعنی تبدیل هنوز تموم نشده خوب اگر با عدد 1 ؛ AND اش کنیم حاصلش برابر صفر میشه !! ( شرط حلقه برقرار میشه ) بعد هم میره داخل حلقه While و حاصل تبدیل رو میده تو خروجی ! در صورتی که تبدیل هنوز صورت نگرفته !! حالا کجاش اشتباه گفتم ؟؟ به نظرم من باید این جوری مینوشت 1==(...) نه 0==(...) !!!!!

      8- تو همین برنامه چرا در خط آخر برنامه وقتی میخواسته محتویات رجیستر ADC_CDR4 رو به خروجی بفرسته قبلش با 0X3FF ؛ اندش کرده خوب نمیکرد هم مشکلی پیش که پیش نمیومد !! هدف خاصی داشته ؟؟

      9-تو همین مثال تو While اول ؛ قبل از هر تبدیل اومده واحد ADC رو ؛START کرده . میخوام بدونم هدفش از این کار این بوده که همون شمارنده 10 بیتی که در صفحه 248 توضیح داده دوباره از اول شروع کنه ؟؟ درسته ؟یعنی اگه قبل از حلقه While مینوشتیم جواب تبدیلات درست نبود ؟؟

      10- نمیشه یه کاری کرد برای این که اطلاعات تبدیل منظورم اطلاعات رجیستر ADC_CDR رو به خروجی بفرستیم این همه پایه از این میکرو بیچاره نگیریم !!! گناه داره !!! انصاف نیست هاااااااا !! نمیشه با یه پایه کار ها رو ردیف کرد ؟؟

      11-مثال 10-4 هم ترکیب تایمر و ADC هست مثل این که این تایمر نمیخواد من رو ول کنه !!!!




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

      دیدگاه


        #48
        پاسخ : سوالات کتاب at91 (نص)

        سلام
        1. مثلا پایین صفحه 248 را نگاه کن که درجه تفکیک برای ولتاژ رفرنس 3.3ولت و 10 بیتی شده 3.2mv . این مقدار یعنی هر 3.2mv را واحد adc به عنوان یک واحد در نظر می گیرد. مثلا برای ورودی 3.2mv خروجی adc برابر 01H می شود و برای 32mv برابر 0AH می شود و ....
        2. مدت زمانی است که واحد ADC از ورودی نمونه گیری می کند و آنرا ثابت نگه می دارد تا تبدیل آن به دیجیتال تمام شود.
        3. در داخل دیتاشیت هم گفته ریست سخت افزاری . ببین اگه با این مشکل داری می توانی با ATMEL مکاتبه کنی و آنها را قانع کنید که نرم افزاری هست :biggrin: (شوخی کردم) اونی که شما می گید ریست سخت افزاری برای کل میکرو هست و این ریست سخت افزاری فقط برای واحد ADC می باشد. که به صورت سخت افزاری در داخل میکرو سیگنال ریست برای واحد ADC تولید می شود.
        4. این رجیسترها مربوط به PDC واحد ADC می باشد.
        5و6. هر دو حالت درسته چه شیفت بدهیم چه مستقیم بنویسیم این مطلب رو تو پست های قبلی گفتم چرا!!! این که نتیجه یک عدد میشود را خود کامپایلر حساب می کند و نتیجه نهایی را در رجیستر ADC_SR اند می کند.
        7. اگر دقت کنید انتها دستور while یک ; گذاشته یعنی while دیگر اینجا تمام شده وهیچ دستوری داخل حلقه while نمی باشد. و خط بعدی خارج از while می باشد و هر وقت شرط نادرست باشد و از حلقه while خارج شود حاصل تبدیل را به خروجی می دهد.
        8. مشکلی پیش نمی آمد اما بهتر است وقتی یک دیتا را از یک جایی می خوانیم و مثلا تا 10 بیت آنرا مطمئن هستیم که دیتا ما هست و الباقی را نمیدانیم چی هست با این کار حتما آن بیت هایی را که نمی دانیم چی هست را صفر کنیم که در پردازش های بعدی به مشکل بر نخوریم.
        9. آره. باید برای هر بار که می خواهیم تبدیل را انجام دهیم start را قبلش فعال کنیم.
        10. اینجا هدف این هست که تبدیل انجام شود و بر روی پین ها به صورت موازی تست شود که ببینیم درست انجام شده یا نه!! شما در برنامه کلی خود نیازی نیست که این اطلاعات را به صورت مستقیم به خروجی دهید در داخل خود میکرو پردازش می کنید و نتیجه را مثلا بر روی lcd یا از طریق یک ارتباط سریال نشان می دهید.
        11. شما که تایمر را ول کردید شاید آن هم یک خورده بگذره ولتون کنه :biggrin:

        دیدگاه


          #49
          فصل یازدهم روابط وسایل جانبی (SPI)

          [move][shadow=red,left][glow=red,2,300]فصل یازدهم روابط وسایل جانبی (SPI)[/glow][/shadow][/move]

          با سلام ....
          این فصل از اون فصل هایی هست که هیچی ازش نمیدونم :cry: :-(( :(

          1- در صفحه 286 گفته یه زوج SLAVE و MASTER برای برقراری ارتباط از نظر تنظیمات باید مشابه باشند میخوام بدونم این تنظیمات مشابه شامل چیه ؟ یعنی باید بیت های CPOL و NCPHA در رجیستر SPI_CSR در میکرو های SLAVE و MASTER مثل هم باشند ؟ بجز این ها چیز دیگه ای هم هست ؟

          2- در صفحه 270 در خط 14 ام از پایین : میخوام بدونم این MOSI مربوط به MASTER هست ؟ و MISO مربوط به SLAVE هست ؟یعنی اطلاعاتی که درون شیفت رجیستر MASTER هست به صورت سریال روی MOSI مربوط به MASTER میره بعد در SLAVE از پایه MISO نمونه برداری میشه و توی شیفت رجیستر SLAVE میره بعد هم به رجیستر دریافت کننده SLAVE میره . منظورش همین بوده ؟ درسته ؟

          3- در صفحه 270 خط 12 ام از پایین گفته هنگام نوشتن اطلاعات در رجیستر فرستنده (SPI_TDR) باید بیت های PCS جهت انتخاب SLAVE مناسب تنظیم شود از طرفی بیت های PCS در 3 رجیستر SPI_MR و SPI_TDR و SPI_RDR موجود هست . که در صفحه 273 گفته اگه با یه دستگاه جانبی بخواد ارتباط برقرار کنه PCS رو داخل رجیستر SPI_MR تنظیم میکنم و PCS مربوط به رجیستر SPI_TDR در این حالت بی اثر هست و اگر بخواهیم با چند دستگاه جانبی ارتباط برقرار کنیم باید PCS های داخل رجیستر SPI_TDR رو تنظیم کنیم و PCS مربوط به رجیستر SPI_MR در این حالت بی اثر هست که در صفحات 279 و 280 هم نوشته اما من متوجه نشدم حالا اگه من بخوام با یه دستگاه جانبی ارتباط برقرار کنم این PCS در SPI_MR که در صفحه 279 هست باید چه جوری باشه ؟ اخه جلوی هر 4 حالت همه NPCS رو نوشته !!! oo:

          4- در رابطه با همون سوال بالاست . PCS ها در رجیستر دریافت کننده یعنی SPI_RDR که در صفحه 280 توضیحش رو داده و گفته تنها در مد MASTER این بیت ها مقدار پین های NPCS را به هنگام پایان عملیات انتقال اطلاعات مشخص میکنه . منظورتش جیه ؟ مگه این NPCS ها فقط برای این نیست که مثلا برای این که SLAVE سوم رو فعال کنیم یه پالس پایین رونده از (NPCS(3 مربوط به MASTER به NSS مربوط به SLAVE سوم بره (با توجه به شکل صفحه 277)خوب دیگه مقدارش که مشخص هست ! اصلا منظورش چیه ؟!!

          این فصل هنوز ادامه دارد !!!!!!!!! :nerd:


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

          دیدگاه


            #50
            پاسخ : سوالات کتاب at91 (نص)

            سلام
            در هنگام خواندن مطالب دقت و تفکر کن. SPI فصل 11 نه 12 :biggrin:

            1. بیت های CPOL,NCPHA,BITS در رجیستر SPI_CSR
            2. نه. منظور در اینجا از مسیرهای MOSI,MISO هر دو برای MASTER هست به این صورت که هنگامی که MASTER دارد اطلاعات را بیت به بیت بر روی مسیر MOSI به بیرون شیفت می دهد در همان هنگام هم از مسیر MISO نمونه برداری می کند و داخل شیفت رجیستر قرار می دهد. شکل 11-5 را ببین شیفت رجیستر اون وسط قرار دارد و سیگنال های MISO,MOSI از طرفین به آن وصل است.
            3. ببین برای حالت PCSDEC=0
            مثلا پین NPCS0 به یک SLAVE متصل است. برای فعال کردن این SLAVE باید بیت های PCS=1110 باشد. در این حالت NPCS1=1,NPCS2=1,NPCS3=1 می باشد. و برای حالت های دیگر هم نوشته ...
            4. خوب این امکان را در MASTER گذاشته که مثلا اگر شما با چندیدن SLAVE در ارتباط هستید وقتی اطلاعاتی را دریافت کردید باتوجه به این بیت ها می توانید تشخیص دهید از کدام SLAVE اطلاعات را دریافت کرده اید.

            دیدگاه


              #51
              فصل یازدهم روابط وسایل جانبی (SPI)

              [move][glow=red,2,300]فصل یازدهم روابط وسایل جانبی (SPI) [/glow][/move]

              با سلام ...
              شما جنبه مثبتش رو ببینید !! میخواستم ببینم دقت شما چه قدر هست !! ماشاالله در حد تیم ملی ! شوخی کردم حالا ویرایشش کردم . ولی انصافا خوب حواستون بود هاااااا !!!

              1-صفحه 270 از پایین خط چهارم : " از بیت TDRE برای تریگر کانال های PDC جهت ارسال استفاده میشه " میخواستم بدونم این کانال PDC چیه ؟ البته قبلا هم یه اشاره کرده بودید . تو فصل های اول کتاب دربارش توضیح داده ؟

              2-در صفحه 275 قسمت مد تشخیص خطا :گفته " هنگامی که واحد SPI در مسیر سیگنا NPCS0/NSS توسط MASTER خارجی دیگری به سطح صفر برده میشود خطا تشخیص داده میشود " با این حساب کاربرد این مد تشخیص خطا فقط برای زمانی هست که بیش از دو تا MASTER داشته باشیم ؟یا توی یک MASTER هم میشه ؟اصلا کاربردش رو متوجه نشدم !! :sad:

              3-بعضی از بیت ها هست که فقط برای MASTER یا SLAVE معنی میده مثلا همین بیت LASTXFER در رجیستر SPI_CR که در صفحه 278 توضیح داده . فکر کنم فقط تو مد MASTER معنی بده . حالا میخوام بدونم مثلا اگر میکرو در مد SLAVE بذاریم و این بیت رو یک کنیم در عمل توی اجرای برنامه تاثیر داره ؟

              4-در صفحه 279 منظور از این که خطوط انتخاب CHIP_SELECT همپوشانی نداشته باشند چیه ؟ منظورش این هست که مثلا اگر DLYBCS در رجیستر SPI_MR خیلی کوچک انتخاب بشه ممکنه در یک زمان که فرمان غیر فعا ل کردن یه SLAVE صادر میشه این SLAVE تا فعال شدن SLAVE دیگر هنوز خاموش نشده باشه و در یک زمان کوتاه هر دو شون روشن باشن ؟منظورش ا زهمپوشانی اینه ؟

              5- کاربرد این بیت LLB در صفحه 279 چیه ؟؟

              استاد خوبم خیلی ممنون که تا حالا پاسخ دادید ..

              این قصه سر دراز دارد ....... این فصل ادامه دارد !!!!!!!!!!!!!! :nerd:

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

              دیدگاه


                #52
                پاسخ : سوالات کتاب at91 (نص)

                سلام
                1. فصل 13 در مورد PDC توضیح داده شده است. اما منم زیاد با اون برنامه ننوشتم.
                2. خوب در شبکه کردن میکرو ها به روش SPI فقط یک MASTER هست اما این خطا در صورتی هست که به صورت خارجی یک MASTER دیگری اگر پایه NPCS0/NSS را صفر کرد این خطا تشخیص داده شود.
                3. خوب مثلا اون بیتی که شما گفتید فقط در MASTER تاثیر دارد در نتیجه اگر در مد SLAVE این بیت هیچ تاثیری ندارد.
                4. آره
                5. این از داخل میکرو در مد MASTER پایه MISO را به پایه MOSI وصل می کند برای تست برنامه خوب می باشد. از حالت های در واحد USART هم داریم صفحه 321و322 را ببین.

                دیدگاه


                  #53
                  پاسخ : سوالات کتاب at91 (نص)

                  [move][shadow=red,left][glow=red,2,300]فصل یازدهم روابط وسایل جانبی (SPI) [/glow][/shadow][/move]


                  با سلام

                  1-در صفحه 266 خط 13 ام از بالا گفته که یه مستر میتونه همزمان اطلاعاتش رو به چندین SLAVE ارسال کنه از طرفی در صفحه 274 انتهای خط سوم گقته اگر دو بیت در بخش PCS برابر صفر تنظیم شوند تنها اولین یا کم ارزش ترین مسیر CHIP SELECT به سطح صفر برده میشه .
                  حالا اگر MASTER بخواد به طور همزمان یک داده رو به (0)SLAVE و (1)SLAVE ارسال کنه یعنی باید PCS=0110 باشه ؟ خوب با توجه به جمله دوم فقط به (0)SLAVE داده ارسال میشه ! ما با توجه به جمله اول به هر دو تاش ارسال میشه ! حالا کدام حرف رو قبول کنم ؟؟!!

                  2- در صفحه 288 که میام بیتهای BITS رو در رجیستر SPI_CSR مشخص میکنیم میخوام بدونم با توجه به این که این BITS تعداد بیت های انتقال یافته اطلاعات توسط واحد SPI رو تو چی مشخص میکنه ؟؟ تو مثلا یه کلاک از SPCK ؟

                  3- مثال 11-1 صفحه 290 :
                  چرا تو مثال مسیر های انتقال اطلاعات و مسیر های کنترلی رو PULL UP کرده ؟ منظورم MISO -MOSI- NPCS-SPCK اگه PULL DOWN کنیم فرقی داره ؟؟

                  4-مثال 11-2 : در برنامه MASTER تنها با یک دستگاه جانبی میخواد ارتباط برقرار کنه چرا پس بیت PS رو در رجیستر SPI_MR رو یک کرده ؟؟

                  5-در مد MASTER فرقی نداره از کدام SPI_CSR استفاده کنیم درسته ؟؟

                  6-با توجه به این که در برنامه MASTER بیت CSAAT در رجیستر SPI_CSR رو صفر کرده یعنی MASTER فقط یه بار داده اش رو ارسال میکنه ؟ من این جوری میگم که برای اولین بار که برنامه اجرا میشه خوب وقتی وارد حلقه WHILE میشه عملیاتش رو انجام میده یعنی MASTER عدد 0X55 رو به SLAVE میفرسته و به محض فرستادن به علت صفر بودن CSAAT خطوط انتخاب دستگاه جانبی غیر فعال میشوند (صفحه 288 ) و چون دیگه از WHILE خارج نمیشیم (با توجه به بی نهایت بودن حلقه ) پس فقط یه بار داده اش رو ارسال میکنه ؟؟ میدونم که غلطه !!!! ولی خوب کجاش اشتباه ؟؟ :-??


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

                  دیدگاه


                    #54
                    پاسخ : سوالات کتاب at91 (نص)

                    سلام
                    1. در اینجا اگر بیت PCSDEC=0 باشد جمله دوم یعنی صفحه 274 خط دوم درست است. اما اگر بیت PCSDEC=1 باشد جمله اول یعنی صفحه 266 خط 13 و همچنین صفحه 274 خط 6 درست می شود . صفحه 279 بیت های PCS را ببین.
                    2. نه تو یک کلاک که نمی باشد. یعنی هر بار که قرار اطلاعات انتقال پیدا کند چند بیتی می باشد.
                    3. صفحه 275 مد تشخیص خطا را ببین. در ضمن وضعیت بی کاری بر روی مسیر SPI در وضعیت HIGH می باشد.
                    4. فرقی نمی کرد. به نظرم می خواسته در مثال دوم از این روش استفاده کند که روش آنرا هم نشان دهد.
                    5. فرق می کند بستگی دارد که SLAVE به کدام پایه وصل است در این مثال SLAVE به NPCS1 وصل است پس از SPI_CSR1 استفاده کرده است.
                    6. نه درست بیت CSAAT را متوجه نشدی قسمت 11-10 صفحه 274 را دوبار بخوان و شکل های آنرا هم دقیق ببین. اگر CSAAT=0 باشد یعنی وقتی اطلاعات به SLAVE منتقل شد پایه انتخات SLAVE غیرفعال می شود اما دوباره که قرار است انتقال صورت گیرد پایه انتخاب SLAVE فعال می شود. یعنی بین دو انتقال متوالی به یک SLAVE پایه انتخاب SLAVE در مدت زمان بین این دو انتقال غیرفعال می شود اما اگر CSAAT=1 باشد بین این دو انتقال پایه انتخاب SLAVE فعال باقی می ماند.

                    دیدگاه


                      #55
                      پاسخ : سوالات کتاب at91 (نص)

                      سلام
                      در تایمر بلادرنگ میخوام از رجیستر هشدار استفاده کنم برا مثال وقتی تایمر به 10 رسید.هشدار بده.به این ترتیب مینویسم
                      AT91C_BASE_RTTC->RTTC_RTAR=9

                      if(AT91C_BASE_RTTC->RTTC_RTSR=1
                      {
                      }
                      اما در عمل IF اجرا نمشه و تایمرو که روی LCD نشون میده از مقدار 10 میگذره.مقدار رجیستر RTT_SR رو 2 نشون میده که به دلیل افزایش تایمره و RTT_AR هم روی مقدار 9 ثابت هست و هشداری هم رخ نمیده :angry:
                      چرا؟

                      دیدگاه


                        #56
                        پاسخ : سوالات کتاب at91 (نص)

                        سلام
                        اشکال در شرط if می باشد برنامه زیر را ببین الان تست کردم درست هم جواب می دهد. دو تا LED هم بر روی پایه های PA0,PA1 قرار بده تا نتیجه رو بهتر ببینید. فایل باینری برنامه را پیوست کردم.

                        کد:
                        #include <Atmel/ioat91sam7s64.h>
                        #define LED1ON		AT91C_BASE_PIOA->PIO_CODR=(1<<0);
                        #define LED1OFF		AT91C_BASE_PIOA->PIO_SODR=(1<<0);
                        #define LED2ON		AT91C_BASE_PIOA->PIO_CODR=(1<<1);
                        #define LED2OFF		AT91C_BASE_PIOA->PIO_SODR=(1<<1);
                        void LEDtoggle (void);
                        //-----------------------------------------
                        void main ()
                        {
                        //--------------------start up--------------------------
                        AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS; // AT91C_WDTC_WDDIS=(1<<15)
                        AT91C_BASE_RSTC->RSTC_RMR=0xA5000001;
                        //--------------------speed up--------------------------
                        AT91C_BASE_CKGR->CKGR_MOR = 0xF01;
                        AT91C_BASE_CKGR->CKGR_PLLR = 0x2903FFC; 
                        AT91C_BASE_PMC->PMC_MCKR = 0x3;
                        AT91C_BASE_PMC->PMC_SCER = 0x1;
                        //-----------------------------------------------------
                        AT91C_BASE_PMC->PMC_PCER = ( 1<<AT91C_ID_PIOA ); // AT91C_ID_PIOA=2 
                        //------------------------------------------------------
                        unsigned int i;
                        AT91C_BASE_PIOA->PIO_PER=(1<<0|1<<1);
                        AT91C_BASE_PIOA->PIO_OER=(1<<0|1<<1);
                        LED1OFF;
                        LED2OFF;
                        AT91C_BASE_RTTC->RTTC_RTMR=0x44000;
                        AT91C_BASE_RTTC->RTTC_RTAR=9;
                        while(1)
                         {
                         i=AT91C_BASE_RTTC->RTTC_RTSR;
                         if((i&0x1)==0x1)
                          {
                          LED1ON;
                          } 
                         if((i&0x2)==0x2)
                          {
                          LEDtoggle ();
                          }  
                         }
                        }
                        //----------------------
                        void LEDtoggle (void) 
                        {
                        if (AT91C_BASE_PIOA->PIO_ODSR & (1<<1)) 
                         { 
                         LED2ON;
                         } else {
                         LED2OFF;
                         }
                        }
                        فایل های پیوست شده

                        دیدگاه


                          #57
                          پاسخ : سوالات کتاب at91 (نص)

                          واقعا ممنونم :wow:
                          مشکلم حل شد اما متوجه نشدم چرا if اینجوری شد :eek:
                          درضمن هنوز مقدار AT91C_BASE_RTTC->RTTC_RTAR بعد از هشدار 9 میمونه و 0xffffffff نیمشه oo:

                          دیدگاه


                            #58
                            پاسخ : سوالات کتاب at91 (نص)

                            مشکلم حل شد اما متوجه نشدم چرا if اینجوری شد
                            سلام ...
                            من با اجازه از استاتید میگم امیدوارم درست باشه !!! -O< (ولی فکر کنم ... )
                            IF که شما نوشته اید در واقع انتساب(=) هست(یعنی گفتید عدد 1 رو داخل رجیستر RTT_SR ریخته بشه )اصلا این کار برای رجیستر خوندنی اشتباه هست چون رجیستر های خوندنی هیچ وقت نمیشه داخلش چیزی نوشت فقط میتونی از داخلش بخونی .. در واقع شما باید از عملگر تساوی (==)استفاده کنید یعنی به جای اینکه یک مساوی بگذاری دو تا مساوی بگذاری که این عملگر تساوی هست با این عملگر میتونید بررسی کنید مثلا بیت خاصی از یه رجیستر چه وضعیتی داره آیا صفر هست یا یک . برای این کار کافی هست که اون بیت مورد نظر خودتون رو با یک اند کنید .
                            مثلا در همین کد زیر :

                            کد:
                            i=AT91C_BASE_RTTC->RTTC_RTSR;
                             if((i&0x1)==0x1)
                            همون طور که میبینید ابتدا محتویات رجیستر RTT_SR خونده شده و در داخل یه متغیر به نام i ریخته شده البته باید متغیر 32 بیتی باشه چون رجیستر 32 بیتی هست وگرنه قسمتی از اطلاعات رجیستر پاک میشه ( البته نمیدونم حالا این unsigned int رو چرا تو کتاب جعفر نژاد قمی نوشته تعداد بیت هاش 16 تا 32 هست خوب یکی رو مگه نباید مینوشت ؟؟ یا 16 یا 32 )
                            حالا همون طور که میدونید بیت 0 ام از رجیستر RTT_SR اسمش ALMS هست اگه این بیت 1 بشه یعنی مقدار شمارنده تایمر با مقدار رجیستر هشدار که RTT_AR هست برابر شده بنابراین در برنامه بیت 0 ام از رجیستر خوندنی RTT_SR رو با عدد یک اندش کرده از طرفی حاصل این اند زمانی یک میشه که بیت ALARM در رجیستر RTT_SR برابر با یک بشه که در واقع هشدار رخ داده و شرط IF درست میشه !!! و میره داخل حلقه IF و کاراش رو میکنه !!!
                            مصادیق اظهار محبت به همسر
                            بررسی مسائل جنسی در زندگی زناشویی(فایل صوتی)
                            ویژگی های خانواده سالم - مصادیق احترام (فایل صوتی)
                            اثر قصه گویی برای کودکان

                            دیدگاه


                              #59
                              پاسخ : سوالات کتاب at91 (نص)

                              سلام.مرسی علی جان.اما من در برنامه اصلی همون == مساوی گذاشته بودم اینجا که خواستم تایپ کنم اشتباه کردم.دستور if قبلا اینطور بود

                              ;(if(AT91C_BASE_RTTC->RTTC_RTSR==1
                              که جواب نمیداد و هشداری رخ نمیداد اما حالا که نوشتم
                              ;(if((AT91C_BASE_RTTC->RTTC_RTSR&0x1==0x1
                              هشدار شناسایی کرد اما در صورتی که به نظرم با دستور بالا فرقی نداره!ولی نمیدونم چرا رجیستر هشدار مقدارش عوض نمیشه و روی 9 میمونه

                              دیدگاه


                                #60
                                پاسخ : سوالات کتاب at91 (نص)

                                نوشته اصلی توسط ali_abc

                                ( البته نمیدونم حالا این unsigned int رو چرا تو کتاب جعفر نژاد قمی نوشته تعداد بیت هاش 16 تا 32 هست خوب یکی رو مگه نباید مینوشت ؟؟ یا 16 یا 32 )
                                سلام
                                متغییر int در کامپایلر های میکروهای 8 بیتی و16 بیتی به صورت 16 بیتی می باشد و 32 بیتی نمی باشد مثل کدویژن. اما در کامپایلرهای میکروهای 32 بیتی متغییر int به صورت 32 بیتی می باشد و متغییر short به صورت 16 بیتی می باشد.

                                دیدگاه

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