اطلاعیه

Collapse
No announcement yet.

اتصال EEPROM سریال به میکرو

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

    اتصال EEPROM سریال به میکرو

    با سلام
    من یه چیپ AT24C02 گرفتم و با ارتباط I2C به میکرو اتصال دادمش ولی دیتایی که خونده می شه اون چیزی نیست که نوشته شده
    و ضمن اینکه اطلاعات خونده شده اشتباه هستش؛ با تغییر کلاک میکرو و تغییر DELAY مربوط به I2Cهم اطلاعات خونده شده تغییر می کنه(البته همچنان اطلاعات اشتباهی نشون داده می شه)
    اینم سورس برنامه
    $regfile = "m32def.dat"
    $crystal = 1000000
    Config Portd = Output
    Portd = 0
    Declare Sub Sub_write
    Declare Sub Sub_read
    Config Scl = Portc.0
    Config Sda = Portc.1
    Config I2cdelay = 1
    Const Eewrite = 160
    Const Eeread = 161
    Dim A As Byte
    Dim Vb As Byte
    Vb = &B10101010
    A = 255


    Call Sub_write : Wait 1
    Call Sub_read
    'Do
    'nop
    'nop
    'Loop
    End
    '**************
    Sub Sub_write
    I2cstart
    I2cwbyte Eewrite
    I2cwbyte &H12
    I2cwbyte Vb
    I2cstop
    Waitms 10
    End Sub Sub_write
    '******************
    Sub Sub_read
    I2cstart
    I2cwbyte Eewrite
    I2cwbyte &H12
    I2cstart
    I2cwbyte Eeread
    I2crbyte A , Nack
    I2cstop
    Portd = A
    End Sub
    دوستان لطفا بگن که مشکل از کجاست؟
    در ضمن من SAMPLE CODE های خود BASCOM رو هم تست کردم ولی بازم اطلاعات خونده شده اشتباه بود :angry:
    اگه کسی هستش که از این حافظه ها جواب گرفته لطفا یه SAMPLE CODE به من بده
    سپاس

    #2
    پاسخ : اتصال EEPROM سریال به میکرو

    سلام یه سوال هم من دارم.من هم یه 93c46 گرفتم 8 تا پایه داره و ارتباطش به صورت سریال هست.با کامپیوتر می تونم روش اطلاعات ذخیره کنم ولی با میکرو نمیشه.یه پایه کلاک داره یه D0 و یه D1 و...
    حالا چطوری این ارتباط سریال رو برقرار کنم.تو ارتباط سریال چطوری کلاک تعریف می کنن
    یه سوال دیگه راستش این ایسی و مشابهاش 93Cxx آیسی کیلومتر ماشینه من ایسی رو رو برد نتونستم پرگرم کنم و باید اونو در اورد.ولی کسایی هستن که در نم یارن ولی اطلاعاتشو عوض می کنن در این مورد هم راهنمایی می خوام
    tanx

    دیدگاه


      #3
      پاسخ : اتصال EEPROM سریال به میکرو

      نوشته اصلی توسط fuba
      با سلام
      من یه چیپ AT24C02 گرفتم و با ارتباط I2C به میکرو اتصال دادمش ولی دیتایی که خونده می شه اون چیزی نیست که نوشته شده
      و ضمن اینکه اطلاعات خونده شده اشتباه هستش؛ با تغییر کلاک میکرو و تغییر DELAY مربوط به I2Cهم اطلاعات خونده شده تغییر می کنه(البته همچنان اطلاعات اشتباهی نشون داده می شه)
      اینم سورس برنامه
      $regfile = "m32def.dat"
      $crystal = 1000000
      Config Portd = Output
      Portd = 0
      Declare Sub Sub_write
      Declare Sub Sub_read
      Config Scl = Portc.0
      Config Sda = Portc.1
      Config I2cdelay = 1
      Const Eewrite = 160
      Const Eeread = 161
      Dim A As Byte
      Dim Vb As Byte
      Vb = &B10101010
      A = 255


      Call Sub_write : Wait 1
      Call Sub_read
      'Do
      'nop
      'nop
      'Loop
      End
      '**************
      Sub Sub_write
      I2cstart
      I2cwbyte Eewrite
      I2cwbyte &H12
      I2cwbyte Vb
      I2cstop
      Waitms 10
      End Sub Sub_write
      '******************
      Sub Sub_read
      I2cstart
      I2cwbyte Eewrite
      I2cwbyte &H12
      I2cstart
      I2cwbyte Eeread
      I2crbyte A , Nack
      I2cstop
      Portd = A
      End Sub
      دوستان لطفا بگن که مشکل از کجاست؟
      در ضمن من SAMPLE CODE های خود BASCOM رو هم تست کردم ولی بازم اطلاعات خونده شده اشتباه بود :angry:
      اگه کسی هستش که از این حافظه ها جواب گرفته لطفا یه SAMPLE CODE به من بده
      سپاس

      پایه های 5 و 6 رو pull up کردی
      من از این حافظه ها با mega64 جواب گرفتم
      پول پ خیلی مهمه و باید نزدیک به پایه میکرو باشه!
      گاهی دلم برای چوپان دروغگو خیلی می سوزد.بیچاره 2 بار بیشتر دروغ نگفت انگشت
      نماشد... ولی ما هنوز صادق ترینیم

      دیدگاه


        #4
        پاسخ : اتصال EEPROM سریال به میکرو

        سلام ممنون از اینکه جواب دادید
        بله من پایه های 5 و 6 رو pull up هم کردم اما بازم جواب نمی ده
        میشه لطف کنید اون قسمتی از برنامه تون رو که مربوط به نوشتن و خوندن از eeprom هستش رو بهم بدین.اگه امکانش هست یه نگاهی به برنامه ای که نوشتم بندازین ببینید مشکلش از چیه
        واقعا بهش نیاز نیاز دارم هر کی اطلاعاتی داره لطفا دریغ نکنه :cry2:

        دیدگاه


          #5
          پاسخ : اتصال EEPROM سریال به میکرو

          سلام
          شما پایه های SCl, sda را از help کامپایلر bscom نگاه کردید اگه اینطوری هستش پایه را برعکس وصل کنید چون help اون اشتباه گفته و پایه ها را به صورت عکس معرفی کرده.
          شما پایه ها رو برعکس کنید درست میشه.
          من مدت ها قبل این مدار رو بستم و همین مشکل رو داشتم .

          موفق باشید

          دیدگاه


            #6
            پاسخ : اتصال EEPROM سریال به میکرو

            میشه لطفا یه برنامه نمونه بهم بدین فقط قسمتی رو که مربوط به خوندن و نوشتن eeprom هستش رو می گم.چون با عوض کردن ÷ایه ها هم مشکل حل نمی شه

            دیدگاه


              #7
              پاسخ : اتصال EEPROM سریال به میکرو

              نوشته اصلی توسط fuba
              میشه لطفا یه برنامه نمونه بهم بدین فقط قسمتی رو که مربوط به خوندن و نوشتن eeprom هستش رو می گم.چون با عوض کردن ÷ایه ها هم مشکل حل نمی شه
              سلام دوست عزیز
              آقا من هم مشکلی داشتم دقیقا شبیه به مشکل شما :biggrin:
              اول اینکه برنامه شما مشکلی نداره
              مشکل اصلی خود EEPROM هست شاید باورتون نشه ولی مشکل خود نامردش بود
              آقا با AT24C02 نمیشه من هم دلیلشو نمی دونم و لی همون برنامه ای نوشته بودم و با AT24C02 جواد نداد با AT24C256 جواب داد.
              حتی تو پروتیوس هم که شبیه سازی می کردم با AT24C02 جواب نمی داد و با AT24C256 جواب داد.
              eeprom تو عوض کن و یه AT24C256 بزار حتما مشکلت حل میشه
              من خودم 15 روز با این مسئله کلنجار رفتم و آخرش هم نشد که نشد تا اینکه به ذهنم خورد که یه AT24C256 بزارم.
              :nice:

              دیدگاه


                #8
                پاسخ : اتصال EEPROM سریال به میکرو

                شکل اصلی خود EEPROM هست شاید باورتون نشه ولی مشکل خود نامردش بود
                آقا با AT24C02 نمیشه من هم دلیلشو نمی دونم و لی همون برنامه ای نوشته بودم و با AT24C02 جواد نداد با AT24C256 جواب داد.
                حتی تو پروتیوس هم که شبیه سازی می کردم با AT24C02 جواب نمی داد و با AT24C256 جواب داد.
                eeprom تو عوض کن و یه AT24C256 بزار حتما مشکلت حل میشه
                من خودم 15 روز با این مسئله کلنجار رفتم و آخرش هم نشد که نشد تا اینکه به ذهنم خورد که یه AT24C256 بزارم.
                سلام
                اینکه شما می فرمائید که AT24C02 جواب نمی ده اما AT24C256 جواب می ده فکر کنم بخاطر این بوده که شما به Adress low byte و adress high byte توجه نکردین تو at24c02 فقط یه بایت واسه آدرس دهی بکار می ره اما تو AT24C256 دو بایت :surprised:
                تازه من با هر چیپی حتی SIMULATION هم می کنم جواب نمی ده یعنی اطلاعات اصلا نوشته نمی شه و فقط 255 خونده می شه.تو APLICATION NOTE های سایت BASCOM هم یه SAMPLE بود که اونم تو شبیه سازی جواب نداد چه برسه به عملی (تو اون مدار از چیپ AT24LC65 استفاده شده بود :cry2:
                راستی شما بدون اینکه برنامه تون رو تغییر بدین از AT24C256 جواب گرفتین :question:

                دیدگاه


                  #9
                  پاسخ : اتصال EEPROM سریال به میکرو

                  سلام
                  این سورس برنامه ای هست که من جواب گرفتم البته با برنامه شما زیاد فرقی نمی کنه
                  پس باید سخت افزارتو یکم دست کاری کنی
                  این برنامه write

                  $regfile = "m64def.dat"
                  $crystal = 8000000

                  Config Porta = Output
                  Config Portb = Output
                  Config Portg = Output
                  Config Portf = Output
                  Config Portd = Output
                  Config Porte = Output
                  Config Portc = Output
                  Config Scl = Portd.0
                  Config Sda = Portd.1
                  Config I2cdelay = 5


                  Declare Sub Writeeepromserial
                  Const Eewrite = 166
                  Const Eeread = 167

                  Dim Highaddress As Byte
                  Dim Lowaddress As Byte
                  Dim Address As Word
                  Dim A As Byte

                  Main:
                  Address = &H000F
                  A = &HB5
                  Highaddress = High(address)
                  Lowaddress = Low(address)
                  Call Writeeepromserial
                  End


                  Sub Writeeepromserial
                  I2cstart
                  I2cwbyte Eewrite
                  I2cwbyte Highaddress
                  I2cwbyte Lowaddress
                  I2cwbyte A
                  I2cstop
                  Waitms 10
                  End Sub Writeeepromserial

                  اینم برنامه read
                  $regfile = "m64def.dat"
                  $crystal = 8000000

                  Config Porta = Output
                  Config Portb = Output
                  Config Portg = Output
                  Config Portf = Output
                  Config Portd = Output
                  Config Porte = Output
                  Config Portc = Output
                  Config Scl = Portd.0
                  Config Sda = Portd.1
                  Config I2cdelay = 5


                  Declare Sub Readeepromserial
                  Const Eewrite = 166
                  Const Eeread = 167

                  Dim Highaddress As Byte
                  Dim Lowaddress As Byte
                  Dim Address As Word
                  Dim A As Byte

                  Portc = 0

                  Main:
                  Do
                  Address = &H000F
                  Highaddress = High(address)
                  Lowaddress = Low(address)
                  Call Readeepromserial
                  Porta = Highaddress
                  Portb = Lowaddress
                  Portc = A
                  Loop
                  End


                  Sub Readeepromserial
                  I2cstart
                  I2cwbyte Eewrite
                  I2cwbyte Highaddress
                  I2cwbyte Lowaddress
                  I2cstart
                  I2cwbyte Eeread
                  I2crbyte A , Nack
                  I2cstop
                  End Sub Readeepromserial

                  گاهی دلم برای چوپان دروغگو خیلی می سوزد.بیچاره 2 بار بیشتر دروغ نگفت انگشت
                  نماشد... ولی ما هنوز صادق ترینیم

                  دیدگاه


                    #10
                    پاسخ : اتصال EEPROM سریال به میکرو

                    سلام
                    دو تا سوال در مورد 24c02 از اساتید دارم یکی اینکه چرا بعضی از دیتا شیت ها پایه 7 رو wp معرفی کردن بعضی دیگه nc ، من تو pcb برا آوردن gnd تا اونجا مشکل دارم رو هوا بمونه ایراد داره؟
                    دومی اینکه میشه به جای اینکه مقاومت های pull up رو بذاریم ، pull up داخلی میکرو رو فعال کنیم ؟

                    دیدگاه


                      #11
                      پاسخ : اتصال EEPROM سریال به میکرو

                      سلام
                      آقا شما بیاید و مقاومت پول پ 1.8 کیلو هم برای دیتا هم برای کلاک قرار بده با این کار احتمالا مشکلت حل می شه.
                      اگر درست شد ما رو دعا کن.
                      همانطور که مایل نیستم بنده کسی باشم، حاضر نیستم آقای کسی باشم. کسانی که مخالف آزادی دیگرانند، خود لیاقت آزادی را ندارند.((آبراهام لینکن))

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

                      [img width=343 height=100]http://www.elecdesigner.com/uploads/PRO-DESIGNER-GROUP.jpg[/img]

                      دیدگاه

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