قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

أشرف الخطيب
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2009
الدولة: مصــــــــــــــــــــــــــــــر
المشاركات: 193
نشاط [ أشرف الخطيب ]
قوة السمعة:
قديم 19-08-2009, 01:17 AM المشاركة 49   
افتراضي



أخى أبو زكووور ..... كيف حالك ؟؟؟

كل منا له وجهة نظر التى يرى من خلالها الموضوع وفى النهاية هى وجهة نظر ولابد أن تحترم .... صراحة أعجبتنى فكرة أن يتم إدخال كود معين للطوارىء وهو ماتفضل به الأخ Eagle69 .... وحتى نغطى كافة الإقتراحات سأضع المشروع فى أكثر من صورة إن شاء الله ... والله المستعان

*********************************************

أما بخصوص الثغرة ... فأنت تقول أنه أحيانا تضىء الليد رغم أن الباسوورد المدخل خطأ ... مؤكد أن ذلك بسبب الثغرة التى أحكى عنها .....

اكتشاف الثغرة :

إذا كانت الباسوورد الصحيحة هى 123456 مثلا

وأدخلت أنت 12378 ثم اضغط على المفتاح CANCEL مرة واحدة لمسح الرقم 8 ثم ادخل 56 ثم اضغط على مفتاح التأكيد # ..... وبذلك ستكون قد أدخلت 123756
ورغم أن الباسوورد خطأ فستضىء الليد .....

لعلكم لاحظتم أن الثغرة تكمن فى أنه لو ضغطت على مفتاح التراجع وكان هناك أكثر من رقم قد أدخلته أنت من قبل خطأ وتراجعت أنت مرة واحدة فقط فكأن شيئا لم يكن وسيعتبر ما أدخلته مسبقا صحيحا ...... وهذه هى الثغرة

************************************************** ***
بإذن الله انتظروا المشروع ( قفل الكترونى بباسوورد مكون من ستة أرقام ) مكتملا فى أكثر من صورة

وكل عام وأنتم جميعا بخير

اعلانات

robota
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: الخرطوم_السودان
المشاركات: 895
نشاط [ robota ]
قوة السمعة:
قديم 19-08-2009, 08:31 AM المشاركة 50   
افتراضي


أخى أبو زكووور ..... كيف حالك ؟؟؟

كل منا له وجهة نظر التى يرى من خلالها الموضوع وفى النهاية هى وجهة نظر ولابد أن تحترم .... صراحة أعجبتنى فكرة أن يتم إدخال كود معين للطوارىء وهو ماتفضل به الأخ Eagle69 .... وحتى نغطى كافة الإقتراحات سأضع المشروع فى أكثر من صورة إن شاء الله ... والله المستعان

*********************************************

أما بخصوص الثغرة ... فأنت تقول أنه أحيانا تضىء الليد رغم أن الباسوورد المدخل خطأ ... مؤكد أن ذلك بسبب الثغرة التى أحكى عنها .....

اكتشاف الثغرة :

إذا كانت الباسوورد الصحيحة هى 123456 مثلا

وأدخلت أنت 12378 ثم اضغط على المفتاح CANCEL مرة واحدة لمسح الرقم 8 ثم ادخل 56 ثم اضغط على مفتاح التأكيد # ..... وبذلك ستكون قد أدخلت 123756
ورغم أن الباسوورد خطأ فستضىء الليد .....

لعلكم لاحظتم أن الثغرة تكمن فى أنه لو ضغطت على مفتاح التراجع وكان هناك أكثر من رقم قد أدخلته أنت من قبل خطأ وتراجعت أنت مرة واحدة فقط فكأن شيئا لم يكن وسيعتبر ما أدخلته مسبقا صحيحا ...... وهذه هى الثغرة

************************************************** ***
بإذن الله انتظروا المشروع ( قفل الكترونى بباسوورد مكون من ستة أرقام ) مكتملا فى أكثر من صورة

وكل عام وأنتم جميعا بخير
ما شاء الله بصراحة انا ازداد كل يوم اعجاب بك و بمشروعك الرائع , جعلك الله زخرا للاسلام والسلمين ولاتحرمنا من ابداعك .

عندى سؤال بسيط (خارج الموضوع ):
ماذا يعنى هذا الامر فى المايكروسى:
كود:
if (Button(&PORTA, 0,1,1))




التعديل الأخير تم بواسطة : robota بتاريخ 19-08-2009 الساعة 08:35 AM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

