خطوتك الاولى مع متحكمات pic


(eng.Eiad) #1

السلام عليكم و رحمة الله

الدروس التالية لمتحكم pic16f877 ذو 40 رجلاً
مع الملاحظة انه بدراسة هذا المتحكم تكون تلقائياً قادراً على التعامل مع بقية العائلة
مثلاً pic16f84 الصغير واسع الانتشار
لابد في البداية من تنزيل الـ datasheet :
http://ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf#search=%22pic16f877%20filetype%3Apdf%22

اكبر استفادة من الداتا شيت هي في تفاصيل المسجلات و ليس البنية

في النهاية ارجو تشجيعكم فانا لا اضع الدروس لنفسي
بعد الانتهاء سيتم وضع ملف وورد كامل للتنزيل ان شاء الله

(eng.Eiad) #2

بنية متحكمات PIC :
عند دراسة المتحكمات PIC أو أي متحكمات أخرى فإننا نصنف بنية المتحكم بحيث تنقسم إلى مجموعتين بنيويتين أساسيتين :
1. نواة المتحكم ( Core ) .
2. محيطيات المتحكم ( Peripherals ) .
المتحكم هو عبارة عن معالج قد طور بإضافة بعض المحيطيات بشكل مدمج في دارته المتكاملة و هذه المحيطيات ( Peripherals ) تأخذ تسميتها نسبة إلى قلب المتحكم الأساسي الذي هو المعالج و الذي سنصطلح على تسميته بنيوياً باسم نواة المتحكم ( Core ) و يجب الانتباه إلى الفرق بين المحيطيات التي هي جزء من بنية المتحكم و بين الدارات الملحقة أو المتممة التي تكون خارج شريحة المتحكم و التي ربما تسمى أحياناً محيطيات .
Microcontroller = The Core + Peripheral

أ‌- نواة التحكم ( The Core ) :
تشتمل نواة المتحكم على المكونات و الفعاليات الأساسية التي يتشكل منها المعالج الأساسي مع ذاكرتيه ( ذاكرة البرنامج و ذاكرة المعطيات ) و على هذا الأساس سندرس المكونات الأساسية التالية لنواة المتحكم :
1. وحدة المعالجة المركزية CPU .
2. الذاكرة و تنظيم الذاكرة .
3. آليات المقاطعة .
4. هزاز الشريحة .
5. مؤقت المراقبة و نمط الراحة .
6. نظام التصفير .
§ محيطيات المتحكم ( The Peripherals ) :

تنقسم محيطيات المتحكم إلى قسمين أولهما ما يقوم بربط المتحكم مع عالمه الخارجي مثل :

الأقطاب I/O ( دخل/خرج ) , المحولات ADC ( دخل ) , وحدة التعديل PWM ( خرج ) …

و القسم الثاني ما ينفذ فعاليات داخلية ( كالمؤقتات ) , و المحيطيات المتاحة مع متحكمات PIC هي :

1. نوافذ الدخل/الخرج I/O ذات الأغراض العامة .

2. المؤقتات Timer2 , Timer1 , Timer0 .
3. المحول التشابهي الرقمي ADC ثماني الخانة (8-Bit ) .
4. نظام ( المسك – المقارنة – التعديل PWM ) .
5. ذاكرة المعطيات EEPROM الداخلية .
6. نافذة الاتصالات التسلسلية المتواقتة SSP .
7. نظام الارسال - الاستقبال المتزامن/ غير المتزامن ذو الأغراض العامة USART .
8. المقارنات ( Comparators ) .
9. المحول التشابهي الرقمي ADC عشري الخانة (10-Bit) .
10. النافذة المقادة التفرعية PIC .
11. قائد الشاشة LCD .
بالإضافة إلى بعض المتممات الأخرى .


(eng.Eiad) #3

المخطط الصندوقي :


#4

جزاك الله خيرا على هذا المجهود الرائع والمفيد
وان شاء الله قريبا سيتم عمل دورة فى هذا المتحكم لكل اعضاء المنتدى


(mechanical) #5

اشكرك اخي الكريم على المعلومات الجبارة


#6

نرجو اخى العزيز توضيح هل الدورة منقولة ام من تاليفك حتى يتم حسابها فى مسابقة افضل عضو


(eng.Eiad) #7

ليست منقولة من اي موقع اخر
فجزء منها كتبه طلاب زملاء في جامعتي و اضفت مع زملائي في مشروع التخرج عليها و عدلنا
و استخدمت كمقدمة نظرية للمشروع…

