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

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 19-09-2012, 11:44 PM المشاركة 1   
افتراضي الدورة الجديدة :الفصل السابع الاتصالات التسلسلية Serial Communications Twitter FaceBook Google+



الدورة الجديدة :الفصل السابع الاتصالات التسلسلية Serial Communications
تطبيقات الميكروكونترولر قد تتطلب فى بعض الحالات تنفيذ إقامة اتصالات تسلسلية مع غيرها من أجهزة نقل البيانات مثل الذاكرات memories وأجهزة الاستشعار sensors والكومبيوتر وحتى ميكروكونترولر آخر .
بغرض إجراء الاتصالات التسلسلية , بعض الميكروكونترولر يكون بها وحدات (تسمى موديولات modules ) مثل : I2C, SPI, USART, USB . كل من هذه الأشكال من الاتصالات يسمح بالاتصال بالوحدات الأخرى . الاتصال من خلال I2C يعتبر نموذجيا للاتصال بالذاكرات التسلسلية مثل : 24LC64, 24LC128, 24LC512 وغيرها . يستخدم البروتوكول SPI للاتصال مع أجهزة التخزين الكبيرة مثل الذاكرة SD . الوحدة USART هى أكثر الوحدات إستخداما , هذه الوحدة تسمح بالاتصلب بالأجهزة مثل أجهزة الاستشعار ووحدات الإرسال والاستقبال Xbee والكومبيوتر الشخصى ووحداتGPS والمتحكمات الآخرى . وأخيرا وحدة USB , والموجودة ضمن بناء قليل من المتحكمات مثل 18F2550 و 18F4550 , تسمح بالاتصال مع الكومبيوتر الشخصى من خلال منفذ USB وتعرف باسم HID " جهاز واجة الانسان" Human Interface Device .

الوحدة (الموديول) USART :
الموديول USART هو وحدة اتصال تسلسلى غير متزامن , هذه الميزة تجعل الطلب علية كبير حيث لا يحتاج لإشارة الساعة . ميزة أخرى , أنه ثنائى الاتجاه بمعنى أنه يمكنه إرسال واستقبال المعلومات فى وقت واحد. لهذا الغرض فهو يستخدم خطين لنقل المعلومات , أحدهما للإرسال والآخر للاستقبال . خواص بروتوكول هذا الاتصال هى:
"نبضة بدء" start bitوهى دائما بالمنطق المنخفض logic 0 و 8 أو 9 بت من البيانات data و واحد 1أو1.5 أو 2 بتات إنتهاءstop bits . وأخيرا يجب تحديد سرعة النقل بنفس القيمة فى كل من الجهازين المتصلين وهى فى الحالة الافتراضية 9600 bps (ليست قاعدة) .
المخطط التالى يبين سلوك نقا البيانات باستخدام هذا البروتوكول :




يستخدم هذا البروتوكول بالكومبيوتر الشخصى وبالأجهزة الأخرى وهو معروف بالبروتوكول RS232 , ويستخدم مستويات جهد محددة والتى تختلف عن مستويات الجهد التى يستخدمها الميكروكونترولر . فى البروتوكول RS232يكون المنطق صفر بقيمة الجهد +12 volts ويكون المنطق واحد بقيمة الجهد-12 volts . الكومبيوتر الشخصى والأجهزة الأخرى التى تتعامل مع المنفذ RS232 , تستخدم وصلة DB9 وبها 9 طرف معرفة كما فى الشكل التالى :







للاتصال الغير متزامن يجب إعداد التوصيلات كما فى الشكل التالى :








لعمل إتصال وربط للميكروكونترولر PIC مع جهاز به RS232 , يستخدم المحول المعروف MAX232 . يجب أن يتم تنفيذ ذلك كما فى الشكل التالى :





اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 19-09-2012, 11:52 PM المشاركة 2   
افتراضي


لاستخدام بروتوكول هذا الاتصال , يتضمن مترجم الميكروسى المكتبة UART والتى تحتوى على الدوال الأتية :
الدالة :

كود:
UART1_Init (const unsigned long baud_rate);

تستخدم هذه الدالة لتهيئة (إعداد) الموديول USART وتحديد سرعة الاتصال عن طريق البارامتر baud_rate .
مثال :

كود:
// Initialize hardware UART1 and establish communication at 9600 bps UART1_Init(9600);

الدالة


كود:
char UART1_Data_Ready();

تستخدم هذه الدالة فى اختبار ما إذا كان هناك بيانات بحافزbuffer الاستقبال جاهزة للقراءة فتعود بواحد وإلا فإن لم توجد بيانات فى حافز الاستقبال عادت بالصفر .
مثال :

كود:
// If data is ready, read it: if (UART1_Data_Ready() == 1) { receive = UART1_Read(); }
الدالة :

كود:
char UART1_Tx_Idle();
تستخدم هذه الدالة فى اختبار ما إذا كان مسجل الإزاحة الإرسال فارغ (أى تم إرسال البيانات) فتعود بواحد أما إذا كان هناك بيانات فى مسجل الإزاحة للإرسال والموديول جاهز لإرسال بيانات جديدة فتعود بالصفر .
مثال :

كود:
// If the previous data has been shifted out, send next data: if (UART1_Tx_Idle() == 1) { UART1_Write(_data); }
الدالة :
كود:
char UART1_Read();
تستخدم هذه الدالة فى استقبال (قراءة) بايت من حافز الدخل وتعود بالقيمة.

مثال:

كود:
// If data is ready, read it: if (UART1_Data_Ready() == 1) { receive = UART1_Read(); }

الدالة :

كود:
UART1_Read_Text (char * Output, char *Delimiter, char Attempts);

تستخدم هذه الدالة فى قراءة سلسلة (تتابع) الحروف المخزنة بالمتغير المشار إلية بالبارامتر Outputحتى يتم كشف تسلسل بشكل محدد delimiter sequence مبين بالبارامتر Delimiter . البارامتر Attempts يحدد عدد الحروف المتوقعة (طول النص) بالتسلسل المحدد . هذه الدالة تستدعى كوحدة واحدة حيث يتم تنفيذها عند وجود تتابع سلسلة الحروف بالشكل المحدد فإذا لم يوجد التتابع بالشكل المحدد يتم الخروج من الإحراء الموجود به الدالة
مثال :


كود:
UART1_Init(4800); // initialize UART1 module Delay_ms(100); while (1) { if (UART1_Data_Ready() == 1) { // if data is received UART1_Read_Text(output, "OK", 10); // reads text until 'OK' is found UART1_Write_Text(output); // sends back text } }
الدالة :


كود:
UART1_Write(char _data);

تستخدم هذه الدالة فى إرسال بايت البيانات الموجود بالمتغير _data من خلال موديول UART .
مثال :

كود:
unsigned char _data = 0x1E; ... UART1_Write(_data);
الدالة :


كود:
UART1_Write_Text(char * UART_text);

تستخدم هذه الدالة فى إرسال نص خلال UART ويجب أن ينتهى النص بالصفر 0 . هذا النص معطى بالبارامتر UART_text .

مثال :

كود:
UART1_Init(4800); // initialize UART1 module Delay_ms(100); while (1) { if (UART1_Data_Ready() == 1) { // if data is received UART1_Read_Text(output, "OK", 10); // reads text until 'OK' is found UART1_Write_Text(output); // sends back text } }



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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 19-09-2012, 11:54 PM المشاركة 3   
افتراضي


لتنفيذ هذا المثال ببرنامج ISIS يتم جلب العناصر التالية PIC 16F877A و VIRTUAL TERMINALوتكوين الدائرة كما فى الشكل التالى :







الوحدة الطرفية التخيلية VIRTUAL TERMINAL هى جهاز لمحاكاة الاتصال التسلسلى ولها نفس سلوك إداة النوافذ Windows HyperTerminal . هذا الجهاز يسمح بتحرير خواص الاتصالات مثل : عدد بتات البيانات , وسرعة النقل , وعدد بتات النهاية وغيرها . مع ذلك , فإن الجهاز معد بسرعة إفتراضية 9600 bps وجاهز للاستخدام مع PIC USART .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 19-09-2012, 11:59 PM المشاركة 4   
افتراضي


للتحقق من عمل هذا الموديول يمكن ترجمة ومحاكاة البرنامج التالى :



كود:
void main (void) { // Declaration of variables. char Data; UART1_Init (9600); // initialize UART1 module
// Transmitting the text: Welcome. UART1_Write_Text ("Welcome to the simulator:"); UART1_Write (13); // It transmits the ASCII CR = Crriage return UART1_Write (10); // It transmits the ASCII NL=New line // Text is transmitted with key. UART1_Write_Text ("Press a key! ..."); UART1_Write (13); // It transmits the ASCII CR = Crriage return UART1_Write (10); // It transmits the ASCII NL=New line while (1) // infinite loop. { // The if statement tests whether a data is ready to read. if (UART1_Data_Ready () == 1) { // It reads the data from the buffer. Data = UART1_Read (); // Print text feedback. UART1_Write_Text ("you pressed the key:"); UART1_Write (Data); // received data is transmitted. UART1_Write (13); // It transmits the ASCII CR = Crriage return UART1_Write (10); // It transmits the ASCII NL=New line } } }











الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 20-09-2012, 12:01 AM المشاركة 5   
افتراضي


أثناء المحاكاة يكن للمستخدم إرسال بيانات من خلال الوحدة الطرفية التخيلية ومشاهدة رد الفعل للميكروكونترولر PIC .



الصورة الرمزية 007
007
:: مهندس متواجد ::
تاريخ التسجيل: Apr 2005
الدولة: مدينة بورسعيد - مصر
المشاركات: 176
نشاط [ 007 ]
قوة السمعة:0
قديم 06-05-2014, 12:50 PM المشاركة 6   
افتراضي



شكرا جزيلا يا اخي
ولكن عند توصيل الدائرة المتكاملة Max232 فأن البك يقرأ البيانات معكوسة بسبب إحتواء الIC على Inverter .
فما الحل


الصورة الرمزية mar7aba_01
mar7aba_01
:: مهندس متميز ::
تاريخ التسجيل: Jan 2010
الدولة: المغرب
المشاركات: 746
نشاط [ mar7aba_01 ]
قوة السمعة:0
قديم 06-05-2014, 01:37 PM المشاركة 7   
افتراضي


ممكن تعوض المتكاملة ب ترونسزتورين ,,



الصورة الرمزية 007
007
:: مهندس متواجد ::
تاريخ التسجيل: Apr 2005
الدولة: مدينة بورسعيد - مصر
المشاركات: 176
نشاط [ 007 ]
قوة السمعة:0
قديم 06-05-2014, 03:06 PM المشاركة 8   
Wink


[SIZE="
شكرا اخي mar7aba_01 سوف اجربها واخبرك بالنتيجة
3"][/SIZE]

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025