اطلاعیه

Collapse
No announcement yet.

مشکل با ادرس ها در 24c1024

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

    #16
    پاسخ : مشکل با ادرس ها در 24c1024

    نوشته اصلی توسط hosseinghaheri نمایش پست ها
    اخه من هم 0x00a0 و هم 0x0a را تست کردم.
    قسمت خوندن راهم درست میگید ، از قبل بوده فراموش کردم.

    ولی مشکلی که هست به احتمال زیاد مربوط به MEMADD_SIZE هست که همون اول کار بعد از این که چند خط را اجرا کرد و وارد تابع I2C_WaitOnFlagUntilTimeout دگ میپره بیرون

    چون قبل از تابع I2C_WaitOnFlagUntilTimeout فقط از MEMADD_SIZE استفاده شده
    راستی متغیرت رو global معرفی کردی دیگه؟
    قبل حلقه int main(void) درسته؟
    [آموزشی] کنترل رله با پیامک توسط sim800l
    [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
    [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
    [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
    صفحه اینستاگرام : ecdco_ir

    دیدگاه


      #17
      پاسخ : مشکل با ادرس ها در 24c1024

      نوشته اصلی توسط reza0506 نمایش پست ها
      از stm32f103ret6 استفاده میکنی؟
      اگه وقت کردم امشب خودم برنامشو برات مینویسم.
      من توی این پروژه از stm32f103vctx تو پکت LQFP100 استفاده میکنم.
      البته فک نمیکنیم توی این مبحث با هم تفاوتی داشته باشند.

      ولی اگه این کار رو انجام بدید خیلی ازتون ممنون میشم ، خیلی لطف میکنید

      دلیل: ادغام دو پست برای جلوگیری از اسپم

      نوشته اصلی توسط reza0506 نمایش پست ها
      راستی متغیرت رو global معرفی کردی دیگه؟
      قبل حلقه int main(void) درسته؟
      بله همون اول کار بعد از include ها همون طور که فرمودید

      دیدگاه


        #18
        پاسخ : مشکل با ادرس ها در 24c1024

        من این برنامه رو برای بورد خودم stm32f103ret6 نوشتم و جواب داد شما از این برنامه استفاده کن اگر بازم مشکلی داشتی بگو تا برنامشو خودم برای میکروت بنویسم
        بعد اینکلود دو متغیر زیر رو تعربف کن:
        کد:
        uint8_t transmit[5]={10,20,30,40,50};
        uint8_t receive[5];
        و تو برنامه اصلیت (int main(void)) یا تو حلقه وایلش برنامه زیر رو بنویس
        کد:
        HAL_I2C_Mem_Write(&hi2c2,0xA0,0x0000,I2C_MEMADD_SIZE_16BIT,transmit,5,1000);
          HAL_Delay(100);
          HAL_I2C_Mem_Read(&hi2c2,0xA0,0x0000,I2C_MEMADD_SIZE_16BIT,receive,5,1000);
        من با stmstudio چک کردم و درست بوده
        درضمن برای آدرس چه بنویسی 0x00A0 یا 0xA0 درست کار میکنه.
        [آموزشی] کنترل رله با پیامک توسط sim800l
        [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
        [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
        [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
        صفحه اینستاگرام : ecdco_ir

        دیدگاه


          #19
          پاسخ : مشکل با ادرس ها در 24c1024

          نوشته اصلی توسط reza0506 نمایش پست ها
          من این برنامه رو برای بورد خودم stm32f103ret6 نوشتم و جواب داد شما از این برنامه استفاده کن اگر بازم مشکلی داشتی بگو تا برنامشو خودم برای میکروت بنویسم
          بعد اینکلود دو متغیر زیر رو تعربف کن:
          کد:
          uint8_t transmit[5]={10,20,30,40,50};
          uint8_t receive[5];
          و تو برنامه اصلیت (int main(void)) یا تو حلقه وایلش برنامه زیر رو بنویس
          کد:
          HAL_I2C_Mem_Write(&hi2c2,0xA0,0x0000,I2C_MEMADD_SIZE_16BIT,transmit,5,1000);
            HAL_Delay(100);
            HAL_I2C_Mem_Read(&hi2c2,0xA0,0x0000,I2C_MEMADD_SIZE_16BIT,receive,5,1000);
          من با stmstudio چک کردم و درست بوده
          درضمن برای آدرس چه بنویسی 0x00A0 یا 0xA0 درست کار میکنه.

          واقعا ممنون از لطفی که کردید.
          کدی که دادی را توی یک پروژه جدید اجرا کردم و مشکل نداشت و کار میکنه ، حالا باید کد را به پروژه اصلی منتقل کنم.
          بازم تشکر میکنم از وقتی که گذاشتید

          دیدگاه


            #20
            پاسخ : مشکل با ادرس ها در 24c1024

            [QUOTE=hosseinghaheri;654748]سلام خدمت همه ی دوستان.
            چطوری میتونم توی stm32 با کتاب خانه hal با 24c1024 ارتباط برقرار کنم.
            میدونم ادرس ها به صورت 16 بیتی هست و باید در قالب دو بایت ارسال بشه ولی توی hal نمیدونم چطوری باید این کار را انجام بدم.
            من همه کد های زیر را تست کردم. ولی هیچ کدوم جواب نداد و مقدار برگشتی این تابع برابر HAL_BUSY هست.

            دلیل: ادغام دو پست برای جلوگیری از اسپم

            سلام دوست عزیز
            همین مشکل را در نوشتن در حافظه 24C08 دارم و با نوشتن در آدرس حافظه های بالای 255 بوجود میاد
            سپاسگزارم:


            HAL_I2C_Mem_Write(&hi2c2,0xA0,0x0000,I2C_MEMADD_SI ZE_16BIT,transmit1,5,1000);
            HAL_Delay(100);
            HAL_I2C_Mem_Read(&hi2c2,0xA0,0x0000,I2C_MEMADD_SIZ E_16BIT,receive,5,1000);




            //----------------------------------------------------------------------------------
            row = 4;
            HAL_I2C_Mem_Write(&hi2c2,0xA0,0x0140,I2C_MEMADD_SI ZE_16BIT,transmit2,5,1000);
            HAL_Delay(100);
            HAL_I2C_Mem_Read(&hi2c2,0xA0,0x0140,I2C_MEMADD_SIZ E_16BIT,receive,5,1000);


            //----------------------------------------------------------------------------------
            row = 6;


            HAL_Delay(100);
            HAL_I2C_Mem_Read(&hi2c2,0xA0,0x0000,I2C_MEMADD_SIZ E_16BIT,receive,5,1000);


            اطلاعات خوانده شده در این مرحله بهم ریخته هست
            جدیدترین ویرایش توسط kambiz51; ۱۳:۲۵ ۱۳۹۶/۱۱/۰۱.

            دیدگاه


              #21
              پاسخ : مشکل با ادرس ها در 24c1024

              [QUOTE=kambiz51;669038]
              نوشته اصلی توسط hosseinghaheri نمایش پست ها
              سلام خدمت همه ی دوستان.
              چطوری میتونم توی stm32 با کتاب خانه hal با 24c1024 ارتباط برقرار کنم.
              میدونم ادرس ها به صورت 16 بیتی هست و باید در قالب دو بایت ارسال بشه ولی توی hal نمیدونم چطوری باید این کار را انجام بدم.
              من همه کد های زیر را تست کردم. ولی هیچ کدوم جواب نداد و مقدار برگشتی این تابع برابر HAL_BUSY هست.

              دلیل: ادغام دو پست برای جلوگیری از اسپم

              سلام دوست عزیز
              همین مشکل را در نوشتن در حافظه 24C08 دارم و با نوشتن در آدرس حافظه های بالای 255 بوجود میاد
              سپاسگزارم:


              HAL_I2C_Mem_Write(&hi2c2,0xA0,0x0000,I2C_MEMADD_SI ZE_16BIT,transmit1,5,1000);
              HAL_Delay(100);
              HAL_I2C_Mem_Read(&hi2c2,0xA0,0x0000,I2C_MEMADD_SIZ E_16BIT,receive,5,1000);




              //----------------------------------------------------------------------------------
              row = 4;
              HAL_I2C_Mem_Write(&hi2c2,0xA0,0x0140,I2C_MEMADD_SI ZE_16BIT,transmit2,5,1000);
              HAL_Delay(100);
              HAL_I2C_Mem_Read(&hi2c2,0xA0,0x0140,I2C_MEMADD_SIZ E_16BIT,receive,5,1000);


              //----------------------------------------------------------------------------------
              row = 6;


              HAL_Delay(100);
              HAL_I2C_Mem_Read(&hi2c2,0xA0,0x0000,I2C_MEMADD_SIZ E_16BIT,receive,5,1000);


              اطلاعات خوانده شده در این مرحله بهم ریخته هست
              سلام
              من به طور اتفاقی متوجه شدم که اگه یک خازن 100n و یک مقاومت 1M با پایه sda موازی کنم این مشکلم حل میشه.

              دیدگاه


                #22
                پاسخ : مشکل با ادرس ها در 24c1024

                سلام منم همین مشکل رو دارم اون خازن و مقاومت رو دقیقا چجوری موازی کردین؟

                دیدگاه


                  #23
                  پاسخ : مشکل با ادرس ها در 24c1024

                  نوشته اصلی توسط sadegh0930 نمایش پست ها
                  سلام منم همین مشکل رو دارم اون خازن و مقاومت رو دقیقا چجوری موازی کردین؟
                  چون حالت عادی مقاومت پول آپ دارند
                  احتمالا ایشون یک خازن 100 نانو پول داون زده
                  یک مقاومت 1 مگا هم پول داون زده
                  روی خط SDA
                  اگر ترک ها درست کشیده نشده باشند و یا اشکال طراحی باشه احتمالا جواب بده ( من خودم تا الان تست نکردم)

                  دیدگاه


                    #24
                    پاسخ : مشکل با ادرس ها در 24c1024

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

                    خاژن ۱۰۰ نانو روی باس عملا ارتباط رو غیر ممکن میکنه ، یعنی کل سیگنال فیلتر میشه

                    دیدگاه

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