أشرف الخطيب
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2009
الدولة: مصــــــــــــــــــــــــــــــر
المشاركات: 193
نشاط [ أشرف الخطيب ]
قوة السمعة:
قديم 19-08-2009, 04:40 PM المشاركة 51   
افتراضي


بارك الله فيك أخى robota على هذه الكلمات الطيبة وأتمنى أن أكون دائما عند حسن الظن ...

*******************************************

بخصوص هذا الأمر

كود:
if (Button(&PORTA, 0,1,1))
فالدالة button هى إحدى الدوال الجاهزة فى الميكروسى تستخدم لقراءة حالة طرف معين فى أحد البورتات الموصلة عليها سويتش أو مفتاح

أهم ميزة فى هذه الدالة هى أنها تلغى التأثير الناتج من عملية التشويش على السويتش switch-bounce problem .. وهى مشكلة تحدث فى الواقع ولا تظهر عند المحاكاة . وتتمثل المشكلة فى أنه عند الضغط على السويتش لن تتغير حالة البورت فى نفس اللحظة من حالة واحد منطقى إلى صفر منطقى ( طبعا إذا كان الطبيعى من غير الضغط هو الواحد المنطقى) ... بل يحدث تشويش بحيث تقرأ هذه الضغطة وكأنها عدة ضغطات حتى يستقر البورت الموصل عليه السويتش على حالة واحدة فقط





أى أن المشكلة هى أن المتحكم يقرأ الضغطة الواحدة على السويتش وكأنها عدة ضغطات

*****************************************

ولحل هذه المشكلة توجد أكثر من طريقة عن طريق البرمجة software أو عن طريق hardware إضافات فى الدائرة مثل استخدام rc filter أو schmitt trigger

مايهمنا هنا هو الطريقة المتبعة لحل المشكلة عن طريق البرمجة :

وهو أمر سهل جدا ... فقط نقوم بقراءة طرف البورت الموصل عليه السويتش وعندما يتم الضغط على السويتش أنتظر فترة التشويش حتى تستقر حالة البورت على حالة واحدة ثم أقوم بعمل المهمة المرادة

مثال :
هذا جزء من برنامج يقوم بإضاءة ليد مثلا موصلة على الطرف RC0 عند الضغط على المفتاح الموصل على الطرف RB0

كود:
if (portb.f0 == 0)
        {
           delay_ms(20) ;    // wait for de-bouncing
           portc.f0 = 1 ;
        }

أما الدالة Button فقد وفرت ذلك كله ... فقط تعطيها البورت الموصل عليه السويتش و رقم الطرف وفترة الانتظار ( بالميللى ثانية ) و الشرط المراد تحقيقه ( صفر أم واحد )

مثال :

الأوامر السابقة يمكن كتابتها باستخدام هذه الدالة الجاهزة وستؤدى نفس المهمة

كود:
if (Button(&PORTb, 0,20,0)) portc.f0 = 1 ;
تذكر أن هذا كله لايظهر عند المحاكاة ... فقط فى الواقع تظهر هذه المشكلة


Eagle69
:: مهندس متواجد ::
تاريخ التسجيل: May 2009
المشاركات: 114
نشاط [ Eagle69 ]
قوة السمعة:
قديم 19-08-2009, 05:39 PM المشاركة 52   
افتراضي


[QUOTE=أشرف الخطيب;304637]اكتشاف الثغرة :

إذا كانت الباسوورد الصحيحة هى 123456 مثلا

وأدخلت أنت 12378 ثم اضغط على المفتاح CANCEL مرة واحدة لمسح الرقم 8 ثم ادخل 56 ثم اضغط على مفتاح التأكيد # ..... وبذلك ستكون قد أدخلت 123756
ورغم أن الباسوورد خطأ فستضىء الليد .....

لعلكم لاحظتم أن الثغرة تكمن فى أنه لو ضغطت على مفتاح التراجع وكان هناك أكثر من رقم قد أدخلته أنت من قبل خطأ وتراجعت أنت مرة واحدة فقط فكأن شيئا لم يكن وسيعتبر ما أدخلته مسبقا صحيحا ...... وهذه هى الثغرة

>>> بارك الله بجهودك يا مهندس أشرف وفي ميزان حسناتك ان شاء الله
انا اسف جدا وهذا انا اقدم اسفي من البداية لاني انا لغاية الان ليس على اتطلاع كامل بالمشروع , لعدم وجود الوقت وليس لشيء اخر وانا اتحين الفرصة لاكمل القطع المكونة للدائرة لابدأ بالتنفيذ ان شاء الله , اذا كان ردي ليس بمحلة .

