اطلاعیه

Collapse
No announcement yet.

باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

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

    باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

    با سلام
    من یک eeprom خارجی(at24c128) رو در مدار وصل کردم گاهی اوقات به خوبی کار میکنه ولی بعد از گذشت چند دقیقه از کار می افته. بعدش مثلا از هر ده بیست باری که میکرو رو ریست میکنم یکی دو بار درست کار میکنه. کلافم کرده دیگه. به نظر میرسه با ولتاژ 5 ولت احتمال کار کردنش میره بالاتر و هر چی ولتاژ کمتر میشه احتمال کار نکردنش بیشتر میشه. ولی در هر صورت با هر ولتاژی به صورت کامل درست کار نمیکنه و بگیر نگیر داره.
    راستی شبیه سازیش با پروتئوس هم درست کار میکنه.
    مدار و برنامم رو میذارم پایین دوستان با تجربه لطف کنن ببینن متوجه میشن مشکل از کجاست؟
    این مدارمه(البته مدار نسبت به محور y ها باید قرینه بشه) :

    این هم فانکشن هام:
    کد:
    #define EEPROM_BUS_ADDRESS 0xA0
    
    unsigned char eeprom_read(char address){
    unsigned char data,r;
    i2c_start();
    i2c_write(EEPROM_BUS_ADDRESS);
    i2c_write(address>>8);
    i2c_write(address);
    i2c_start();
    i2c_write(EEPROM_BUS_ADDRESS | 1);
    data=i2c_read(0);
    i2c_stop();
    delay_ms(5);
    return data;
    }
    /////////////////////////////////////////////////////////////////////////////////////////////////
    void eeprom_write(char address , char data){
    unsigned char r;
    i2c_start();
    i2c_write(EEPROM_BUS_ADDRESS);
    i2c_write(address>>8);
    i2c_write(address);
    i2c_write(data);
    i2c_stop();
    delay_ms(5);
    }

    #2
    پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

    بین این همه مهندس هیچ کس نمیدونه مشکل از کجاست؟!
    :cry2:

    دیدگاه


      #3
      پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

      :question:

      دیدگاه


        #4
        پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

        تغذیه eeprom با خازن 104 موازی کردی؟
        .The best question deserves a better answer
        =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
        «پناه»می برم «به خدا»
        از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
        محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

        دیدگاه


          #5
          پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

          نوشته اصلی توسط •.´™ مَسِِــــح`.•
          تغذیه eeprom با خازن 104 موازی کردی؟
          تغذیه کلی مدار خازن 100n و 1000u داره این هم مستقیم وصله به تغذیه مدار.

          دیدگاه


            #6
            پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

            منم همچین مشکلیو داشتم که عیب کارم 3 چیز بود:
            1:خازن 100 نانو
            2:تعویض مقاومت از 4.7 کیلو به 47کیلو PULL uP
            3: pcb نویز پزیر!
            .The best question deserves a better answer
            =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
            «پناه»می برم «به خدا»
            از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
            محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

            دیدگاه


              #7
              پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

              سلام مهندس ...
              من فکر میکنم مشگل شما از e2prom خارجی نباشه ...
              شما ممکن هست مشگل دیگه ای داشته باشین ...
              مثلا جایی پوینتر رو گم کرده باشین ... یا اینکه حواستون به Stack نیست و ...

              به نظره من باید مشگل رو در جایی دیگر جستجو کنین ... پیشنهادی که بهتون میدم این هستش که قسمتی از Ram رو به صورته E2prom شبیه سازی کنین ... ببینین مشگلتون حل میشه ...
              اگر حل شد ... یعنی روتین های E2prom مشگل دارند و اگر حل نشد بدونین امکان داره ایراد از جایی دیگه باشه ...

              موفق باشین .

              دیدگاه


                #8
                پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

                نوشته اصلی توسط v_ilkhani
                سلام مهندس ...
                من فکر میکنم مشگل شما از e2prom خارجی نباشه ...
                شما ممکن هست مشگل دیگه ای داشته باشین ...
                مثلا جایی پوینتر رو گم کرده باشین ... یا اینکه حواستون به Stack نیست و ...

                به نظره من باید مشگل رو در جایی دیگر جستجو کنین ... پیشنهادی که بهتون میدم این هستش که قسمتی از Ram رو به صورته E2prom شبیه سازی کنین ... ببینین مشگلتون حل میشه ...
                اگر حل شد ... یعنی روتین های E2prom مشگل دارند و اگر حل نشد بدونین امکان داره ایراد از جایی دیگه باشه ...

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

                دیدگاه


                  #9
                  پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

                  نوشته اصلی توسط •.´™ مَسِِــــح`.•
                  منم همچین مشکلیو داشتم که عیب کارم 3 چیز بود:
                  1:خازن 100 نانو
                  2:تعویض مقاومت از 4.7 کیلو به 47کیلو PULL uP
                  3: pcb نویز پزیر!
                  یعنی به جای 4.7 بذارم 47 کیلو ممکنه مشکل حل بشه؟ یا اینکه شما اشتباها 47 کیلو گذاشته بودید؟

                  دیدگاه


                    #10
                    پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

                    مدارت مشکل خاصی نداره و نمیخواد 47 کیلو بزاری. سالهاست که خودم دارم با 4.7 کیلو باهاش کار میکنم و مشکلی نداشته.
                    چند مورد :
                    اول تاخیر write رو که 5 گذاشتی بیشترش کن. مثلا بزار 20 .
                    دوم اگر امکانش هست یه بخشی از کد رو که از این دو تا تابع استفاده میکنی بزار.
                    سوم موقعی که میخوای از eeprom استفاده کنی قبلش اینتراپت ها رو غیر فعال کن و بعدش دوباره فعال کن ، ببین تفاوتی میکنه یا نه.

                    این که میگی بعد از چند دقیقه اینجوری میشه ، ممکنه از پایه هایی که به عنوان SDA , SCL استفاده کردی ، تو برنامه اشتباها داره مقدارش تغییر میکنه. برای اینکار تو فایل lst خروجی این مورد رو چک کن.

                    دیدگاه


                      #11
                      پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

                      نوشته اصلی توسط امیر . م
                      مدارت مشکل خاصی نداره و نمیخواد 47 کیلو بزاری. سالهاست که خودم دارم با 4.7 کیلو باهاش کار میکنم و مشکلی نداشته.
                      چند مورد :
                      اول تاخیر write رو که 5 گذاشتی بیشترش کن. مثلا بزار 20 .
                      دوم اگر امکانش هست یه بخشی از کد رو که از این دو تا تابع استفاده میکنی بزار.
                      سوم موقعی که میخوای از eeprom استفاده کنی قبلش اینتراپت ها رو غیر فعال کن و بعدش دوباره فعال کن ، ببین تفاوتی میکنه یا نه.

                      این که میگی بعد از چند دقیقه اینجوری میشه ، ممکنه از پایه هایی که به عنوان SDA , SCL استفاده کردی ، تو برنامه اشتباها داره مقدارش تغییر میکنه. برای اینکار تو فایل lst خروجی این مورد رو چک کن.
                      تاخیره رو تغییر دادم ولی نشد اصلا توی همون دستور start اش هم همون اول مقدار صفر رو بر میگردونه. بعضی وقت ها بقیه دستورها هم مقدار صفر رو بر میگردونن بعضی وقتها همون اولش گیر میکنه دیگه جلو نمیره.
                      اینتراپتی وجود نداره. برنامه اصلی رو ول کردم یه برنامه ای نوشتم که فقط از این ee جواب بگیرم.
                      نه اینکه همیشه بعد از چند دقیقه باشه اصلا حساب کتاب نداره.
                      همون طور که گفتم یه برنامه فقط واسه eeprom نوشتم و با پورت ها کاری ندارم پس پایه های sda و scl هم تغییر نمیکنن.
                      فایل شبیه سازیشم با پروتئوس درست کار میکنه و همون مقداری رو که مینویسم نشون میده!
                      اینکه زیر eeprom زمینه ایرادی نداره؟

                      دیدگاه


                        #12
                        پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

                        نوشته اصلی توسط redown
                        تاخیره رو تغییر دادم ولی نشد اصلا توی همون دستور start اش هم همون اول مقدار صفر رو بر میگردونه. بعضی وقت ها بقیه دستورها هم مقدار صفر رو بر میگردونن بعضی وقتها همون اولش گیر میکنه دیگه جلو نمیره.
                        اینتراپتی وجود نداره. برنامه اصلی رو ول کردم یه برنامه ای نوشتم که فقط از این ee جواب بگیرم.
                        نه اینکه همیشه بعد از چند دقیقه باشه اصلا حساب کتاب نداره.
                        همون طور که گفتم یه برنامه فقط واسه eeprom نوشتم و با پورت ها کاری ندارم پس پایه های sda و scl هم تغییر نمیکنن.
                        فایل شبیه سازیشم با پروتئوس درست کار میکنه و همون مقداری رو که مینویسم نشون میده!
                        اینکه زیر eeprom زمینه ایرادی نداره؟
                        اینکه زیر چیپ زمینه در مدارات دیجیتال مهم نیست بلکه در مدارهای آنالوگ مشکل سازه :agree:
                        eeprom را عوض کن ببین حل نمیشه ؟

                        موفق باشید
                        امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                        دیدگاه


                          #13
                          پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

                          نوشته اصلی توسط Abbas Sarami
                          اینکه زیر چیپ زمینه در مدارات دیجیتال مهم نیست بلکه در مدارهای آنالوگ مشکل سازه :agree:
                          eeprom را عوض کن ببین حل نمیشه ؟

                          موفق باشید
                          این سومیشه. چون هیتر ندارم هر یه دونه ای هم که عوض میکنم پایه هاش کج و کوله میشه داغون میشه. :sad:

                          دیدگاه


                            #14
                            پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

                            چیپت چیه؟ کامپایلرت چیه؟ و ورژن اون؟

                            دیدگاه


                              #15
                              پاسخ : باز هم eeprom خارجی، باز هم مشکلات عجیب و غریب

                              نوشته اصلی توسط redown
                              بعد از گذشت چند دقیقه از کار می افته. بعدش مثلا از هر ده بیست باری که میکرو رو ریست میکنم یکی دو بار درست کار میکنه. کلافم کرده دیگه. به نظر میرسه با ولتاژ 5 ولت احتمال کار کردنش میره بالاتر و هر چی ولتاژ کمتر میشه احتمال کار نکردنش بیشتر میشه. ولی در هر صورت با هر ولتاژی به صورت کامل درست کار نمیکنه و بگیر نگیر داره.
                              میکرو را چطوری ریست میکنی ؟ تغذیه مدارا را قطع میکنی یا با پایه ریست میکرو ؟
                              اگه با پایه ریست میکرو چند بار ریست می کنی تا درست بشه مشکل مربوط به تغذیه و یا چیپ eeprom هست (که با تغییر درست نشد) :-?
                              روی تغذیه کار کن اگه در تغذیه سلف داری و مدارت کنار یک مدار فرکانسی هست باید یک تجدید نظری توی مدار بکنید
                              اگه میتونی با یک اسکوپ تغذیه را ببین

                              موفق باشید
                              امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                              دیدگاه

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