اطلاعیه

Collapse
No announcement yet.

رجیستر در میکروکنترلر ها

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

    رجیستر در میکروکنترلر ها

    دوستان ، من با بسکام کار میکنم ، و بعد اتمام این پروژه میرم سراغ سی ، کدویژن.

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





    کلا هنوز جا نیوفتاده که با رجیسترها میشه چیکار کرد، دوستان اگه روشنم کنن بسیار ممنون میشم.
    به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
    (پیش به سوی هدف)

    #2
    پاسخ : رجیستر در میکروکنترلر ها

    سلام
    دوست عزیز من با بسکام کارنکردم و نمیدونم اصولا برنامه نویسی تو محیط بسکام به چه صورته ولی تمامی زبان های برنامه نویسی که برای میکرو استفاده میشن اصول کارشون یکیه
    ببین شما فرض کن میخوای به یه وسیله بگی کاری رو برات انجام بده این وسیله دارای یه پنله که یه سری کلید روش نصبه و با روشن یا خاموش کردن هر کدوم میتونی مشخص کنی اون آپشن فعال باشه یا نه
    رجیستر هم دقیقا همینطوره
    رجیستر (در اینجا هشت بیتی در نظر گرفته شده) دارای 8 خونه است که در حالت کلی وظیفه ذخیره اطلاعات رو بر عهده دارن
    حالا شما ممکنه ازش به عنوان حافظه استفاده کنی یا اینکه بیای و مثل همون مثال کلید ها به هر رجیستری یه آپشنی رو نسبت بدی
    حالا اگه حافظه بود که اطلاعات رو روش ذخیره میکنی و تمام
    ولی اگه رجیستر شما برای تعیین آپشن های بخش های مختلف آیسی باشه هر کدوم رو که تو دیتاشیت نگاه کنی یه گزینه رو فعال یا غیرفعال میکنن(بسته به صفر یا یک بودن)
    پس با تنظیم مقدار رجیستر ها شما بخش های مختلف رو دقیقا با اون عملکردی که میخوای و از روی دیتاشیت و جداول بهش رسیدی رو بدست میاری
    امیدوارم متوجه شده باشی

    دیدگاه


      #3
      پاسخ : رجیستر در میکروکنترلر ها

      ^
      |
      |
      +
      سلام
      هروقت اومدی سراغ c منبع آموزشی که دستورات پیش پردازنده رو پوشش میده مطالعه کن و از همون اول خودتو سخت درگیر تحلیل هدر اون ماژول یا ic که هدف هست کن اینطوری حسابی کاربرد رجیستر و اهمیت مقدار دهی و خواندن مقدار در هر لحظه رو متوجه میشی.
      رجیسترها چه یک بیت چه هشت بیت چه شونزده بیت یک سری وظیفه دارن که با دادن مقدار در ابتدای برنامه نحوه کارکرد رو مشخص میکنیم.
      جدیدترین ویرایش توسط hayahu; ۲۰:۱۲ ۱۳۹۵/۰۳/۰۵.

      دیدگاه


        #4
        پاسخ : رجیستر در میکروکنترلر ها

        نوشته اصلی توسط فرید الدین میرزایی نمایش پست ها
        سلام
        دوست عزیز من با بسکام کارنکردم و نمیدونم اصولا برنامه نویسی تو محیط بسکام به چه صورته ولی تمامی زبان های برنامه نویسی که برای میکرو استفاده میشن اصول کارشون یکیه
        ببین شما فرض کن میخوای به یه وسیله بگی کاری رو برات انجام بده این وسیله دارای یه پنله که یه سری کلید روش نصبه و با روشن یا خاموش کردن هر کدوم میتونی مشخص کنی اون آپشن فعال باشه یا نه
        رجیستر هم دقیقا همینطوره
        رجیستر (در اینجا هشت بیتی در نظر گرفته شده) دارای 8 خونه است که در حالت کلی وظیفه ذخیره اطلاعات رو بر عهده دارن
        حالا شما ممکنه ازش به عنوان حافظه استفاده کنی یا اینکه بیای و مثل همون مثال کلید ها به هر رجیستری یه آپشنی رو نسبت بدی
        حالا اگه حافظه بود که اطلاعات رو روش ذخیره میکنی و تمام
        ولی اگه رجیستر شما برای تعیین آپشن های بخش های مختلف آیسی باشه هر کدوم رو که تو دیتاشیت نگاه کنی یه گزینه رو فعال یا غیرفعال میکنن(بسته به صفر یا یک بودن)
        پس با تنظیم مقدار رجیستر ها شما بخش های مختلف رو دقیقا با اون عملکردی که میخوای و از روی دیتاشیت و جداول بهش رسیدی رو بدست میاری
        امیدوارم متوجه شده باشی
        ممنون از دوستان.
        الان فهمیدم که با رجیستر میتونه دوتا کار انجام داد، یا مقدار یک یا صفر بدیم بهش و یکی از امکانات میکرو رو خاموش یا روشن کنیم،
        یکی دیگه از راهها اینه که تز این 8 بیت به عنوان ذخیره اطلاعات استفاده کنیم.

        حالا سوال اینه که چرا اصلا 8 بیت؟ چرا 9 بیت یا 10 بیت یا بیشتر بیت نه؟
        و سوال دیگه اینکه چه اطلاعاتی رو روش ذخیره کرد؟
        به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
        (پیش به سوی هدف)

        دیدگاه


          #5
          پاسخ : رجیستر در میکروکنترلر ها

          نوشته اصلی توسط hosseinam نمایش پست ها
          دوستان ، من با بسکام کار میکنم ، و بعد اتمام این پروژه میرم سراغ سی ، کدویژن.

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





          کلا هنوز جا نیوفتاده که با رجیسترها میشه چیکار کرد، دوستان اگه روشنم کنن بسیار ممنون میشم.
          با سلام و درود
          یکی از دلایلی که باعث محبوبیت آردوینو شده همین سادگی در عین کارایی است و اگر با آردوینو شروع به کار کنید بعید می دانم پشیمان شوید. شما با زبان C یا ++C می توانید برای آردوینو برنامه نویسی کنید ولی دستوراتی که استفاده می شود ساده تر است.


          مجموعه آموزش های برنامه نویسی آردوینو (ARDUINO) با محوریت پروژه های رباتیک:

          faradars.org/courses/fvrd9311-an-introduction-arduino-programming-video-tutorial

          دیدگاه


            #6
            پاسخ : رجیستر در میکروکنترلر ها

            نوشته اصلی توسط hayahu نمایش پست ها
            ^
            |
            |
            +
            سلام
            هروقت اومدی سراغ c منبع آموزشی که دستورات پیش پردازنده رو پوشش میده مطالعه کن و از همون اول خودتو سخت درگیر تحلیل هدر اون ماژول یا ic که هدف هست کن اینطوری حسابی کاربرد رجیستر و اهمیت مقدار دهی و خواندن مقدار در هر لحظه رو متوجه میشی.
            رجیسترها چه یک بیت چه هشت بیت چه شونزده بیت یک سری وظیفه دارن که با دادن مقدار در ابتدای برنامه نحوه کارکرد رو مشخص میکنیم.
            میشه لطف کنید یه هدر رو برا مثل قرار بدید؟ حداقل لینکشو.
            به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
            (پیش به سوی هدف)

            دیدگاه


              #7
              پاسخ : رجیستر در میکروکنترلر ها

              تودسته رجیسترهای عمومی مقادیر برای نحوه کانفیک میکرو نوشته میشه مثلا برای مگا 32 قسمت ADC داریم:
              رجیستر کنترلی ADMUX
              0 1 2 3 4 5 6 7
              MUX0 MUX1 MUX2 MUX3 MUX4 ADLAR REFS0 REFS1
              REFS0,1 از این دو بیت برای انتخاب ولتاژ مرجع ADC استفاده می کنیم که دارای چهار حالت می باشد:
              1. REFS0=0 و REFS1=0 در این حالت ولتاژی که روی پایه AREF است به عنوان ولتاژ مرجع انتخاب می شود.
              2. REFS0=1 و REFS1=0 در این حالت ولتاژ پایه AVCC به عنوان ولتاژ مرجع انتخاب می شود.
              3. REFS0=0 و REFS1=1 بدون استفاده
              4. REFS0=1 و REFS1=1 در این حالت ولتاژ مرجع داخلی 2.56 ولت انتخاب می شود.

              دقیق بودن ولتاژ مرجع در تبدیل کردن آنالوگ به دیجیتال نقش بسیار مهمی دارد. دقیق ترین ولتاژ مرجع همان 2.56 داخلی می باشد البته می توان با استفاده از تثبیت کننده های ولتاژ آن ولتاژ مرجع مورد نظر را ساخت و به پایه AREF داد.
              ADLAR از این بیت برای 8 یا 16 بیتی بودن مقدار خروجی ADC استفاده می شود. ADCH,ADCL
              MUX0-4 از بیت ها برای انتخاب کانال ورودی و نیز انتخاب بهره تفاضلی استفاده شده است.
              رجیستر ADCSRA
              0 1 2 3 4 5 6 7
              ADPS0 ADPS1 ADPS2 ADIE ADIF ADATE ADSC ADEN
              ADEN با یک کردن این بیت ADC فعال می شود.
              ADSC در مد عملکرد Single با نوشتن یک در این بیت، تبدیل شروع شده و پس از پایان تبدیل به صورت خودکار صفر می شود. در مد Free، یک کردن این بیت برای شروع تبدیل الزامیست.
              ADATE با یک کردن این بیت ADC می تواند به صورت اتوماتیک با لبه بالا رونده منبع تحریک کننده شروع به تبدیل کند. منیع تحریک توسط بیت های ADTS از رجیستر SFIOR انتخاب می شه
              ADIF بعد از اتمام تبدیل یا تغییر در رجستر داده ADC یک می شه (از یک شدن این بیت ما متوجه می شویم که عمل تبدیل تمام شده و حالا می توانیم مقدار دیجیتال تبدیل شده را بخوانیم)
              ADIE با یک کردن این بیت هرگاه عمل تبدیل به اتمام رسید یه وقفه ای صادر می شه که توسط آن زیر روال وقفه می توان مقدار داده ADC را خواند.
              ADPS0-3 از بیت ها برای تعیین پالس ساعت ADC مطابق جدول زیر استفاده می کنیم:
              تقسیم بر ADPS0 ADPS1 ADPS2
              2 0 0 0
              2 1 0 0
              4 0 1 0
              8 1 1 0
              16 0 0 1
              32 1 0 1
              64 0 1 1
              128 1 1 1
              رجیستر داده (ADCH,ADCL) ADC
              در این دو رجیستر اطلاعات خروجی ADC قرار دارند که در ADCL مقدرا سبک و در ADCH مقدار سنگین قرار دارد همچنین با استفاده از ADCW می توانیم محتوای هر دو متغییر را به صورت 16 بیتی بخوانیم.
              رجیستر SFIOR
              0 1 2 3 4 5 6 7
              PSR1 PSR2 PUD ACME - ADTS0 ADTS1 ADTS2
              از طریق بیت های ADTS0-2 می توان منبع تحریک برای شروع تبدیل را مطابق جدول زیر انتخاب کرد:
              منبع تحریک ADC ADTS0 ADTS1 ADTS2
              مد عملکرد آزاد 0 0 0
              تحریک از طریق مقایسه کننده آنالوگ 1 0 0
              تحریک از طریق وقفه خارجی صفر 0 1 0
              تحریک از طریق تایمر (شمارنده) صفر (در صورتی که نتیجه مقایسه برابر شود) 1 1 0
              تحریک از طریق تایمر (شمارنده) صفر (در صورت سریز شدن) 0 0 1
              تحریک از طریق تایمر (شمارنده) یک (در صورتی که نتیجه مقایسه B برابر شود) 1 0 1
              تحریک از طریق تایمر (شمارنده) یک (در صورت سریز شدن) 0 1 1
              تحریک از طریق حالت تسخیر تایمر (شمارنده) یک 1 1 1
              همه رجیسترهای مرتبط با هر المان همراه کاتالگ یا دیتاشیت اون قطعه توسط سازنده ارائه میشه که حدود 95 درصد ازین المانها دارای هدر فایل جهت اضافه کردن به فایل برنامه هستند . فقط تنظیم کردن این رجیسترها با نوشتن مقدار مورد نظر ما با الگو مجاز دیتاشیت هست.
              جدیدترین ویرایش توسط hayahu; ۰۰:۲۲ ۱۳۹۵/۰۳/۰۶.

              دیدگاه


                #8
                پاسخ : رجیستر در میکروکنترلر ها

                حالا فهمیدم چخبره و داستان چیه. خیلی ممنونم دوستان.
                حالا یه سوال دیگه، چرا مثلا یه مبدل adc دوتا رجیستر 8 تایی داره؟ چرا همشو یه رجیستر 16 تایی نکردن؟
                به سمت نور خورشید حرکت کن،تو میتونی تابش خورشید رو حس کنی ،حتی اگه کور باشی.
                (پیش به سوی هدف)

                دیدگاه


                  #9
                  پاسخ : رجیستر در میکروکنترلر ها

                  چون ساختار میکرو شما هشت بیتی است.
                  Cpu شما فقط میتونه با هشت بیت کار کنه و نه کمتر و نه بیشتر
                  یعنی کلا عملیات رو روی هشت بیت میتونه انجام بده.

                  دیدگاه


                    #10
                    پاسخ : رجیستر در میکروکنترلر ها

                    البته سی دستور 16بیتی کردن هم داره یعنی 8بیت با ارزش و 8بیت کم ارزش
                    یا اتصال رشته و محاسبه ویا ....
                    که با برنامه میشه اجرا کرد که نیاز به کلاک بیشتر و برنامه بهینه تر داره.

                    دیدگاه

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