مو الكوود او الباسوورد المدخل يجب ان يظهر على الشاشة امامنا ونرى الارقام الخطأ ونتراجع عنها ؟؟؟؟؟؟؟
وهكذا لا يكون هناك مجال لادخال رقم خطأ لانة امامنا.

وكيف سيعتبر البيك الرقم المدخل صحيح وهو ادخل 7 بدلا من ال 4 ؟؟
وعند مقارنة هذا الرقم مع الرقم اللي بالذاكرة سيعرف البيك انة صحيح او خطأ .
الرجاء التوضيح بقدر الامكان , واتمنى ان اكون قد تمكنت من توصيل الفكر ة


الصورة الرمزية SAMI-ALG
SAMI-ALG
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
الدولة: الجزائر
المشاركات: 199
نشاط [ SAMI-ALG ]
قوة السمعة:
قديم 19-08-2009, 05:51 PM المشاركة 53   
افتراضي


وعليكم السلام ورحمة الله وبركاته ... أهلا بك أخى SAMI-ALG .. يمكنك الاستعانة بملف الأسمبلى الناتج مع المشروع ... وربنا يوفقك
الملف التي تكون مرفقة مع البرامج المكتوبة عن طريق لغات اخرى تكون وان صح القول عبارة عن ملفات صماء لا يستفاد منها الا الشيء اليسير فالكل يعلم ان اهم شيئ في كتابة البرنامج هي التعليقات التي يضيفها الكاتب من اجل توضيح الفكرة التي تطرق اليها ولهذا حاليا ساكتفي بقراءة عامة حول الموضوع فحقا استفدت كثيرا من الافكار المطروحة

ودمتم في رعاية الله وحفظه


أشرف الخطيب
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2009
الدولة: مصــــــــــــــــــــــــــــــر
المشاركات: 193
نشاط [ أشرف الخطيب ]
قوة السمعة:
قديم 19-08-2009, 06:49 PM المشاركة 54   
افتراضي


أخى العزيز Eagle69 .... بداية أتمنى لك التوفيق وأن ييسر الله لك الأمور

فى الحقيقة لم أقل إطلاقا أن الحروف ستظهر على الشاشة وإلا كنا سنسمى المشروع حاسبة بدلا من قفل الكترونى ..... بالطبع كل ماسيظهر على الشاشة هو الرمز * وبعض العبارات الضرورية مثل :ENTER NEW PASS وغيرها .

وكيف سيعتبر البيك الرقم المدخل صحيح وهو ادخل 7 بدلا من ال 4 ؟؟
العم البيك مظلوم فى هذه القضية ... الخطأ هو خطأى بسبب شىء صغير فى البرنامج نسيت أن أضبطه لأنى تركته فى النهاية حتى أكمل البرنامج ثم نسيت أن أرجع إلى هذا الجزء لضبطه ..... فلا تظلم البيك فهو من هذه التهمة برىء

وبعد فضل الله ومنه اكتشفت هذه الثغرة والحمد لله استطعت إصلاحها وحببت أن تحاولوا مثلى فى الدائرة لمعرفة الخطأ

هذا الخطأ كان بسببين :

1- أنى جعلت المتغير error (الدال على وجود خطأ فى الباسوورد )يساوى واحد إذا كان هناك خطأ فى الباسوورد المدخل .. وصفر إذا لم يكن هناك خطأ

وتم حلها بأن جعلت المتغير error يزداد بمقدار واحد لكل خطأ بمعنى أنه قد يأخذ القيم من صفر ( إذا لم يكن هناك خطأ ) إلى ستة ( إذا كانت كل أرقام الباسوورد خطأ )

2- أنى فى البرنامج جعلت البيك - إذا تم الضغط على مفتاح التراجع CANCEL - يعمل مراجعة على آخر رقم تم إدخاله من قبل المستخدم ( وهو الرقم الذى يريد مسحه ) فإذا كان خطأ ... جعلته يصفر المتغير error ..... وهذا خطأ كبييييير جدا

لماذا ؟؟

لأنه ربما كان هذا الرقم الذى يريد مسحه والرقم الذى يسبق هذا الرقم أيضا خطأ .... وأنا نسيت فى البرنامج أن أضع هذا فى الحسبان

************************************************** ******