شكراً لاهتمامك اخي أحمد


(eng.Eiad) #8

و أهلا بك أخي mechanical


#9

جزاك الله خيرا اخى العزيز
على مجعودك العظيم وان شاء تكون الدورة مفيدة لكل الاعضاء


(eng.Eiad) #10

وحدة المعالجة المركزية CPU ووحدة الحساب والمنطقALU :
تعتبر وحدة المعالجة المركزية CPU مسؤولة عن وضع التعليمات المخزنة في ذاكرة البرنامج قيد التنفيذ وذلك للتحكم بعمل مجمل شريحة المتحكم PIC بما يتوافق مع العملية التقنية .
إن العديد من هذه التعليمات تنفذ على محتويات ذاكرة المعطيات ونحتاج غالباً لتنفيذ هذه التعليمات إلى وحدة الحساب والمنطقARITHMETIC LOGIC UNIT –ALU –
والتي تقوم بالإضافة إلى إنجاز العمليات الحسابية والمنطقية بتحديث خانات الحالة ( الموجودة في المسجل STATUS ) حيث أن تنفيذ العمليات الحسابية والمنطقية سيغير خانات الحالة تبعاً لنتيجة هذه التعليمات .

وحدة المعالجة المركزية CPU :
تعتبر وحدة المعالجة CPU بمثابة الدماغ البشري في شريحة المتحكم ، وهي مسؤولة عن :
§ جلب التعليمة المراد تنفيذها ( FETCHING ).
§ فك شيفرة هذه التعليمة (DECODING ).
§ تنفيذ هذه التعليمة (EXECUTING).
وتستعين وحدة المعالجة CPU بوحدة الحساب والمنطق ALU من أجل إتمام تنفيذ التعليمة و ذلك بتنفيذ العمليات الحسابية والمنطقية – وتتحكم وحدة المعالجة بما يلي :
§ ممر عنونة ذاكرة البرنامج (PROGRAM MEMORY ADDRESS BUS).
§ ممر عنونة ذاكرة المعطيات (DATA MEMORY ADDRESS BUS) .
§ الوصول إلى المكدس(ACCESS TO THE STACK) .

وحدة الحساب والمنطق ALU :
تمتلك متحكمات PIC وحدة حساب ومنطق ALU ثمانية الخانة (8 bits) بالإضافة إلى مسجل العمل (WR) WORKING REGISTER.
نبين في الشكل كيف تقوم الوحدة ALU بتنفيذ الوظائف الحسابية والبوليانية (المنطقية ) بمساعدة WR .


(eng.Eiad) #11

تنظيم الذاكرة:
يوجد قسمان أساسيان في الذاكرة هما: ذاكرة البرنامج(program mem) ، وذاكرة المعطياتdata mem)) ، ولكل قسم ممر خاص به لذلك يمكن الوصول إليهما معاً خلال نفس دورة التعليمة وهذا ما يعرف ببنية Harvard .
إن ذاكرة المعطيات يمكن تقسيمها إلى:
· ذاكرة ram ذات أغراض عامة (general purpose ram).
· مسجلات الوظائف الخاصة SFRs (special function registers).
وهذه المسجلات إما أن تتحكم بعمل نواة المتحكم(core) أو أن تتحكم بعمل المحيطياتperipherals)) .

تنظيم ذاكرة البرنامج:
عداد البرنامج PC (Program Counter)
هو عداد ذو 13 bits وبالتالي يستطيع عنونة ذاكرة ذات عدد من المواقع قدره 8 k words حيث أن طول كلمة ذاكرة البرنامج هو 14 bits .
ولما كانت جميع التعليمات هي أحادية الكلمة فإن عدد التعليمات المتاحة لنا في برنامج المتحكم هو 8192 تعليمة.
يتألف عداد البرنامج PC من قسمين :
· قسم سفلي هو المسجل PCL وهو مسجل قابل للقراءة منه و الكتابة فيه readable\writable)).
· قسم علوي هو المسجل PCH ولايمكن القراءة منه أو الكتابة فيه مباشرة ، إنما يتم تحديثه دائماً من خلال المسجل PCLATH الذي يمكن الوصول إليه قراءة أو كتابة.

تقسيم ذاكرة البرنامج و المخطط البنيوي لها

تقسم ذاكرة البرنامج إلى أربع صفحات كل صفحة بسعة 2Kx14Bit و ( يمكن مراجعة الداتا شيت ).

