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

   

mohamed_amine
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 87
نشاط [ mohamed_amine ]
قوة السمعة:
قديم 15-07-2014, 04:36 PM المشاركة 9   
افتراضي



السلام عليكم
أعتقد call والله اعلم انك مثلا عندك مصفوفه ذو 8 عناصر وداخل البرنامج خليت لوب لتسعه عناصر فهنا لما يضع عنصر تاسع مصفوفه ماراح يجدها فيعلق البرنامج وعلى بروتيس يعطيك راسائل خطأ
وايضا كما تفضلت اذا كثرت من دوال فرعيه ولكن هذه حاله كمبايلر مايكروسي برو راح يخبرك انه لاتوجد ميموري كافيه لـ stack

ولكن أعتقد مشكله أخي لربما هي بهاردوير ننتظر منه الرد للتأكد هل ربط عنده صحيح ام لا يعني خصوصا في ربط الى TX , RX بأعتبار انه في RS485 هو استخدم UART وبتالي ملزم بربط اللا الاطراف TX , RX

تحياتي الطيبه لكم
بارك الله فيكما وزادكما من علمه ونفع بكما بالنسبة للهاردوير فانه ليست هنالك مشكلة ،المشكلة في software لم أفهم لحد الآن السبب stack أو شي أخر لو كان عندي MICRICD DEBUGGER لوجدت المشكل :/ أو ترى أن أقوم بتغير PIC إلى18F؟؟


التعديل الأخير تم بواسطة : mohamed_amine بتاريخ 15-07-2014 الساعة 04:41 PM
اعلانات

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


بارك الله فيكما وزادكما من علمه ونفع بكما بالنسبة للهاردوير فانه ليست هنالك مشكلة ،المشكلة في software لم أفهم لحد الآن السبب stack أو شي أخر لو كان عندي MICRICD DEBUGGER لوجدت المشكل :/ أو ترى أن أقوم بتغير PIC إلى18F؟؟
السلام عليكم
أخي ممكن السؤال هو كيف عرفت ان هناك مشكله وانت لم تحاكي على البروتيس يعني انا طبقت مشروعك على البروتيس وهو يعمل
الرجاء التأكد من ربط هاردوير
ايضا مانوع ايسي المستخدم لــ RS485


تحياتي

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

mohamed_amine
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 87
نشاط [ mohamed_amine ]
قوة السمعة:
قديم 15-07-2014, 05:21 PM المشاركة 11   
افتراضي


استعملت MAX485 أخ حسن أنا متاكد أن هاردوير ليس فيه مشكل لان لو كان فيه مشكلة لا ضهرت من الأول مشكلة في كود SLAVE وهو 16F628A
أجرب مباشرةً فالواقع لن بروتوس في بعض الأحيان يعطي نتائج خاطة


التعديل الأخير تم بواسطة : mohamed_amine بتاريخ 15-07-2014 الساعة 05:28 PM

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


استعملت MAX485 أخ حسن أنا متاكد أن هاردوير ليس فيه مشكل لان لو كان فيه مشكلة لا ضهرت من الأول مشكلة في كود SLAVE وهو 16F628A
أجرب مباشرةً فالواقع لن بروتوس في بعض الأحيان يعطي نتائج خاطة
اذن أخي جرب هذه الاكواد ثم أعطينا نتيجه
ملاحظه مهمه // تردد كرستاله 4 ميكا والبك هو 16f876A في حاله وجود مشكله في تردد ارجو اخباري للتعديل
كود ماستر
كود:
sbit  rs485_rxtx_pin  at RA0_bit;
sbit  rs485_rxtx_pin_direction at TRISA0_bit;


