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

   

A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 14-06-2014, 09:25 AM المشاركة 9   
افتراضي



اخي حسن اريد ان اسألك سؤال بعيد عن الموضوع شويه ..
اخي حسن قبل مده حاولت ان اعمل نفس المشروع السابق و كان يستخدم المتحكم 16F628A عدد (2) واحد في المرسل و الثاني في المستقبل ... خلاصة الموضوع اخي انه عندما قمت بتجميع الدائرتين حصل معي خطأ بسيط و بدون قصد و هو انني قمت بادخال 5 فولط مباشره على الطرف MCLR بدون مقاومه 10 كيلو على المتحكمين و بالتالي حصل خطأ بالدائره و عندما ادركت الخطأ و قمت بالتوصيل الصحيح بوضع المقاومه كانت تعمل الداره بشكل غريب ؟ احيانا فلاشر و احيانا الليدات لا تضيئ.. و عندما فحصت الجهد على MCLR وجدته 2.5 فولط بدلا من 5 و عندما انزع المتحكم من الداره يرجع الفولط 5 ..السؤال اخي هلحصل عطب في المتكاملات ؟؟
مع العلم اني حاولت ان ابرمجهن على المبرمجه مره اخرى عن طريق برنامج ICPROG و برنامج PICPGM و كان يعطيني العباره المشهوره virty field..........0000h ..و عندما اقوم بالقراءه من البيك ف÷نه يقرأ البك بنجاح و لكن يعطيني ان بيانات البك مشفره بأن لا معلومات موجوده بداخل البك و يعطيني بأن DATA PROTICTION & CODE PROTICTION في الوضع ON (مفعلات) و عندما احاول المسح يقوم بعملية المسح بنجاح و لكن غير قابل للكتابه عليه و يعطيني الجمله السابقه...هل البكات حصل بها عطب ام ما الحل ..
اعذرني اخي للاطاله و لكن لاوضح لك ما حصل ..نظرا لان هذه البكات مرتفعة الثمن عندنا في فلسطين و محل بيع القطع بعيدا جدا عن موقع سكناي فهو يريد سفر 4 ساعات بالسياره ..اسف للاطاله مره اخرى..

اعلانات

محمد55555
:: مهندس متواجد ::
تاريخ التسجيل: Jun 2013
المشاركات: 80
نشاط [ محمد55555 ]
قوة السمعة:
قديم 14-06-2014, 11:23 AM المشاركة 10   
افتراضي


الاخ المهندس حسن هادي محمود
شكرا جزيلا لك و بارك الله فيك و جعله في ميزان حسناتك ان شاء الله // جاري التنزيل و التجربه و سأوافيكم بالرد عندما يسمح لي الوقت ....

اخ حسن بالنسبه للرابط الاول يا ريت ترفعه على فور شير مثلا بدل عرب شير لان الثاني لا يعمل عندي ..تحياتي لك .
الاستاذ/حسن جزاك اللة خيرا ولو ممكن شرح لكود الاستقبال

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 14-06-2014, 12:53 PM المشاركة 11   
افتراضي


الاخ المهندس حسن هادي محمود
شكرا جزيلا لك و بارك الله فيك و جعله في ميزان حسناتك ان شاء الله // جاري التنزيل و التجربه و سأوافيكم بالرد عندما يسمح لي الوقت ....

اخ حسن بالنسبه للرابط الاول يا ريت ترفعه على فور شير مثلا بدل عرب شير لان الثاني لا يعمل عندي ..تحياتي لك .
السلام عليكم
أخي ممكن تحميل ملف من mediafire أي رابط الثاني
تحياتي


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 14-06-2014, 02:24 PM المشاركة 12   
افتراضي


ممكن أخي الكريم تفيدنا بالدارة التي استفدت أنت منها سابقا ,,,
تفضل اخي الكريم ... و اي استفسار انشاء الله ما بنقصرhttp://www.4shared.com/file/CTAnAXMo/IR8_MPMM2.html


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 14-06-2014, 02:29 PM المشاركة 13   
افتراضي


ممكن أخي الكريم تفيدنا بالدارة التي استفدت أنت منها سابقا ,,,
الملف السابق اخي كان HEX وهذا مخطط الداره http://upload.qariya.info/images/qariya-b7df466d25.jpg


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 14-06-2014, 03:15 PM المشاركة 14   
افتراضي


