و اما مشکلات:من با استفاده از اين برنامه و کتابخانه آن توانستم اطلاعات را در 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 بيت بيشتر نيست