عموما ...... أخى Eagle69 مارأيك لو جربت الدائرة على البروتس وجربت أن تدخل الأرقام من خلال الكيباد كما وضحت سابقا

إذا كانت الباسوورد الصحيحة هى 123456 مثلا

وأدخلت أنت 12378 ثم اضغط على المفتاح CANCEL مرة واحدة لمسح الرقم 8 ثم ادخل 56 ثم اضغط على مفتاح التأكيد # ..... وبذلك ستكون قد أدخلت 123756
ورغم أن الباسوورد خطأ فستضىء الليد .....

لعلكم لاحظتم أن الثغرة تكمن فى أنه لو ضغطت على مفتاح التراجع وكان هناك أكثر من رقم قد أدخلته أنت من قبل خطأ وتراجعت أنت مرة واحدة فقط فكأن شيئا لم يكن وسيعتبر ما أدخلته مسبقا صحيحا ...... وهذه هى الثغرة
************************************************** *******
بإذن الله .... انتظر المشروع كاملا بلا ثغرات ولا مطبات ولا شىء من هذا القبيل بإذن الله اليوم أو غدا على أسوأ تقدير

وكل عام وأنت بخير


التعديل الأخير تم بواسطة : أشرف الخطيب بتاريخ 19-08-2009 الساعة 06:53 PM

أشرف الخطيب
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2009
الدولة: مصــــــــــــــــــــــــــــــر
المشاركات: 193
نشاط [ أشرف الخطيب ]
قوة السمعة:
قديم 19-08-2009, 07:02 PM المشاركة 55   
افتراضي


الملف التي تكون مرفقة مع البرامج المكتوبة عن طريق لغات اخرى تكون وان صح القول عبارة عن ملفات صماء لا يستفاد منها الا الشيء اليسير فالكل يعلم ان اهم شيئ في كتابة البرنامج هي التعليقات التي يضيفها الكاتب من اجل توضيح الفكرة التي تطرق اليها ولهذا حاليا ساكتفي بقراءة عامة حول الموضوع فحقا استفدت كثيرا من الافكار المطروحة

ودمتم في رعاية الله وحفظه
معك حق أخى SAMI-ALG .... تقبل أسفى لك ... ظننت أنه ربما يفيدك هذا الملف بشىء ولو بالقليل ... أعلم أن مراجعة برنامج مكتوب بالأسمبلى أصعب بكثير من مراجعة برنامج مكتوب بأى لغة أخرى .

وإنه لشرف لنا قراءتك للموضوع وإن كان هناك لديك أفكار فأهلا بك وسهلا .. فالكل هنا يتعلم إن لم يكن أمور برمجية وكيفية التعامل مع البيك وملحقاته فهناك أفكار جميلة طرحت منكم .... بارك الله فيكم جميعا


الصورة الرمزية أبو زكووور
أبو زكووور
:: عضو فضي ::
تاريخ التسجيل: Mar 2009
الدولة: سوريا العروبة
المشاركات: 428
نشاط [ أبو زكووور ]
قوة السمعة:
قديم 20-08-2009, 02:52 AM المشاركة 56   
attension السلام عليكم


أخى أبو زكووور ..... كيف حالك ؟؟؟

كل منا له وجهة نظر التى يرى من خلالها الموضوع وفى النهاية هى وجهة نظر ولابد أن تحترم .... صراحة أعجبتنى فكرة أن يتم إدخال كود معين للطوارىء وهو ماتفضل به الأخ Eagle69 .... وحتى نغطى كافة الإقتراحات سأضع المشروع فى أكثر من صورة إن شاء الله ... والله المستعان
شكراً لك أخي أشرف , بارك الله فيك ,
طبعاً يا أخي لكل واحد منا وجهة نظره وقناعاته و إختياره
ممكن أن نجد في الأسواق عدة أصناف من المنتجات منها الممتاز والجيد و العادي و حتى السيء
ولكل صنف منها هنالك من يرغب فيه و له حجته في إختياره .
و هنالك من الباعة من ينصح ويقدم النصح , و هنالك من لا يهمه سوى البيع و جني الربح .
بالنسبة للثغرة , كان من الصعب إكتشافها , كنت ألاحظ أن الليد يومض أحياناً دون إدخال الكود الصحيح , ولكن لم أعرف السبب .
على كل حال نحن في إنتظار المزيد لإكمال العمل .
بوركت جهودك ... رمضان كريم .



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 03:59 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)