اطلاعیه

Collapse
No announcement yet.

SPI در CCS(یک)+درخواست کمک

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

    SPI در CCS(یک)+درخواست کمک

    برای راه اندازی مد SPI در CCS 2 نوع از دستورات را میتوان به کار برد :
    SETUP_SPI(mode )
    #use spi (options) + SPI_XFER( )


    من به ترتیب سوالاتم رو می پرسم

    در دستور اول بجای مد پارامترهای زیر را می توان قرار داد
    SPI_MASTER, SPI_SLAVE, SPI_SS_DISABLED
    SPI_L_TO_H, SPI_H_TO_L
    SPI_CLK_DIV_4, SPI_CLK_DIV_16,
    SPI_CLK_DIV_64, SPI_CLK_T2
    خط اول : اولی برای قرار دادن میکرو در حالت مستر دومی اسلیو و سومی برای غیر فعال کردن پورت SPI
    خط دوم: این جا رو نمی دونم میشه بگین؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    و سوم و چهارم : فقط می دونم واسه کانفیگ کردن سرعت کلاک هست اگه می دونید هر کدوم معادل چه قدرن بگید ؟؟؟؟؟؟؟
    سوال دیگه اینکه آیا کدوم یک از اینها اختیاری هستند؟؟؟؟؟؟؟؟؟؟؟

    بعد زیر مجموعه ی این دستور دستورات زیر است
    SPI_DATA_IS_IN( )
    SPI_READ( )
    SPI_WRITE( )
    از دستور های بالا اولی رو نمیدونم اگه کسی میدونه می شه کمک کنه و بگه چی هست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    دومی و سومی هم به ترتیب برای دریافت و انتقال داده ی 8 بیتی به میکرو است.
    در اینجا اگه کسی مطلبی داره که میتونه بیشتر کمک کنه میشه بگه ممنون میشم. راستی دستور دوم رو در یک سوال جداگانه میپرسم تا
    مباحث قاطی نشن.

    #2
    پاسخ : SPI در CCS(یک)+درخواست کمک

    پارامتر های SPI_L_TO_H و SPI_H_TO_L برای تعیین زمان نمونه برداری هستن . در پروتکل SPI دیتا میتونه در لبه بالا رونده کلاک (SPI_L_TO_H ) یا در لبه پایین رونده کلاک (SPI_H_TO_L ) نمونه برداری بشه . شما باید یکی رو انتخاب کنی.
    دستورات CLK_DIV_64‎ و... همونطور که گفتی واسه تعیین سرعت تبادل اطلاعات به کار میرن.
    فکر نکنم اختیاری داشته باشه . شما مجبورید که از هرکدوم از مجموعه پارامتر های بالا یکی رو انتخاب کنید و بنویسید. (با علامت ‎|‎ از هم جداشون کنید. مثل
    setup_spi(SPI_MASTER|SPI_H_TO_L|CLK_DIV_64)
    تابع SPI_DATA_IS_IN مقدار بافر ورودی پورت SPI رو چک میکنه. اگه دیتایی دریافت شده بود مقدار 1 رو برمیگردونه و در صورت خالی بودن بافر ورودی مقدار0 رو برمیگردونه .

    دیدگاه


      #3
      پاسخ : SPI در CCS(یک)+درخواست کمک

      سلام

      اون دستورات
      SPI_CLK_DIV_4, SPI_CLK_DIV_16,
      SPI_CLK_DIV_64, SPI_CLK_T2
      میشه بگین هر کدوم چه سرعتی رو مشخص می کنن؟

      دیدگاه


        #4
        پاسخ : SPI در CCS(یک)+درخواست کمک

        Fosc/4 , Fosc/16 , Fosc/64
        و SPI_CLK_T2 هم تایمر2 رو به عنوان منبع کلاک SPI انتخاب میکنه.

        دیدگاه


          #5
          پاسخ : SPI در CCS(یک)+درخواست کمک

          سلام
          نوشته اصلی توسط محمد ایجی
          Fosc/4 , Fosc/16 , Fosc/64
          و SPI_CLK_T2 هم تایمر2 رو به عنوان منبع کلاک SPI انتخاب میکنه.
          سرعت کلاک یعنی هرچیبیشتر باشه سرعت انتقال بیشتره دیگه ؟
          با توجه به این مقادیر که شما گفتید Fosc/4 بیشترین سرعت رو داره ؟
          برای استفاده از سرعت بالا محدودیت هایی داریم ؟
          زمان تنها واحد حقیقی اندازه گیریه
          زمان وجود ماده رو اثبات میکنه
          بدون زمان هیچکدوم ما وجود نخواهیم داشت
          زمان یکتاست

          دیدگاه


            #6
            پاسخ : SPI در CCS(یک)+درخواست کمک

            نوشته اصلی توسط Robo-amir
            سلامسرعت کلاک یعنی هرچیبیشتر باشه سرعت انتقال بیشتره دیگه ؟
            با توجه به این مقادیر که شما گفتید Fosc/4 بیشترین سرعت رو داره ؟
            برای استفاده از سرعت بالا محدودیت هایی داریم ؟
            بله . کلاک بالاتر یعنی سرعت بیشتر
            تنها محدودیت در سرعت برمیگرده به وسیله slave که تا چه حد سرعت رو ساپورت بکنه

            دیدگاه


              #7
              پاسخ : SPI در CCS(یک)+درخواست کمک

              سلام
              با توجه به مطالبی که من تو بخش AVR گشتم :
              نقل قول از: shahinbahari در جولای 30, 2010, 0123 pm
              مستر اول اسلیو انتخابی رو فعال میکنه.بعد یه عددی رو برای اسلیو میفرسته.با این کار پالس شروع به کار میکنه.همزمان با اینکه مستر یه عددی رو برای اسلیو میفرسته اسلیو هم دیتا رو برای مستر میفرسته.وقتی مستر ارسال داده رو تموم کرد پالس رو متوقف میکنه و داده ای که اسلیو فرستاده رو تو ریجستر SPDR میزاره.

              حالا اگه من بخوام اطلاعاتی رو از روی یه EEPROM بخونم باید اول پیغامی رو به Slave که همون EEPROM هست بفرستم تا برام دیتای مورد مورد نظر رو بفرسته ؟
              تابع زیر هم داره این کارو می کنه ؟
              BYTE read_ext_eeprom(EEPROM_ADDRESS address)
              {
              BYTE data;
              output_high(EEPROM_SELECT);
              spi_write(0x18);
              spi_write(address);
              data=spi_read(0);
              output_low(EEPROM_SELECT);
              return(data);
              }
              زمان تنها واحد حقیقی اندازه گیریه
              زمان وجود ماده رو اثبات میکنه
              بدون زمان هیچکدوم ما وجود نخواهیم داشت
              زمان یکتاست

              دیدگاه


                #8
                پاسخ : SPI در CCS(یک)+درخواست کمک

                بله تابع میاد یک آدرس از شما میگیره و محتویات اونو برمیگردونه . عدد 0x18 احتمالا برای eeprom معنی و مفهوم خاصی داره (باید به دیتاشیت مراجعه کنید) . مثلا ممکنه کد خاصی رو تعیین کنه یا یک رجیستر خاصی رو مقدار دهی کنه .

                دیدگاه


                  #9
                  پاسخ : SPI در CCS(یک)+درخواست کمک

                  سسلام
                  نوشته اصلی توسط محمد ایجی
                  Fosc/4 , Fosc/16 , Fosc/64
                  و SPI_CLK_T2 هم تایمر2 رو به عنوان منبع کلاک SPI انتخاب میکنه.
                  اگه از تایمر دو برای کلاک استفاده کنم روی روند کار میکرو هم تاثیری داره ؟
                  فرکانس کاک رو با توجه به مقدار Overflow تایمر تعیین میشه دیگه؟
                  اگه همزمان از تایمر دو برای کلاک استفاده بشه تو زیر برنامه ی تایمر تو هم دستوراتی اجرا بشه مشکلی که پیش نمی یاد ؟
                  ممنون
                  زمان تنها واحد حقیقی اندازه گیریه
                  زمان وجود ماده رو اثبات میکنه
                  بدون زمان هیچکدوم ما وجود نخواهیم داشت
                  زمان یکتاست

                  دیدگاه


                    #10
                    پاسخ : SPI در CCS(یک)+درخواست کمک

                    نوشته اصلی توسط Robo-amir
                    سسلاماگه از تایمر دو برای کلاک استفاده کنم روی روند کار میکرو هم تاثیری داره ؟
                    فرکانس کاک رو با توجه به مقدار Overflow تایمر تعیین میشه دیگه؟
                    اگه همزمان از تایمر دو برای کلاک استفاده بشه تو زیر برنامه ی تایمر تو هم دستوراتی اجرا بشه مشکلی که پیش نمی یاد ؟
                    ممنون
                    سلام
                    استفاده از تایمر 2 به عنوان منبع کلاک برای بخش spi در روند اجرای برنمه های شما هیچ تاثیری نخواهد گذاشت . این کلاک با توجه به مقدار رجیستر pr2 و زمان سرریز تهیه می گردد که در دیتا شیت هر میکروکنترلری به طور مفصل توضیح داده شده است . همچنین اگر شما در سرویس وقفه تایمر2 نیز دستوراتی را قرار دهید برای ماژول SPI مشکلی پیش نخواهد آمد...

                    دیدگاه

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