الاخ المهندس حسن هادي محمود
شكرا جزيلا لك و بارك الله فيك و جعله في ميزان حسناتك ان شاء الله // جاري التنزيل و التجربه و سأوافيكم بالرد عندما يسمح لي الوقت ....

اخ حسن بالنسبه للرابط الاول يا ريت ترفعه على فور شير مثلا بدل عرب شير لان الثاني لا يعمل عندي ..تحياتي لك .
السلام عليكم
تفضل حمل ملف من فور شيرد
http://www.4shared.com/get/89cP39evb...r-reciver.html

تحياتي


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 14-06-2014, 03:31 PM المشاركة 15   
افتراضي


اخي حسن اريد ان اسألك سؤال بعيد عن الموضوع شويه ..
اخي حسن قبل مده حاولت ان اعمل نفس المشروع السابق و كان يستخدم المتحكم 16F628A عدد (2) واحد في المرسل و الثاني في المستقبل ... خلاصة الموضوع اخي انه عندما قمت بتجميع الدائرتين حصل معي خطأ بسيط و بدون قصد و هو انني قمت بادخال 5 فولط مباشره على الطرف MCLR بدون مقاومه 10 كيلو على المتحكمين و بالتالي حصل خطأ بالدائره و عندما ادركت الخطأ و قمت بالتوصيل الصحيح بوضع المقاومه كانت تعمل الداره بشكل غريب ؟ احيانا فلاشر و احيانا الليدات لا تضيئ.. و عندما فحصت الجهد على MCLR وجدته 2.5 فولط بدلا من 5 و عندما انزع المتحكم من الداره يرجع الفولط 5 ..السؤال اخي هلحصل عطب في المتكاملات ؟؟
مع العلم اني حاولت ان ابرمجهن على المبرمجه مره اخرى عن طريق برنامج ICPROG و برنامج PICPGM و كان يعطيني العباره المشهوره virty field..........0000h ..و عندما اقوم بالقراءه من البيك ف÷نه يقرأ البك بنجاح و لكن يعطيني ان بيانات البك مشفره بأن لا معلومات موجوده بداخل البك و يعطيني بأن DATA PROTICTION & CODE PROTICTION في الوضع ON (مفعلات) و عندما احاول المسح يقوم بعملية المسح بنجاح و لكن غير قابل للكتابه عليه و يعطيني الجمله السابقه...هل البكات حصل بها عطب ام ما الحل ..
اعذرني اخي للاطاله و لكن لاوضح لك ما حصل ..نظرا لان هذه البكات مرتفعة الثمن عندنا في فلسطين و محل بيع القطع بعيدا جدا عن موقع سكناي فهو يريد سفر 4 ساعات بالسياره ..اسف للاطاله مره اخرى..
السلام عليكم
أخي كريم صراحه لاأعرف الجواب الشافي ولكن يمكن فحص ايسي
كتب برنامج صغير جد مثلا تجعل جميع الاطراف كلها خرج ومن ثم تجعلها تساوي 5 فولت اي تكتب porta=255 و portb=255 ومن ثم تقيس جهد لى كل طرف اذا كان يساوي 2.5 او اقل فهذا يعني هذا طرف عاطل طبعا أقصد تفحص البك لوحده دون وضعه في دائره الرئيسيه
كما قم بالالغاء خاصيه MCLR
http://cdn.top4top.net/i_11818a847b1.png

تحياتي


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 14-06-2014, 04:10 PM المشاركة 16   
افتراضي