char valeur_RS[10];
void interrupt()
{
  RS485Master_Receive(valeur_RS);
}
//*******************************************************//
void main(){
 TRISB5_bit=0;
 TRISB4_bit=0;
 RB5_bit=0;
 RB4_bit=0;

  ADCON1=0;
  CMCON=7;


  UART1_Init(19200);
    Delay_ms(100) ;
  RS485Master_Init();
    Delay_ms(100) ;

  valeur_RS[0] = 0;
  valeur_RS[1] = 0;
  valeur_RS[2] = 0;
  valeur_RS[4] = 0;
  valeur_RS[5] = 0;
  valeur_RS[6] = 0;
  valeur_RS[7] = 0;

  RCIE_bit = 1;
  TXIE_bit = 0;
  PEIE_bit = 1;
  GIE_bit = 1;
  Delay_ms(100) ;
  RB4_bit=1;
   RB5_bit=1;
   Delay_ms(300) ;
   RB4_bit=0;
   RB5_bit=0;
    while(1){
             //Delay_ms(1000);
             RS485Master_Send(valeur_RS,1,160);
             Delay_ms(500) ;
             if(valeur_RS[4])
                             {
                              valeur_RS[4] = 0;
                              valeur_RS[5] = 0;
                              if(valeur_RS[0]==1)
                                               {
                                                 RB5_bit=1;
                                                 Delay_ms(100) ;
                                                 RB5_bit=0;
                                                }
                             }
             //Delay_ms(10);
             RS485Master_Send(valeur_RS,1,161);
             Delay_ms(500) ;
             if(valeur_RS[4])
                             {
                              valeur_RS[4] = 0;
                              valeur_RS[5] = 0;
                              if(valeur_RS[0]==2)
                                               {
                                                RB4_bit=1;
                                                Delay_ms(100) ;
                                                RB4_bit=0;
                                                }

                             }
            }


}
**************************************************

الكود slave1

كود:
sbit  rs485_rxtx_pin at RA0_bit;
sbit  rs485_rxtx_pin_direction at TRISA0_bit;

char valeur_RS_2[9];

void interrupt() {
 RS485Slave_Receive(valeur_RS_2);
}
void main() {
  TRISB0_bit=0;
  RB0_bit=0;
  CMCON=7;

  T2CON = 0;
  TMR2 = 0;

  UART1_Init(19200);
  Delay_ms(100);
  RS485Slave_Init(160);

   valeur_RS_2[4] = 0;
   valeur_RS_2[5] = 0;
   valeur_RS_2[6] = 0;

  RCIE_bit = 1;
  TXIE_bit = 0;
  PEIE_bit = 1;
  GIE_bit = 1;


  do 
   {
    if(valeur_RS_2[4]==255)
                           {
                           valeur_RS_2[4] = 0;
                           valeur_RS_2[5] =0;

                           valeur_RS_2[0]=1;
                           valeur_RS_2[1]=5;
                           valeur_RS_2[2]=20;
                           RB0_bit=1;
                           Delay_ms(100);
                           RB0_bit=0;
                           RS485Slave_Send( valeur_RS_2,3);
                          }

    }while(1);
}
************************************************** ****

الكود slave2

كود:
sbit  rs485_rxtx_pin at RA0_bit;
sbit  rs485_rxtx_pin_direction at TRISA0_bit;
char valeur_RS_2[9];
//*******************************************************************//
void interrupt() {
 RS485Slave_Receive(valeur_RS_2);
}

void main() {
  TRISB0_bit=0;
  RB0_bit=0;
  CMCON=7;

  T2CON = 0;
  TMR2 = 0;

  UART1_Init(19200);
  Delay_ms(100);
  RS485Slave_Init(161);

   valeur_RS_2[4] = 0;
   valeur_RS_2[5] = 0;
   valeur_RS_2[6] = 0;

  RCIE_bit = 1;
  TXIE_bit = 0;
  PEIE_bit = 1;
  GIE_bit = 1;


  do {
      if(valeur_RS_2[4]==255)
                             {
                              valeur_RS_2[4] = 0;
                              valeur_RS_2[5] =0;

                              valeur_RS_2[0]=2;
                              valeur_RS_2[1]=5;
                              valeur_RS_2[2]=20;
                              RB0_bit=1;
                              Delay_ms(100);
                              RB0_bit=0;
                              RS485Slave_Send( valeur_RS_2,3);
                             }
    }while(1);
    
}
حيث زدت عناصر المصفوفه لانك لو تلاحظ مثال الموجود في مايكروسي برو للمكتبه RS485 مختار في ماستر عدد عناصر مصفوفه 10 وليست 8 وكذلك في slave عناصر مصفوفه 9 بدلا من 8 ولربما هذا هو سبب رئيسي في ظهور stack وللعلم stack تظهر عندما لم يجد مايكرو مكان لحجز العنصر مثلا مصفوفه 8 عناصر وانت وضعت لوب 10 عناصر فمايكرو ماراح يجد عنصر 9 و10 ابدا
جرب الكود واعطينا خبر وان شالله يعمل معاك