يتم الانتقال بين هذه الصفحات بتغيير الخانتين pc (11:12) بواسطة تغيير المسجل PCLATCH وهو المسجل ماسك القسم العلوي للعداد PC (PROGRAM COUNTER LATCH HIGH ) وهذا المسجل هو أحد مسجلات الوظائف الخاصة .

عند تنفيذ تعليمات البرنامج و نهاية إحدى صفحات البرنامج فإن العداد PC سينتقل آلياً إلى الصفحة التالية بدون أي تدخل من المستخدم


(eng.Eiad) #12

صورة المسجلات :

و كما قلت هذه المسجلات الخاصة هي الاهم تتحكم بكافة الوظائف
ابتداءً من تعيين بورتات الخرج و الدخل
و انتهاءً بالـ ADC و تعديل عرض النبضة
مافيش حد بشجع انا بشجع حالي

(mechanical) #13

ما شاء الله اخي مجهود جبار والى الامام بأفضل اطلالة وبأروع المعلومات بارك الله بك


(eng.Eiad) #14

شكراً للتشجيع أخي العزيز mechanical

شعاع التصفيرRESET VECTOR :
تقوم عملية تصفير RESET الشريحة في جميع المتحكمات بتحميل عداد البرنامج PC بالعدد 0000H ويدعى هذا العدد عنوان شعاع التصفير RESET VECTOR ADDRESS وهو العنوان الذي سينتقل إليه التنفيذ عند حدوث عملية تصفير للشريحة .

شعاع المقاطعة INTERRUPT VECTOR :
عند حدوث مقاطعة ما INTERRUPT فإن عداد البرنامج PC سوف يحمل مباشرةً بالعدد 0004H ويدعى هذا العدد بعنوان شعاع المقاطعة INTERRUPT VECTOR ADDRESS ومن هذا الشعاع سيتم الانتقال إلى روتين خدمة المقاطعة ISR (INTERRUPT SERVICE ROUTINE ) .


(mechanical) #15

حقا معلومات جميلة وان شاء الله اخي ستكون دورة مماثلة بالمتحكمات بالتعاون مع منتديات الرواد للتقنية كما في الصورة اعلاه , واتوجه الى الاخ احمد ديب بالنظر لما تقدمه من علم نافع بخصوص افضل عضو ففعال


(eng.Eiad) #16

المكدس STACK :
وهو عبارة عن مجموعة من ثمانية مستويات مما يسمح بحدوث عدد من المقاطعات و الاستدعاءات حتى الثمانية و باختصار فإن المكدس يحمل عنوان العودة إلى البرنامج الرئيسي .
و حيث أن المكدس يستخدم لتخزين قيم عداد البرنامج فكل مستوى من مستوياته هو بعرض
13bit و بما أن عرض الموقع الذاكري للمكدس ليس 14bit أو 8bit . لذلك فالمكدس ليس جزء من ذاكرة البرنامج أو ذاكرة المعطيات بل هو مستقل عنهما .
عند تنفيذ تعليمة استدعاء أو حدوث مقاطعة فإنه يتم دفع قيمة PC التي تعنون التعليمة التالية لتعلية الاستدعاء أو حدث المقاطعة إلى المكدس , و يتم سحب ( استرجاع ) قيمة PC عند تنفيذ إحدى التعليمات RETLW , RETFIE ,RETRUN و يحدث ذلك دون أي تغير لمسجل
PCLATH .

ملاحظة :
في حال إدخال قيمة جديدة إلى المكدس بعد امتلائه بثمان قيم فسوف تخزن القيمة الجديدة فوق القيمة الأولى .


(rosey_soul) #17

راااائع ما شاء الله
أسلوب واضح و معلومة شاملة…
في انتظار المزيد… الله يجزيك الخير و في ميزان حسناتك ان شاء الله.


(eng.Eiad) #18

و جزيتم بمثله
اسف للتأخير بسبب بعض المشاغل
سأتابع غداً ان شاء الله


(eng.Eiad) #19

أدعوكم جميعاً للتسجيل بسرعة بدورة المايكرو جزى الله القائمين عليها كل خير .
و الان نتابع…

