3rmcTnUdr

3rmcTnUdr 3rmcTnUdr

micropediastore
from micropediastore More from this publisher
30.03.2015 Views

حيث أن املتغري Data هو متغري ال تزيد قيمته عن 8 بت إذ أن هذه الدالة مصممة على هذا األساس،‏ وسيتبني يف مشروع هذا الفصل كيفية إرسال بيانات حجمها أكرب من 8 بت ... الدالة الثالثة وهي دالة تستخدم الستقبال البيانات اليت تأتى إليه من اجلهاز اآلخر،‏ حيث تستخدم لقراءة حرف واحد بالشكل التالي:‏ Uart1_Read( ); وحيث هذه الدالة ترجع حرف فالبد من ختصيصها ملتغري – وليكن مثال من النوع احلريف – يتم ختزين فيه ما ترجعه هذه الدالة.‏ وهنا ملحوظة البد من ذكرها وهي أنه عندما يقوم اجلهاز األول بإرسال بايت للجهاز الثاني فإن هذا البايت يتم ختزينه يف Buffer إىل أن يتم قراءته،‏ وبالتالي لضمان وجود داتا يف ال Buffer قبل دالة القراءة البد من اختبار وجود حرف يف ال Buffer بعملية القراءة من األساس وهذا يتم من خالل الكود اآلتي:‏ أوال قبل عملية القراءة وإن مل يكن به داتا ال نقوم • ملحوظات كتابة الدالة كاآلتي وميكنك جتربة ذلك بنفسك ... Uart1_Read() أو كاآلتي UART1_Read() • صحيحاً‏ توجد أيضا دوال أخرى مينك االطالع عليها ومنها على سبيل املثال دالة تستخدم إلرسال مجلة كاملة مثل:‏ Uart1_Write_Text(“Engineer”); 1 نالحظ أيضا يف كل الدوال السابقة وجود الرقم وهذا معناه انه ميكن أن يكون هناك دوال ملحق بها الرقم 4 أيضا إذا كان امليكرو الذي نتعامل معه حيتوي على موديولني يتعامالن مع ال • ... Serial Interface 421 ميكروبيديا - موسوعة امليكروكنرتولر elgammalelectronics.com

مشروع تطبيقي حيتوي املشروع على اثنني من امليكروكنرتولر،‏ األول سيقوم بقراءة قيمة مقاومة ‏)باعتبارها سينسور مثال(‏ ويقوم بإرسال هذه القيمة إىل امليكرو الثاني،‏ ويقوم امليكرو الثاني بالتحكم يف سرعة موتور على أساس القيمة اليت استلمها من امليكرو األول ... قبل البدء يف املشروع قد يتبادر إىل الذهن سؤال وهو:‏ ملاذا استخدمنا اثنني ميكروكنرتولر يف حني أن استخدام واحد فقط يغين؟؟ ... وهو فعال سؤال منطقي وسنجد إجابته يف نهاية املشروع ... امليكرو األول سيقوم بقراءة املقاومة املتغرية – وبالتالي حنتاج موديول ال – ADC Interface ثم يقوم بإرساهلا إىل امليكرو الثاني وبالتالي سنحتاج ال إىل ال initialization اآلتيتني داخل الدالة الرئيسية:‏ Serial Interface ومن ذلك سنستخدم داليت ADC_Init(); UART1_Init(9600); وعندئذ سيكون الربنامج الذي سينفذه امليكرو األول املرسل (Transmitter) كاآلتي:‏ أن وهو برنامج سهل وبسيط لكن به سؤال يقول:‏ ملاذا قمنا بقسمة القيمة على ... 2 واإلجابة تتلخص يف ال ADC يقرأ القيمة يف 11 بت وبالتالي أقصى قيمة ميكنه قراءتها هي ،1142 uart1_write ترسل واحد بايت فقط أي 8 ولكن الدالة بت فقط يف كل مرة وأقصى قيمة هلذه ال بت 8 بالنظام الثنائي هي 499، وبالتالي ال ميكننا قراءة القيمة من ال ADC ثم إرساهلا مباشرة،‏ وبالتالي الفصل الثاني عشر:‏ االتصال التسلسلي 424 elgammalelectronics.com

مشروع تطبيقي<br />

حيتوي املشروع على اثنني من امليكروكنرتولر،‏ األول سيقوم بقراءة قيمة مقاومة ‏)باعتبارها<br />

سينسور مثال(‏ ويقوم بإرسال هذه القيمة إىل امليكرو الثاني،‏ ويقوم امليكرو الثاني بالتحكم يف<br />

سرعة موتور على أساس القيمة اليت استلمها من امليكرو األول ...<br />

قبل البدء يف املشروع قد يتبادر إىل الذهن سؤال وهو:‏ ملاذا استخدمنا اثنني ميكروكنرتولر يف<br />

حني أن استخدام واحد فقط يغين؟؟ ... وهو فعال سؤال منطقي وسنجد إجابته يف نهاية املشروع ...<br />

امليكرو األول<br />

سيقوم بقراءة املقاومة املتغرية – وبالتالي حنتاج موديول ال – ADC Interface ثم يقوم بإرساهلا إىل<br />

امليكرو<br />

الثاني<br />

وبالتالي<br />

سنحتاج<br />

ال إىل<br />

ال initialization اآلتيتني داخل الدالة الرئيسية:‏<br />

Serial Interface<br />

ومن ذلك<br />

سنستخدم داليت<br />

ADC_Init();<br />

UART1_Init(9600);<br />

وعندئذ سيكون الربنامج الذي سينفذه امليكرو األول املرسل (Transmitter) كاآلتي:‏<br />

أن<br />

وهو برنامج سهل وبسيط لكن به سؤال يقول:‏ ملاذا قمنا بقسمة القيمة على ... 2 واإلجابة تتلخص يف<br />

ال ADC<br />

يقرأ القيمة يف<br />

11<br />

بت وبالتالي أقصى قيمة ميكنه قراءتها هي<br />

،1142<br />

uart1_write<br />

ترسل<br />

واحد بايت فقط أي<br />

8<br />

ولكن الدالة<br />

بت فقط يف كل مرة وأقصى قيمة هلذه ال<br />

بت 8<br />

بالنظام الثنائي هي 499، وبالتالي ال ميكننا قراءة القيمة من ال ADC ثم إرساهلا مباشرة،‏ وبالتالي<br />

الفصل الثاني عشر:‏ االتصال التسلسلي 424<br />

elgammalelectronics.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!