mohamed_amine
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 87
نشاط [ mohamed_amine ]
قوة السمعة:
قديم 17-07-2014, 11:34 AM المشاركة 13   
افتراضي


اذن أخي جرب هذه الاكواد ثم أعطينا نتيجه
ملاحظه مهمه // تردد كرستاله 4 ميكا والبك هو 16f876A في حاله وجود مشكله في تردد ارجو اخباري للتعديل
كود ماستر
كود:
sbit  rs485_rxtx_pin  at RA0_bit;
sbit  rs485_rxtx_pin_direction at TRISA0_bit;


char valeur_RS[10];
void interrupt()
{
  RS485Master_Receive(valeur_RS);
}
//*******************************************************//
void main(){
 TRISB5_bit=0;
 TRISB4_bit=0;
 RB5_bit=0;
 RB4_bit=0;

  ADCON1=0;
  CMCON=7;


  UART1_Init(19200);
    Delay_ms(100) ;
  RS485Master_Init();
    Delay_ms(100) ;

  valeur_RS[0] = 0;
  valeur_RS[1] = 0;
  valeur_RS[2] = 0;
  valeur_RS[4] = 0;
  valeur_RS[5] = 0;
  valeur_RS[6] = 0;
  valeur_RS[7] = 0;

  RCIE_bit = 1;
  TXIE_bit = 0;
  PEIE_bit = 1;
  GIE_bit = 1;
  Delay_ms(100) ;
  RB4_bit=1;
   RB5_bit=1;
   Delay_ms(300) ;
   RB4_bit=0;
   RB5_bit=0;
    while(1){
             //Delay_ms(1000);
             RS485Master_Send(valeur_RS,1,160);
             Delay_ms(500) ;
             if(valeur_RS[4])
                             {
                              valeur_RS[4] = 0;
                              valeur_RS[5] = 0;
                              if(valeur_RS[0]==1)
                                               {
                                                 RB5_bit=1;
                                                 Delay_ms(100) ;
                                                 RB5_bit=0;
                                                }
                             }
             //Delay_ms(10);
             RS485Master_Send(valeur_RS,1,161);
             Delay_ms(500) ;
             if(valeur_RS[4])
                             {
                              valeur_RS[4] = 0;
                              valeur_RS[5] = 0;
                              if(valeur_RS[0]==2)
                                               {
                                                RB4_bit=1;
                                                Delay_ms(100) ;
                                                RB4_bit=0;
                                                }

                             }
            }


}
**************************************************

الكود slave1

كود:
sbit  rs485_rxtx_pin at RA0_bit;
sbit  rs485_rxtx_pin_direction at TRISA0_bit;

char valeur_RS_2[9];

void interrupt() {
 RS485Slave_Receive(valeur_RS_2);
}
void main() {
  TRISB0_bit=0;
  RB0_bit=0;
  CMCON=7;

  T2CON = 0;
  TMR2 = 0;

  UART1_Init(19200);
  Delay_ms(100);
  RS485Slave_Init(160);

   valeur_RS_2[4] = 0;
   valeur_RS_2[5] = 0;
   valeur_RS_2[6] = 0;

  RCIE_bit = 1;
  TXIE_bit = 0;
  PEIE_bit = 1;
  GIE_bit = 1;


  do 
   {
    if(valeur_RS_2[4]==255)
                           {
                           valeur_RS_2[4] = 0;
                           valeur_RS_2[5] =0;

                           valeur_RS_2[0]=1;
                           valeur_RS_2[1]=5;
                           valeur_RS_2[2]=20;
                           RB0_bit=1;
                           Delay_ms(100);
                           RB0_bit=0;
                           RS485Slave_Send( valeur_RS_2,3);
                          }

    }while(1);
}
************************************************** ****