تقسيم ذاكرة البرنامج PROGRAM MEMORY PAGING :
تمتلك تعليمات CALL , GOTO مجال عنونة بعرض 11 خانة أي يمكنها تفريع البرنامج ضمن مجال حتى 2K .
إلا أن بعض الشرائح تكون فيها ذاكرة البرنامج ذات سعة أكبر من 2K . من أجل ذلك و حتى يتسنى لتعليمتي CALL أو GOTO عنونة كامل المجال الذاكري المحجوز لذاكرة البرنامج يجب أن يكون هناك خانتين لتحديد صفحة ذاكرة البرنامج .
يستخدم لعملية تحديد صفحة ذاكرة البرنامج PAGING الخانتين PCLATH[4:3] واللتان تبرمجان لاختيار صفحة ذاكرة البرنامج الهدف .
عندما يتم تنفيذ تعليمة عودة ما فإن كامل الخانات الثلاث عشر 13 bit لعداد البرنامج PC سوف تسحب POPED من المكدس لذا لا نحتاج إلى تعليمات برمجة للخانتين PCLATH[4:3] عند العودة من برنامج فرعي أو من روتين خدمة مقاطعة ISR .

تنظيم ذاكرة المعطيات DATA MEMORY ORGANIZATION :
تتألف ذاكرة المعطيات من حيزين ذاكريين :
1. حيز مسجلات الوظائف الخاصة SFR(Special Function Registers) و هذه المسجلات تحكم عمليات الشريحة OPERATION من خلال التحكم بوظائف نواة المتحكم الداخلية CORE أو من خلال التحكم بالوظائف المحيطية PERIPHERALS .
2. حيز مسجلات الأغراض العامة GPR(General Purpose Registers) الذي يستخدم لتخزين المعطيات وفق تعريف المستخدم و تلبية لاستراتجيته البرمجية .
§ عملية تقسيم ذاكرة المعطيات تسمى Banking ويتم الانتقال بين البنوك المتاحة بواسطة خانات برمجية خاصة بذلك .
§ يمكن الوصول إلى أي موقع ذاكري في ذاكرة المعطيات بواسطة العنونة المباشرة أو بواسطة العنونة غير المباشرة .

مسجلات الأغراض العامة GENERAL PURPOSE REGISTERS :
تقع مسجلات الأغراض العامة في القسم العلوي من ذاكرة المعطيات ويمكن الوصول إلى أي من هذه المسجلات إما مباشرةً DIRECTLY أو بشكل غير مباشرINDIRECTLY وذلك باستخدام المسجل FSR(File Select Register) وهذه المسجلات لا يتم تغييرها إلى الحالة البدائية بعد عملية تصفير ما .

مسجلات الأغراض الخاصة SPECIAL FUNCTION REGISTERS :
· تستخدم هذه المسجلات من قبل وحدة المعالجة المركزية CPU والوحدات المحيطية وذلك من أجل التحكم بالوظائف لإنجاز العمليات المطلوبة وتعمل هذه المسجلات بتقنيــة STATIC RAM .
· تقسم مسجلات الأغراض الخاصة إلى قسمين :
1) مسجلات تتحكم بوظائف النواة CORE .
2) مسجلات تتحكم بالمحيطيات PERIPHERALS .
· بعض المسجلات يتم عودتها إلى حالة بدائية بعد كل عملية تصفير RESET وأخرى
لا تتأثر.
· يمكن الوصول إلى هذه المسجلات بشكل مباشر أو غير مباشر بواسطة المسجل FSR .


(eng.Eiad) #20

الانتقال بين بنوك ذاكرة المعطيات BANKING :
§ تقسم ذاكرة المعطيات إلى أربعة أقسام كل منها نسميه بنك وكل بنك سعته 128 Byte أي من [0-7F] حيث تشغل مسجلات الوظائف الخاصة SFR الحيز السفلي منه و في الحيز العلوي منه تتوضع مسجلات الأغراض العامة GPR .
§ بعض المسجلات عالية الاستخدام الموجودة في البنك BANK0 لها صور في البنوك الأخرى كما هو مبين في الشكل ( ) وذلك من أجل الاختصار في الشيفرة و تسريع عملية الوصول .


§ يتم الانتقال بين هذه البنوك الأربع بطريقتين و ذلك حسب نوع العنونة المختار ففي حالة العنونة المباشرة يستخدم لذلك الخانتين RP0 : RP1 أما في حالة العنونة غير المباشرة فتستخدم الخانة IRP وهذه الخانات موجودة في مسجل الحالة STATUS القادم شرحه في فقرات لاحقة .
فتعبئة RP0 RP1 بـــ 00 البنك 0
فتعبئة RP0 RP1 بـــ 01 البنك 1
فتعبئة RP0 RP1 بـــ 10 البنك 2
فتعبئة RP0 RP1 بـــ 11 البنك 3

سأشرح لاحقاً المسجل status (مسجل الحالة اذا صح التعبير) …