NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3705 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 2 از 2 نخستنخست 12
نمایش نتایج: از 21 به 22 از 22

موضوع: ارسال و دریافت با i2c

  1. #21
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    22
    تشکر
    1
    تشکر شده 9 بار در 5 پست

    پیش فرض

    من با استفاده از این پروژه و کتابخانه های آن توی EEPROM نوشتم و خوندم
    کار کرد پروژه:
    در این مثال EEPROM موجود بر روی برد توسط واحد I2C به کار گرفته شده است و برنامه به این صورت عمل می کند که اعداد 1 تا 8 از خانه حافظه 0x00 تا 0x07 نوشته شده و سپس دوباره خوانده و به طور متناوب توسط LEDها نمایش داده می شود.
    یک سری مشکلات بر خوردم که تو پست بعدی قرار می دهم.
    این پروژه کامل هست و درست کار می کند. از کتابخانه آن در جای دیگر هم استفاده کردم درست کار می مند

    I2C-EEPROM.zip - 249 KB
    I2C-EEPROM.zip

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #22
    کاربر علاقه مند
    تاریخ عضویت
    Jul 2013
    نوشته ها
    22
    تشکر
    1
    تشکر شده 9 بار در 5 پست

    پیش فرض

    و اما مشکلات:من با استفاده از اين برنامه و کتابخانه آن توانستم اطلاعات را در EEPROM ذخيره کنم
    الان سه تا مشکل دارم
    مشکل اول. اطلاعات فقط به صورت 8 بيت نوشته مي شود:


    کد:
    I2C_WriteNByte(0xa0, 1, 0x00, EditBuf, 8);
    يعني امکان نوشتن بيشتر نيست؟ به طور مثال اگر بخواهم 16 يا 32 بيت را بنويسم چه کار بايد بکنم
    راهي که پيدا کردم اين بود که اطلاعات را 8 تا 8 تا بنويسم يعني اول از آدرس 0 تا هفت ،8 بيت اول سپس آدرس 8 تا 15، 8 بيت دوم و به همين ترتيب ... که کار جالبي به نظر نمي آيد
    کد:
    I2C_WriteNByte(0xa0, 1, 0x00, EditBuf, 8);
    I2C_WriteNByte(0xa0, 1, 0x08, EditBuf, 8);



    مشکل دوم اين که در صورتي که توابع read و write در داخل تابع وقفه باشد مشکل پيش مي آيد و ميکرو هنگ مي کند با ديباگر هم چک کردم ...
    يعني اگر وقفه GPIO رخ داد و وارد زير روال وفقه شد در صورتي که در زير روال وقفه تابع write را قرار دهيم مشکل پيش مي آيد و کار نمي کند


    مشکل سوم هم مربوط به uint8_t بودن buf که در اين صورن حداکثر مقداري که هر کدام از درايه ها 255 خواهد بود و مثلا عدد 256 يا بيشتر قابل نمايش نيست
    با تغييردادن تعريف buf باز هم مشکل بر طرف نشد
    در هنگام مقدار دهي با uint32_t بافر مقدار مي گيرد ولي هنگام رايت و ريد باز مشکل پا بر جا هست و بيشتر از 255 را که 0xff مي شود را نمايش نمي دهد
    فکر کنم مشکل در نوشتن و خواندن اطلاعات باشد که 8 بيت بيشتر نيست
    ویرایش توسط mohsenarm : 07-03-2014 در ساعت 12:42

صفحه 2 از 2 نخستنخست 12

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •