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

   

buoyya
:: مهندس ::
تاريخ التسجيل: Apr 2007
المشاركات: 17
نشاط [ buoyya ]
قوة السمعة:
قديم 10-12-2013, 06:58 PM المشاركة 33   
افتراضي



السلام عليكم اخي حسن

اريد ان استفسرك عن كيفية استخدام اداة المحاكات usart terminal في الميكروسي,و كيف يمكن ربطها مع البروتوس كما جاء في الفيديو الذي ارفقته, وهل ستحتاج الى جوال للمحاكات, ام الى مداخل وهمية فقط...

شكرا جزيلا على حسن تفهمك واهتمامك بارك الله فيك

اعلانات

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


السلام عليكم اخي حسن

اريد ان استفسرك عن كيفية استخدام اداة المحاكات usart terminal في الميكروسي,و كيف يمكن ربطها مع البروتوس كما جاء في الفيديو الذي ارفقته, وهل ستحتاج الى جوال للمحاكات, ام الى مداخل وهمية فقط...

شكرا جزيلا على حسن تفهمك واهتمامك بارك الله فيك
السلام عليكم
اخي كريم يتم ذلك عن طريق برنامج اسمه VSP
http://www.qariya.com/vb/showthread.php?t=132712&page=2
اي اننا نخلق بورت وهمي
ارجو قراءه مشاركه بتداءا من رقم مشاركه #13

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

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


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

يعني اذا اريد استبدل المودم بتلفون لازم يرتبط بالكمبيوتر بالحقيقه
هكذا تقصد
او يرتبط اثناء المحاكاه
السلام عليكم
اقصد اخي كريم انك تربط هاتف مع الحاسبه عند محاكاه واخي بالنسبه لــGSM موجوده على الانترنيت يمكن شرائها
واخي عندما تربط هاتف مع حاسبه وقمت بتجربه (( محاكاه )) عن طريق ارسال رساله الى هاتف فأذا اشتغل معاك يعني بتأكيد سوف يعمل عند أستخدام قطعه GSM
ارجو اطلاع على هذه مشاركه
http://www.qariya.com/vb/showthread.php?t=122595&page=8
حيث كانت مشكلتي هي قراءه من هاتف لان هاتف الذي أستخدمته لايقبل بعض اوامر


buoyya
:: مهندس ::
تاريخ التسجيل: Apr 2007
المشاركات: 17
نشاط [ buoyya ]
قوة السمعة:
قديم 10-12-2013, 07:25 PM المشاركة 36   
افتراضي


السلام عليكم
اخي كريم يتم ذلك عن طريق برنامج اسمه VSP
http://www.qariya.com/vb/showthread.php?t=132712&page=2
اي اننا نخلق بورت وهمي
ارجو قراءه مشاركه بتداءا من رقم مشاركه #13
شكرا لك اخي الكريم على الرد السريع جزاك الله خيرا


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


شكرا لك اخي الكريم على الرد السريع جزاك الله خيرا
بالخدمه اخي كريم


buoyya
:: مهندس ::
تاريخ التسجيل: Apr 2007
المشاركات: 17
نشاط [ buoyya ]
قوة السمعة:
قديم 11-12-2013, 09:26 PM المشاركة 38   
افتراضي


أخي حسن
الحمد لله تمت المحاكات بنجاح على 16F877A والتحكم في ثمانية ليدات بعد التعديل على الكود و الفضل يرجع لك أخي حسن وفقك الله لما فيه خير للأمة الاسلامية..

لكن وجدت صعوبة في فهم الجزء الخاص بالتحكم بأي رقم
فقد قمت بتعريف المتغيرات و المصفوفة كما يلي:
كود:
 char gsm_number = 0;
char i = 0;
char phone_number[15];
ووضعت الكود الخاص بقراءة رقم الهاتف بعد الكود التالي مباشرة فهل هذا صحيح:
كود:
 // Reading the data from UART in the interuppt routine