الكود slave2

كود:
sbit  rs485_rxtx_pin at RA0_bit;
sbit  rs485_rxtx_pin_direction at TRISA0_bit;
char valeur_RS_2[9];
//*******************************************************************//
void interrupt() {
 RS485Slave_Receive(valeur_RS_2);
}

void main() {
  TRISB0_bit=0;
  RB0_bit=0;
  CMCON=7;

  T2CON = 0;
  TMR2 = 0;

  UART1_Init(19200);
  Delay_ms(100);
  RS485Slave_Init(161);

   valeur_RS_2[4] = 0;
   valeur_RS_2[5] = 0;
   valeur_RS_2[6] = 0;

  RCIE_bit = 1;
  TXIE_bit = 0;
  PEIE_bit = 1;
  GIE_bit = 1;


  do {
      if(valeur_RS_2[4]==255)
                             {
                              valeur_RS_2[4] = 0;
                              valeur_RS_2[5] =0;

                              valeur_RS_2[0]=2;
                              valeur_RS_2[1]=5;
                              valeur_RS_2[2]=20;
                              RB0_bit=1;
                              Delay_ms(100);
                              RB0_bit=0;
                              RS485Slave_Send( valeur_RS_2,3);
                             }
    }while(1);
    
}
حيث زدت عناصر المصفوفه لانك لو تلاحظ مثال الموجود في مايكروسي برو للمكتبه RS485 مختار في ماستر عدد عناصر مصفوفه 10 وليست 8 وكذلك في slave عناصر مصفوفه 9 بدلا من 8 ولربما هذا هو سبب رئيسي في ظهور stack وللعلم stack تظهر عندما لم يجد مايكرو مكان لحجز العنصر مثلا مصفوفه 8 عناصر وانت وضعت لوب 10 عناصر فمايكرو ماراح يجد عنصر 9 و10 ابدا
جرب الكود واعطينا خبر وان شالله يعمل معاك
بارك الله فيك اخ حسن لاقت تعبتك معايا ،جعله الله في ميزان حسناتك ورزقك فراديس جنانه وجعلك من المعتوقين،للاسف المشكل هو هو ليس هنالك تطور


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


بارك الله فيك اخ حسن لاقت تعبتك معايا ،جعله الله في ميزان حسناتك ورزقك فراديس جنانه وجعلك من المعتوقين،للاسف المشكل هو هو ليس هنالك تطور
السلام عليكم
أخي الكريم شكرا على دعائكم الطيب وأتمنى لكم بمثل مادعيتم لي

ممكن أخي سؤال انت تطبق عملي فماهي مشكله الي تظهر لك ايمكنك تصويرها وكذلك ارفاق مخطط دائره لنا

تحياتي


mohamed_amine
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 87
نشاط [ mohamed_amine ]
قوة السمعة:
قديم 31-07-2014, 01:12 PM المشاركة 15   
افتراضي


تم الحل مشكلة كانت فال-interrupts كان هنالك 2 إنتربت في نفس لوقت بنسبة لل-16F628A


abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:
قديم 07-08-2014, 02:19 AM المشاركة 16   
افتراضي


السلام عليكم
أخي ممكن السؤال هو كيف عرفت ان هناك مشكله وانت لم تحاكي على البروتيس يعني انا طبقت مشروعك على البروتيس وهو يعمل
الرجاء التأكد من ربط هاردوير
ايضا مانوع ايسي المستخدم لــ RS485


تحياتي
بارك الله فيك اخي الفاضل
ممكن اخي سؤال؟
اريد ان اتحكم في ديود ليد الموجود في سيلفر2 من ماستر ثم من سيلفر 1
لم اعرف كيف اضيفها في الكود الدي صححته الاخ العزيز وشكرا
تقبل مروري



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