اريد ارسال 512 بيت (مصفوفة ) من الكمبيوتر وارسالة الى الميكرو ويقوم الميكرو بتخزين المصفوفة داخل ذاكرتة الداخلية eeprom
سأستخدم 12 طرف من lpt
8 متصلين بالميكرو لأرسال البيانات و اربعة اطراف للتحكم وماشابة
ما اريدة هو قاعدة او أسس الارسال لانى ااخشى ان يحدث خطاء فى عملية الارسال من حيث ان مثلا بايت لا يتم تخزينة او يخزن فى المكان الخطأ
فكرت ان اعتمد على ساس وقت بمعنى مثلا كل 50 ميللى الكمبيوتر يرسل بايت ولكن اخشى ان يحدث خلل فى التوقيت فيسجل نفس البايت مرتين ويظن الميكرو انة البايت التالى
ارجو النصيحة وما افضل الطرق او الوسائل سواء المقترحة او التى تستخدم فعليا
وشكرااااااااااااااااااااااااااااااا
|
أهلا وسهلا أخي محمد .. تمنياتي لك بالتوفيق فيما تريد فعله .
فكرة الاعتماد على الزمن فكرة جيدة . ولكن لابد من بعض الاحتياطات أثناء عملية البرمجة .
كيف تمنع أن يقرأ الميكرو البايت مرتين ؟ ..
بعمل طريقة معينة في برمجة التوقيت :
عندما يرسل الكمبيوتر أول بايت يقوم الميكرو بتخزينه ثم بعد مدة معينة ولتكن 50 ملي ثانية مثلا يقوم الكمبيوتر بإرسال البايت الثاني ولا يستقبل الميكرو البايت الثاني بعد 50 ملي ثانية بل بعد 55 ملي ثانية مثلا . وهكذا .. طبعا جعلنا هناك فرق زمني بسيط على سبيل الاحتياط من عدم حدوث خطأ .
ملحوظة : خمسين ملي زمن كبير جدا .
-------------------
هناك طريقة أخرى باستخدام المقاطعات .
فكل بايت يتم إرساله من الكمبيوتر يجب أن يسبقه مثلا بايت كله أصفار . وتكون الثمان أطراف الخاصة بالكمبيوتر منها طرف موصل بالطرف B0 من الميكروكنترولر لتحدث مقاطعة interrupt . عندما تحدث مقاطعة ينتظر الميكرو لمدة 5 ملي ثانية ثم يقرأ البيانات مرة أخرى من أطراف الكمبيوتر .
أي أن الكمبيوتر لكي يرسل أي بايت سيرسل بايت كله أصفار . ثم بعد ملي ثانية مثلا أو اثنين يرسل البايت .
وبالنسبة للمايكرو أول بايت يستقبله تحدث المقاطعة فينتظر خمسة ملي ثانية (طبعا هنا فارق زمني للتأكد من عدم حدوث خطأ) ثم بعد ذلك يستقبل البايت .
--------------------
كل هذه أفكار وهناك الكثير ... يمكنك أن تحاول وتجرب وتضع الكود ليتم النقاش فيه .
تمنياتي بمزيد من التوفيق .
رزقنا الله وإياكم العلم النافع والعمل الصالح .