اطلاعیه

Collapse
No announcement yet.

چگونه در i2c مستر و اسلیو رو مشخص کنم؟

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

    چگونه در i2c مستر و اسلیو رو مشخص کنم؟

    من یه اتمگا 32 رو مستر کردم و اتمگا 8 و اتمگا 16 رو اسلیو کردم.
    حالا چجوری باید حالیشون کنم که کدوم اسلیو و کدوم مستر هست؟یعنی به چه سبکی آدرس دهی کنم؟
    مثلا من با دستور
    I2csend &h20, A
    از اتمگا 32 مقدار a رو میفرستم ،و با دستور
    I2creceive &h20 , A
    مقدار a رو دریافت میکنم برای اتمگا 16
    و با دستور
    I2creceive &h10 , A
    مقدار a رو دریافت میکنم برای اتمگا 8
    .
    حالا نمیدونم چرا وقتی که من مقدار a رو برای h20 &میفرستم برای اتمگا 16 ،
    ولی اتمگا 8 هم با اینکه آدرسش h10& هست ،ولی مقدار a رو دریافت میکنه.
    دوستان من تو بسکام چجوری باید آدرس دهی کنم تا یه اطلاعت رو برای میکرو ی خاص بفرستم؟
    انجمن رو هم گشتم ولی به جواب سوالم نرسیدم.ممنون
    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
    (پيش به سوي هدف)

    #2
    پاسخ : چگونه در i2c مستر و اسلیو رو مشخص کنم؟

    نوشته اصلی توسط hosseinam1370
    من یه اتمگا 32 رو مستر کردم و اتمگا 8 و اتمگا 16 رو اسلیو کردم.
    حالا چجوری باید حالیشون کنم که کدوم اسلیو و کدوم مستر هست؟یعنی به چه سبکی آدرس دهی کنم؟
    مثلا من با دستور
    I2csend &h20, A
    از اتمگا 32 مقدار a رو میفرستم ،و با دستور
    I2creceive &h20 , A
    مقدار a رو دریافت میکنم برای اتمگا 16
    و با دستور
    I2creceive &h10 , A
    مقدار a رو دریافت میکنم برای اتمگا 8
    .
    حالا نمیدونم چرا وقتی که من مقدار a رو برای h20 &میفرستم برای اتمگا 16 ،
    ولی اتمگا 8 هم با اینکه آدرسش h10& هست ،ولی مقدار a رو دریافت میکنه.
    دوستان من تو بسکام چجوری باید آدرس دهی کنم تا یه اطلاعت رو برای میکرو ی خاص بفرستم؟
    انجمن رو هم گشتم ولی به جواب سوالم نرسیدم.ممنون
    شما ارتباط i2c رو از کجا یاد گرفتی ؟؟ منم دنبالشم .. دیتا شیت ؟؟؟
    یه ماژول RTC ساختم اما مدتهای تستش نکردم چون با i2c کار میکنه ..... :biggrin:

    دیدگاه


      #3
      پاسخ : چگونه در i2c مستر و اسلیو رو مشخص کنم؟

      نوشته اصلی توسط navid.h
      شما ارتباط i2c رو از کجا یاد گرفتی ؟؟ منم دنبالشم .. دیتا شیت ؟؟؟
      یه ماژول RTC ساختم اما مدتهای تستش نکردم چون با i2c کار میکنه ..... :biggrin:
      کتاب دیگه.
      یا این
      http://www.4shared.com/file/_KMsqdqU..._learning.html
      به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
      (پيش به سوي هدف)

      دیدگاه


        #4
        پاسخ : چگونه در i2c مستر و اسلیو رو مشخص کنم؟

        نوشته اصلی توسط hosseinam1370
        من یه اتمگا 32 رو مستر کردم و اتمگا 8 و اتمگا 16 رو اسلیو کردم.
        حالا چجوری باید حالیشون کنم که کدوم اسلیو و کدوم مستر هست؟یعنی به چه سبکی آدرس دهی کنم؟
        خوب بقیه رو کانفیگ میکنی که فقط یکی مستر باشه
        تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
        داشتن عقله زيادتر از دیگر آدم ها است

        دیدگاه


          #5
          پاسخ : چگونه در i2c مستر و اسلیو رو مشخص کنم؟

          نوشته اصلی توسط aliila
          خوب یکی رو کانفیگ میکنی که مستر باشه
          ببخشیدآ ،آخه چجوری؟
          اصلا دستوری برای مشخص کردن مستر یا اسلیو تو بسکام وجود نداره که.برای i2c میگم.
          به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
          (پيش به سوي هدف)

          دیدگاه


            #6
            پاسخ : چگونه در i2c مستر و اسلیو رو مشخص کنم؟

            کد:
            [left]
            CONFIG TWISLAVE = address , BTR = value , BITRATE = value , SAVE=option [,GENCALL=value] [,USERACK=ack]
            
            
            
            [/left]
            http://avrhelp.mcselec.com/index.html?configtwislave.htm
            تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
            داشتن عقله زيادتر از دیگر آدم ها است

            دیدگاه


              #7
              پاسخ : چگونه در i2c مستر و اسلیو رو مشخص کنم؟

              :confused یخورده گیج شدم.
              یکم توضیح میدادی خوب بودآ.کل انجمن و نت رو گشتم ولی کانفیگ کردن twi رو پیدا نکردم.
              تازه اسلیو رو چیکار کنم؟
              یه ذره توضیح میدادی خوب بود.
              ممنون
              به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
              (پيش به سوي هدف)

              دیدگاه


                #8
                پاسخ : چگونه در i2c مستر و اسلیو رو مشخص کنم؟

                پیش فرض avr بر اینه که میکرو مستر است . چون در حقیقت میکرو باید با سنسور ها ارتباط داشته باشه .
                ولی اگه شما بخوای چندتا میکرو را بهم ارتباط بدی اون یکی که قرار مستر باشه بهش دست نمی زنی و بقیه میکرو ها رو با کد زیر اسلیو میکنی


                اون کدی که بال گفتم از یک کتابخانه دیگست . ولی اصلی ترین کتابخانه برای تبدیل کردن میکرو به اسلیو این I2C-Slave است .


                Config I2cslave = &B01000000 ' same as &H40

                Optional use : CONFIG I2CSLAVE = address, INT= int , TIMER = tmr



                این هم یکم توضیحات اضافه






                The I2C-Slave library is intended to create I2C slave chips. This is an add-on library that is not included by default. It is a commercial add on library. It is available from MCS Electronics



                All BASCOM I2C routines are master I2C routines. The AVR is a fast chip and allows to implement the I2C slave protocol.



                You can control the chips with the BASCOM I2C statements like I2CINIT, I2CSEND, I2CRECEIVE, I2CWBYTE, etc. Please consult the BASCOM Help file for using I2C in master mode.





                Before you begin

                Copy the i2cslave.lib and i2cslave.lbx files into the BASCOM-AVR\LIB directory.

                The i2cslave.lib file contains the ASM source. The i2cslave.lbx file contains the compiled ASM source.





                Slave address

                Every I2C device must have an address so it can be addressed by the master I2C routines.

                When you write to an I2C-slave chip the least significant bit (bit0) is used to specify if we want to read from the chip or that we want to write to the chip.

                When you specify the slave address, do not use bit 0 in the address!





                For example a PCF8574 has address &H40. To write to the chip use &H40, to read from the chip, use &H41. When emulating a PCF8574 we would specify address &H40.





                Use the CONFIG statement to specify the slave address:



                Config I2cslave = &B01000000 ' same as &H40

                Optional use : CONFIG I2CSLAVE = address, INT= int , TIMER = tmr





                تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
                داشتن عقله زيادتر از دیگر آدم ها است

                دیدگاه


                  #9
                  پاسخ : چگونه در i2c مستر و اسلیو رو مشخص کنم؟

                  کد:
                  '-------------------------------------------------------------------------------
                  ' (c) 2004 MCS Electronics
                  ' This demo shows an example of the TWI
                  ' Not all AVR chips have TWI (hardware I2C)
                  '-------------------------------------------------------------------------------
                   
                  'The chip will work in TWI/I2C master mode
                  'Connected is a PCF8574A 8-bits port extender
                   
                   
                  $regfile = "M88def.dat" ' the used chip
                  $crystal = 8000000 ' frequency used
                  $baud = 19200 ' baud rate
                  $hwstack = 32 ' default use 32 for the hardware stack
                  $swstack = 10 ' default use 10 for the SW stack
                  $framesize = 40 ' default use 40 for the frame space
                   
                   
                  $lib "i2c_twi.lbx" ' we do not use software emulated I2C but the TWI
                   
                  Config Scl = Portc.5 ' we need to provide the SCL pin name
                  Config Sda = Portc.4 ' we need to provide the SDA pin name
                   
                  'On the Mega88, On the PCF8574A
                  'scl=PC5 , pin 28 pin 14
                  'sda=PC4 , pin 27 pin 15
                   
                   
                  I2cinit ' we need to set the pins in the proper state
                   
                   
                  Config Twi = 100000 ' wanted clock frequency
                  'will set TWBR and TWSR
                  'Twbr = 12 'bit rate register
                  'Twsr = 0 'pre scaler bits
                   
                  Dim B As Byte , X As Byte
                  Print "TWI master"
                  Do
                   Incr B ' increase value
                   I2csend &H0 , B ' send the value to general call address
                   
                   I2csend &H70 , B ' send the value
                   Print "Error : " ; Err ' show error status
                   I2creceive &H70 , X ' get a byte
                   Print X ; " " ; Err ' show error
                   Waitms 500 'wait a bit
                  Loop
                  End

                  در این کد
                  کد:
                  $lib "i2c_twi.lbx" ' we do not use software emulated I2C but the TWI
                  نوشته که ما نمی خوام i2s رو شبیه سازی کنیم میخواهیم از twi استفاده کنیم ؟ پس آیا وقتی از توابع مثلا I2csend استفاده میکنیم در حقیقت بسکام پروتکل رو نرم افزاری شبیه سازی میکنه و از سخت افزار داخلی استفاده نمی کنه ؟ oo: oo: oo: oo:
                  تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
                  داشتن عقله زيادتر از دیگر آدم ها است

                  دیدگاه


                    #10
                    پاسخ : چگونه در i2c مستر و اسلیو رو مشخص کنم؟

                    دوستان بنده نیز با این لایب مشکل دارم
                    روشی برای تبدیل میکرو به slave اراعه بدین
                    (بیسکام)

                    [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                    دیدگاه


                      #11
                      پاسخ : چگونه در i2c مستر و اسلیو رو مشخص کنم؟

                      بعله دوست عزیز
                      بیسکام تماما نرم افزاری کا ر میکنه
                      حالت نرم افزاری در مستر ممکنه جواب بده ولی در مد اسلیو جواب گو نیست
                      باید وقفه دیتا فعال شده و هنگام دریافت دیتا به زیر برنامه وقفه رجوع بشه
                      که ظاهرا این لایب پولی تشیف داره
                      [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                      دیدگاه

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