void interrupt()
{
  char tmp;
if (RCIF_bit == 1)     // Do we have uart rx interrupt request?
   {
    tmp = UART1_Read();                         // Get received byte
وهناك مشكلة بعد استبدال دالة ارسال الرسائل
كود:
 void Send_Msg(char* Msg)
يعطيني الخطأ
Illegal pointer conversion 384
في الكود التالي
كود:
 GM862_Send(phone_number);
فما الحل أخي بارك الله فيك


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


أخي حسن
الحمد لله تمت المحاكات بنجاح على 16F877A والتحكم في ثمانية ليدات بعد التعديل على الكود و الفضل يرجع لك أخي حسن وفقك الله لما فيه خير للأمة الاسلامية..

لكن وجدت صعوبة في فهم الجزء الخاص بالتحكم بأي رقم
فقد قمت بتعريف المتغيرات و المصفوفة كما يلي:
كود:
 char gsm_number = 0;
char i = 0;
char phone_number[15];
ووضعت الكود الخاص بقراءة رقم الهاتف بعد الكود التالي مباشرة فهل هذا صحيح:
كود:
 // Reading the data from UART in the interuppt routine
void interrupt()
{
  char tmp;
if (RCIF_bit == 1)     // Do we have uart rx interrupt request?
   {
    tmp = UART1_Read();                         // Get received byte
وهناك مشكلة بعد استبدال دالة ارسال الرسائل
كود:
 void Send_Msg(char* Msg)
يعطيني الخطأ
Illegal pointer conversion 384
في الكود التالي
كود:
 GM862_Send(phone_number);
فما الحل أخي بارك الله فيك
السلام عليكم
اخي كريم بالطبع يتم وضع كود القراءه الهاتف ضمن داله الانتربت ولو تلاحظ تصبح عندك ترتيب كود كتالي
كود:
void interrupt()
{
  char tmp;
if (RCIF_bit == 1)     // Do we have uart rx interrupt request?
   {
    tmp = UART1_Read();                         // Get received byte
    switch (gsm_state)
    {
      .
      .
      .
    }
    switch (gsm_number)
    {
      .
      .
      .
    }
}
}
===============================================
اخي بالنسبه لداله الارسال void Send_Msg و GM862_Send لهما نفس وظيفه
ماعليك سوى حذف داله GM862_Send واستبدالها بداله void Send_Msg
يعني لاتقم بتعريف هذه داله GM862_Send لاني عرفت مسبقا في برنامج مشروع تحكم داله الارسال وهي void Send_Msg لذلك ارجو تعديل الكود واستبدال كل GM862_Send ب Send_Msg
بالتوفيق اخي


buoyya
:: مهندس ::
تاريخ التسجيل: Apr 2007
المشاركات: 17
نشاط [ buoyya ]
قوة السمعة:
قديم 12-12-2013, 08:06 PM المشاركة 40   
افتراضي


===============================================
اخي بالنسبه لداله الارسال void Send_Msg و GM862_Send لهما نفس وظيفه
ماعليك سوى حذف داله GM862_Send واستبدالها بداله void Send_Msg
يعني لاتقم بتعريف هذه داله GM862_Send لاني عرفت مسبقا في برنامج مشروع تحكم داله الارسال وهي void Send_Msg لذلك ارجو تعديل الكود واستبدال كل GM862_Send ب Send_Msg
بالتوفيق اخي
شكرا على تجاوبك اخي حسن
بالنسبة لدالة الارسال التالية :
كود:
// Send Status SMS 
void Send_Msg(char* Msg) 
{ 
       GM862_Send(atc3); 
       while (rsp != GSM_Ready_To_Receive_Message) ; 
       GM862_Send_Ram(Msg); 
       UART1_Write(0x1A); 
       UART1_Write(0x0D); 
       while (rsp != GSM_OK) ; 
}
استبدلتها بهذه كما وضحت في شرحك أخي الكريم:
كود:
// Send Status SMS 
void Send_Msg(char* Msg) 
{ 
       GM862_Send(atc3); 
      GM862_Send(phone_number); 
       while (rsp != GSM_Ready_To_Receive_Message) ; 
       GM862_Send_Ram(Msg); 
       UART1_Write(0x1A); 
       UART1_Write(0x0D); 
       while (rsp != GSM_OK) ; 
}
لاكنه عند الفحص يعطيني خطأ في السطر التالي
كود:
 GM862_Send(phone_number);
لذلك عدلته على النحو التالي :
كود:
 GM862_Send(phone_number[i]);
بعد الفحص كل شيء جيد لكن عند المحاكات و ارسال كلمة status? للجوال يتوقف البيك عن الارسال بعد الامر التالي "=AT+CGMS
ويبقى متوقف دون ان يكمل بقية الاوامر كتحديد رقم الهاتف و الرسالة...

وبعد تجربة المشروع الاصلي الذي ارفقته اخي حسن عند المحاكات بارسال كلمة status? للجوال يتوقف البيك عن الارسال بعد كلمة end اي دون ان يرسل الرسالة و يبقى متوقف

اعتذر اخي الكريم عن كثرة الاسئلة فأنا مبتدأ في هذا المجال و شكرا على تفهمك أخي بارك الله فيك



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