الاستاذ/حسن جزاك اللة خيرا ولو ممكن شرح لكود الاستقبال
السلام عليكم
كود:
// Manchester module connections
sbit MANRXPIN at RB0_bit;
sbit MANRXPIN_Direction at TRISB0_bit;
// End Manchester module connections
// define all leds
sbit led1 at RC0_bit;
sbit led2 at RC1_bit;
sbit led3 at RC2_bit;
sbit led4 at RC3_bit;
sbit led5 at RC4_bit;
sbit led6 at RC5_bit;
sbit led7 at RC6_bit;
sbit led8 at RC7_bit;
sbit led_ok at RD0_bit;
sbit led_ok_dir at trisd0_bit;
#define on  1
#define off  0
const char divce_address=10;
char error, ErrorCount, temp , kk[2], cont=0 , data_recived=0;
void main()
{
 adcon1=6;
 trisc=0;
 led_ok_dir=0;
 trisa=0;
 portc=0;
 portd=0;
 porta=0;
ErrorCount = 0;

Man_Receive_Init();                             // Initialize Receiver
 while (1) {                                 // Wait for the "start" byte
            temp = Man_Receive(&error);         // Attempt byte receive
            if (temp == 0)                         // "Start" byte, see Transmitter example
            break;                                  // We got the starting sequence
            if (error)                                // Exit so we do not loop forever
            break;
           }

while (1) {                                     // Endless loop

          temp = Man_Receive(&error);             // Attempt byte receive
           if (error) {                            // If error occured
                       ErrorCount++;                         // Update error counter
                       if (ErrorCount > 20) {                // In case of multiple errors
                                             temp = Man_Synchro();   // Try to synchronize again
                                             ErrorCount = 0;         // Reset error counter
                                           }
                     }
         if(temp==0)led_ok=1;
         if(data_recived==0)
                      {
                       switch(cont)  {
                                      case 0:if(temp==divce_address)cont=1;
                                             else cont=0;
                                             break;

                                      case 1:if(temp== ~divce_address)cont=2;
                                             else cont=0;
                                              break;
                                       case 2:kk[0]=temp;
                                               cont=3;
                                               break;
                                       case 3:kk[1]=temp;
                                              if(kk[0]== ~kk[1]) data_recived=1;
                                              cont=0;
                                              break;

                                     }
                      }
        if(data_recived==1)
                          {
                           data_recived=0;
                            switch(kk[0])
                                        {
                                         case 1:led1=on;break;
                                         case 11:led1=off;break;
                                         case 2:led2=on;break;
                                         case 21:led2=off;break;
                                         case 3:led3=on;break;
                                         case 31:led3=off;break;
                                         case 4:led4=on;break;
                                         case 41:led4=off;break;
                                          case 5:led5=on;break;
                                         case 51:led5=off;break;
                                         case 6:led6=on;break;
                                         case 61:led6=off;break;
                                         case 7:led7=on;break;
                                         case 71:led7=off;break;
                                         case 8:led8=on;break;
                                         case 81:led8=off;break;

                                        }
                                kk[0]=0;
                           }

       }
}
============================================
تعريف طرف الاستقبال لمانشيستر كود
كود:
// Manchester module connections
sbit MANRXPIN at RB0_bit;
sbit MANRXPIN_Direction at TRISB0_bit;
=================================================
تعريف ليدات
كود:
// define all leds
sbit led1 at RC0_bit;
sbit led2 at RC1_bit;
sbit led3 at RC2_bit;
sbit led4 at RC3_bit;
sbit led5 at RC4_bit;
sbit led6 at RC5_bit;
sbit led7 at RC6_bit;
sbit led8 at RC7_bit;
sbit led_ok at RD0_bit;
sbit led_ok_dir at trisd0_bit;
يعني مثلا led1 هو نفسه RC0_bit اي بدلا من كتابه RC0_bit اكتب مكانه led1 وهذه طريقه لها فوائد منها
1- استطيع تغير led1 على اي رجل اريده مثلا كان led1 مربوط على RC1 واردت أغيره الى RC5 فأنه يتم كتابه كتالي
sbit led1 at RC5_bit
================================================
تعريف ON , OFF
كود:
#define on  1
#define off  0
وبتالي بدلا من اكتب 0 اكتب OFF و كذلك بدلا من كتابه 1 اكتب ON
هذا فقط لجعل كود مفهوم أكثر

==========================================

الالغاء خاصيه انلوك وجعل جميع الاطراف ديجيتل
كود:
adcon1=6;
=======================================
أجعل جميع البورتان مخارج
كود:
 trisc=0;
 led_ok_dir=0;
 trisa=0;
 portc=0;
 portd=0;
 porta=0;
=======================================
تعريف استقبال اشاره بأستخدام مانشيستركود
كود:
Man_Receive_Init();
=========================================
هذا الكود لضمان التهيئه استقبال اشاره ولكن يمكن حذفه
كود:
 while (1) {                                 // Wait for the "start" byte
            temp = Man_Receive(&error);         // Attempt byte receive
            if (temp == 0)                         // "Start" byte, see Transmitter example
            break;                                  // We got the starting sequence
            if (error)                                // Exit so we do not loop forever
            break;
           }
