|
لا .. فقط في أول تشغيل للبيك سيكون العدد المخزن في الذاكرة عشوائي
لكن بعد ذلك ستخزن الذاكرة في العنوان 0 و بعد تنفيذ أمر الكتابة، العدد الذي تم تسجيله على PORTB
من ناحية ثانية البعض يضيف زمن تأخير بسيط 20 ميللي تانية بعد أمر الكتابة لضمان التخزين والقراءة
وأخيرا هناك ملاحظة ربما لا علاقة لها بالمشكل الحالي :
في الكود المرفق وضعت أمر الكتابة داخل حلقة تنفذ باستمرار طالما البيك موصول بالتغذية.
فقط للتذكير: عدد مرات الكتابة على هذه الذاكرة مهما كان كبيرا فهو محدود:تقريبا 10000000مرة.
|
نعم قمت بإضافة التأخير ولكن للأسف نفس المشكلة
وللخروج من الملاحظة التي ذكرتها , قمت بجعل عملية الكتابة ضمن تعليمة if
لتجنب تكرار عملية التخزين لعدد كبير جدا في الذاكرة كما يلي :
كود:
if (porta.f0==0)
{
if (portb.f0 !=1 || portb.f1 !=1 || portb.f2 !=1 || portb.f3 !=1)
{delay_ms(200); portb++;
eeprom_write(0,portb);
delay_ms(25);
}
}
if (porta.f1==0)
{
if (portb.f0 !=0 || portb.f1 !=0 || portb.f2 !=0 || portb.f3 !=0)
{delay_ms(200); portb--;
eeprom_write(0,portb);
delay_ms(25);
}
}
ولكن كالعادة عملية التخزين في الذاكرة تعمل على البروتوس , ولكن عمليا لا
المشكلة لدي هي في عملية الكتابة على الذاكرة وليس القراءة
شاكرا لك اهتمامك أخي أحمد