============================================
الان ندخل في لوب مستمر ونقرا البيانات بأستمرار
كود:
 temp = Man_Receive(&error);             // Attempt byte receive
هذا الكود مهم في حاله حصول error في قراءه يتم عمل مزامنه من جديد عند تكرار أخطاء
كود:
 if (error) {                            // If error occured
                       ErrorCount++;                         // Update error counter
                       if (ErrorCount > 20) {                // In case of multiple errors
                                             temp = Man_Synchro();   // Try to synchronize again
                                             ErrorCount = 0;         // Reset error counter
                                           }
                     }

================================
كود:
if(temp==0)led_ok=1;
طبعا هذا الكود لو ترجع قليلا الى كود الارسال لتجد انه اول مايشتغل مرسل يرسل كود 0 فأذا أستقبله دائره الاستقبال سيضيئ ليد لدلاله على ان مرسل ومستقبل يعملان بشكل صحيح (( طبعا يجب تشغيل مرسل ومستقبل في ان واحد ))
=======================================
كود:
if(data_recived==0)
                      {
                       switch(cont)  {
                                      case 0:if(temp==divce_address)cont=1;
                                             else cont=0;
                                             break;

                                      case 1:if(temp== ~divce_address)cont=2;
                                             else cont=0;
                                              break;
                                       case 2:kk[0]=temp;
                                               cont=3;
                                               break;
                                       case 3:kk[1]=temp;
                                              if(kk[0]== ~kk[1]) data_recived=1;
                                              cont=0;
                                              break;

                                     }
                      }
data_recived=0 تعني لم يتم أستكمال استقبال البيانات او لم يتم أستلامها اصلا
(switch(cont فيه اربع حالات طبعا لو ترجع الى كود الارسال لتجد اننا ارسلنا شفره متكونه من 4 بايتات وبتالي لابد من قراءتها بشكل صحيح ولكن كيف يتم ذلك

كود:
case 0:if(temp==divce_address)cont=1;
                                             else cont=0;
                                             break;
هذا الكود يعني انه اذا كان بيانات التي تم قراءها هو نفسه عنوان divce_address اذن انتقل الى رقم 1 واذا كان لا قم بتصفير عمليه الى حين قراءه بايت الاول من شفره لنفترض انه تم قراءه بايت الاول اذن نتقل الى case1

كود:
case 1:if(temp== ~divce_address)cont=2;
                                             else cont=0;
                                              break;
هنا اذا تم قراءه بايت الثاني من كود نتقل الى case2 واذا لم تكن قراءه هو نفس بايت الثاني نصفر عمليه ونعتبر شفره خاطئه ونعيد عمليه من جديد

ولنفترض انه تم قراءه البايت الثاني من شفره نتقل الى case2


كود:
case 2:kk[0]=temp;
                                               cont=3;
                                               break;
هنا بعدما قرأنا بايت الاول والثاني بنجاح هنا نقرأ البيانات ونخزنها في [kk[0
ونتقل مباشره الى case3


كود:
case 3:kk[1]=temp;
                                              if(kk[0]== ~kk[1]) data_recived=1;
                                              cont=0;
                                              break;
هنا سنقرأ البايت الرابع ونعمل له نفي فأذا كان يساوي بايت الثالث معناه الكود صحيح ونجعل (flag (data_recived=1

===============================================
هنا سوف يتم تشغيل او اطفاء ليدات حسب كود مخزون في [kk[0
كود:
if(data_recived==1)
                          {
                           data_recived=0;
                            switch(kk[0])
                                        {
                                         case 1:led1=on;break;
                                         case 11:led1=off;break;
                                         case 2:led2=on;break;
                                         case 21:led2=off;break;
                                         case 3:led3=on;break;
                                         case 31:led3=off;break;
                                         case 4:led4=on;break;
                                         case 41:led4=off;break;
                                          case 5:led5=on;break;
                                         case 51:led5=off;break;
                                         case 6:led6=on;break;
                                         case 61:led6=off;break;
                                         case 7:led7=on;break;
                                         case 71:led7=off;break;
                                         case 8:led8=on;break;
                                         case 81:led8=off;break;

                                        }
                                kk[0]=0;
                           }



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