[ رسائل جديدة · المشاركين · قواعد المنتدى · بحث · RSS ]
  • صفحة 1 من%
  • 1
تعلم الالكترونيات الشاملة » plc » الميكروكنترولر ودوائر الاتصال بالحاسب الالي » معالج عائلة المتحكمات AVR
معالج عائلة المتحكمات AVR
alagrab
هذه المشاركة رقم 1 ونرجو أن تشاركنا بها في الشبكات الإجتماعية التالية >>>
ويب ماستر
مجموعة: المدراء
رسائل: 858
حالة: Offline
مشاركة
ملف المسجلات عامة الأغراض
يحوي معالج AVR مجموعة من المسجلات عامة الأغراض تدعى بملف المسجلات Register File. يحوي هذا الملف 32 مسجل من R0 حتى R31 . يمكن إجراء جميع العمليات الحسابية والمنطقية على هذه المسجلات. تشكل هذه المسجلات جزءاً من ذاكرة المعطيات حيث تحتل مجال العناوين من 0x00 حتى 0x1F وذلك لتسهيل الوصول إليها. لكنها لا تعتبر ذاكرة RAM من الناحية الفيزيائية .

المؤشرات عامة الأغراض
يمكن استخدام المسجلات الستة الأخيرة من ملف المسجلات كثلاث مؤشرات إلى الذاكرة . يشكل كل زوج من المسجلات 8 بت مؤشر بطول 16 بت

المسجلات الخاصة SFR
يتم التحكم بطرفيات المتحكم AVR من خلال مجموعة من مسجلات التحكم الخاصة . تشكل هذه المسجلات فضاء عنونة خاص يسمى فضاء الدخل/الخرج ويمكن الوصول إليه بتعليمات IN و OUT . يمتد مجال عنونة الدخل /الخرج من العنوان 0x00 إلى 0x3F . يمكن الوصول إلى مسجلات التحكم أيضاً من خلال فضاء عنونة ذاكرة المعطيات حيث يحتل المجال من 0x20 إلى 0x5F وتستخدم في هذه الحالة التعليمات LD و ST . أما ذاكرة RAM الحقيقة فتبدأ من العنوان 0x60 .

المكدس والإجراءات الفرعية
تحوي معظم متحكمات AVR مكدس برمجي. ويقصد بكلمة يرمجي أنه جزء من ذاكرة المعطيات المؤقتة (Data RAM ) . ويستطيع المبرمج التحكم بمكانه بواسطة مؤشر المكدس SP .

المسجل SP عبارة عن مسجل 16 بت يشير إلى قمة المكدس وبتألف من مسجلين 8 بت هما SPL و SPH . يجب تهيئة هذا المسجل في بداية البرنامج قبل أي عملية استدعاء وقبل تقعيل المقاطعات .
ينمو المكدس من العناوين الأعلى إلى العناوين الأخفض أي أن مؤشر المكدس ينقص عند دفع المعلومات إليه سواءً بشكل مباشر بالتعليمة PUSH أو عند استدعاء الإجراءات الفرعية أو عند الانتقال إلى إجراء خدمة مقاطعة حيث يخزن عنوان العودة في المكدس.
يهيئ SP عادةً بحيث يشير إلى نهاية ذاكرة RAM في المعالج وذلك لإبقاء باقي الذاكرة متاحاً للمعطيات الأخرى.

مجموعة التعليمات
يمتلك AVR مجموعة تعليمات غنية مؤلفة من 131 تعليمة. تقسم هذه التعليمات إلى أربع مجموعات : التعليمات الحسابية ، تعليمات البتات ، تعليمات التفرع وتعليمات نقل البيانات.

تعليمات التحميل ونقل البيانات
تقوم هذه التعليمات بنقل البيانات بين المسجلات أو بين مسجل والذاكرة وبالعكس أو بين مسجل ومسجل خاص وبالعكس أو تحميل قيمة فورية في مسجل ما.

ملاحظات :
1- التعليمة LDI ( وجميع التعليمات المنتهية بالحرف I ) تحمل قيمة فورية في أحد المسجلات من R16 حتى R31 ولا يمكن استخدام المسجلات الأخرى لتحميل القيم الفورية.
2- تختلف تعليمات النقل من وإلى الذاكرة بنمط العنونة ، أي بطريقة حساب عنوان الحجرة المقصودة.
3- التعليمات OUT و IN تتعامل مع فضاء عنونة الدخل والخرج وتستخدم مع المسجلات الخاصة SFR.
4- التعليمات LPM و SPM تتعاملان مع ذاكرة البرنامج ROM .

بنية الأقطاب الرقمية
يحوي المتحكم ATMega16 32 قطب دخل\خرج مقسمة إلى 4 منافذ هي PORTA و PORTB و PORTC و PORTD.

يمكن التحكم بكل قطب من هذه الأقطاب على حدة وتحديد اتجاهه وذلك من خلال ثلاثة مسجلات تحكم لكل منفذ
مثلاً المنفذ PORTA له ثلاثة مسجلات

DDRA تحديد اتجاه البيانات 1 = خرج . 0 = دخل
PORTA إخراج البيانات في حالة الإخراج تحديد القيمة المخرجة ، وفي حالة الإدخال تفعيل مقاومات السحب
PINA إدخال البيانات قراءة حالة الأقطاب

يجب في بداية البرنامج تحديد اتجاه الأقطاب بكتابة القيم المناسبة إلى مسجلات DDRx ، مثلاً لتحديد أن الأقطاب الأربعة الأولى من PORTA مداخل والأربعة الأخرى مخارج يجب كتابة التعليمات التالية:
Ldi R16,0xF0
Out DDRA , R16

تعليمات التفرع
يوجد في AVR نوعان أساسيان من التفرع الشرطي وغير الشرطي. كما تقسم تعليمات التفرع الشرطي إلى تعليمات تفرع عادي وتعليمات تجاوز حيث بتم تجاوز التعليمة التالية فقط.
بوجد تعليمتا تفرع غير شرطي هما rjmp و jmp .
أما تعليمات التفرع الشرطي العادية فمنها : BRLT و BRGT و BREQ و BRNE وتبدأ كلها بالحرفين BR و يليها رمز الشرط . ويعتمد الشرط على أعلام الحالة الموجودة في مسجل الحالة SREG>
أما تعليمات التجاوز فهي SBIS و SBIC و SBRS و SBRC . الحرفان SB يعنيان Skip if Bit أي "تجاوز التعليمة التالية إذا كانت حالة البت إما 0 (في حالة الحرف C) أو 1 (في حالة الحرف S )" . يمكن أن بكون هذا البت ‘ما في مسجل من المسجلات العامة (الحرف R ) أو في أحد المسجلات الخاصة SFR (في حالة الحرف I ).
ملخص تعليمات التجاوز:
SBIC P,b تقفز فوق التعليمة التالية إذا كانت قيمة البت b من مسجل الدخل/الخرج P تساوي الصفر
SBIS P,b تقفز فوق التعليمة التالية إذا كانت قيمة البت b من مسجل الدخل/الخرج P تساوي الواحد
SBRC Rn,b تقفز فوق التعليمة التالية إذا كانت قيمة البت b من المسجل العام Rn تساوي صفر
SBRS Rn,b تقفز فوق التعليمة التالية إذا كانت قيمة البت b من المسجل العام Rn تساوي الواحد

المقاطعات
تتضمن بنية AVR عدة مصادر للمقاطعات. كل واحدة من هذه المقاطعات لها شعاع مقاطعة خاص بها. أي أن لها عنوان خاص في ذاكرة البرنامج يتم القفز إليه عند حدوث المقاطعة. تحتل أشعة المقاطعات القسم الأول من ذاكرة البرنامج حيث يبدأ جدول المقاطعات بالعنوان 0x0000 والذي يمثل شعاع التصفير Reset . يحتل الشعاع التالي العنوان 0x0002 أي أن كل شعاع مقاطعة مؤلف من كلمتي ذاكرة وهذا يتيح المجال لوجود تعليمتين عاديتين أو تعليمة قفز بعيد واحدة JMP . تحدد أفضلية المقاطعات حسب ترتيبها في جدول الأشعة حيث تعتبر المقاطعات الأولى ذات أفضلية أكبر.
عند حدوث مقاطعة يتم حجب المقاطعات وذلك بتصفير البت I في مسجل الحالة SREG ثم تدفع محتويات PC إلى المكدس ثم يتم الانتقال إلى عنوان شعاع المقاطعة المناسبة . يجب أن ينتهي إجراء خدمة المقاطعة بالتعليمة RETI والتي تضع 1 تلقائياً في البت I من مسجل الحالة وذلك لتفعيل المقاطعات من جديد. عند العودة من المقاطعة تنفذ تعليمة واحدة على الأقل قبل خدمة أي مقاطعة منتظرة.

المقاطعات الخارجية
يقصد بالمقاطعات الخارجية تلك التي يمكن توليدها بإشارات من خارج المتحكم . يوجد في ATMega16 ثلاثة أقطاب مقاطعة يمكن من خلالها توليد مقاطعات وهي INT0 وINT1 و INT2 .

يمكن توليد المقاطعات على الأقطاب INT0 و INT1 إما بجبهة صاعدة أو هابطة أو بمستوى منخفض أو بمجرد تغيير القيمة . يمكن التحكم بطريقة قدح المقاطعة بالمسجل MCUCR

المؤقتات
تحوي متحكمات AVR نوعين من المؤقتات 8 بت و 16 بت . يحوي المتحكم ATMega16 ثلاثة مؤقتات اثنان منهما 8 بت وواحد 16 بت . سندرس أولاً المؤقت الأول Timer0 وهو مؤقت 8 بت مع وحدة مقارنة ووحدة توليد PWM (تعديل عرض النبضة Pulse Width Modulation).

أنماط عمل المؤقت
1- نمط العمل العادي
في هذا النمط يعد العداد نبضات الدخل تصاعدياً حتى يصل إلى نهاية العد 0xFF حيث يعود إلى الصفر ويبدأ من جديد . عند الوصول إلى نهاية العد يقوم العداد بوضع 1 في العلم TOV0 ويمكن استخدام هذا العلم لتوليد مقاطعة. يستخدم هذا النمط لقياس فترة زمنية معينة أو عد أحداث خارجية، حيث يمكن قراءة المسجل TCNT0 لمعرفة العدد الحالي .
2- نمط المقارنة والتصفير عند التطابق CTC
في هذا النمط بقوم العداد بالمقارنة بين المسجل TCNT0 والمسجل OCR0 عند حدوث التطابق بين المسجلين بتم تصفير العداد والبدء من جديد ورفع العلم OCF0 والذي يمكن استخدامه لتوليد مقاطعة. يستخدم هذا النمط لتوليد فواصل زمنية محددة حيث بستخدم المسجل OCR0 لتحديد الزمن المطلوب ويتميز هذا النط عن النمط العادي بسهولة استخدامه خاصة عند الحاجة لفواصل زمنية تكرارية.
3- نمط PWM السريع
يعد العداد بشكل تصاعدي من 0x00 حتى 0xFF . وعندما يصل إلى قيمة المسجل OCR0 يتم وضع 1 على قطب الخرج وعند الوصول إلى قمة العد يعود الخرج إلى القيمة 0 . أو بالعكس حسب إعدادات مسجل التحكم . ويالتالي يمكن تغيير عرض النبضة المولدة حسب قيمة OCR0 .
4- نمط PWM مع تصحيح الطور
يعد العداد بشكل تصاعدي من 0x00 حتى 0xFF ثم بشكل تنازلي حتى يعود إلى القيمة 0x00. يتم تغيير قيمة الخرج عند تطابق العداد مع OCR0 وذلك مرتان عند العد الصاعد وعند العد الهابط ويتم التغيير وفق مسجل التحكم. يتميز هذا النمط بأن الخرج لا بتغير طوره عند تغير قيمة OCR0 وهذا أفضل عند التحكم بالمحركات.

مصادر نبضات الساعة
يوجد مصدران لنبضات الشاعة الأول هو نبضات ساعة الهزاز الرئيسي الذي يغذي المعالج. والثاني هو القطب الخارجي T0 . يمكن برمجة العداد كي بعد النبضات الخارجية عند الجبهة الصاعدة أو الهابطة. يوجد مقسم أولي بطول 10 بت على دخل نبضات الساعة الداخلية . يمكن برمجة هذا المقسم لتقسم نبضات الساعة قبل دخولها إلى العداد وفق عدة نسب (1,8,64,256,1024). وذلك حسب إعدادات مسجل التحكم.

حساب الثابت الزمني
عند استخدام المؤقت لتوليد فواصل زمنية يجب تحديد قيمة الثابت الزمني أو قيمة العد قبل تشغيل العداد. لحساب الزمن الذي سيستغرقه العداد للوصول إلى نهاية العد يجب معرفة تردد الساعة الأساسي ونسبة التقسيم في المقسم الأولي والثابت الزمني. وذلك حسب المعادلة التالية
T = Tclk * N * Tconst
حيث Tclk هو دور الساعة الأساسي (مقلوب تردد المعالج)
N هو نسبة تقسيم المقسم الأولي ( 1 أو 8 أو 64 أو 256 أو 1024 )
Tconst هو الثابت الزمني المستخدم
ولحساب الثابت الزمني من أجل فترة زمنية معينة نستخدم المعادلة
Tconst = T / ( Tclk * N )

يجب اختيار N بشكل مناسب حسب الفترة المطلوبة بحيث يكون الثابت الزمني اصفر أويساوي 0xFF.
مثلاً من أجل 1ms وتردد معالج 1MHz يكون دور ساعة المعالج 1uS ويحسب الثابت الزمني بالشكل التالي:
Tconst = 1000 / (1 * 8) = 125 < 255

يستخدم الثابت الزمني لتهيئة العداد TCNT0 قبل البدء بالعد حيث توضع فبه القيمة (0xFF- Tconst) وذلك لأن العداد يعد تصاعدياً. من أجل الفواصل الزمنية التكرارية يجب إعادة تحميل الثابت الزمني في كل مرة . يمكن تجاوز هذه المشكلة باستخدام النمط CTC حيث يوضع الثابت الزمني في المسجل OCR0 ونستخدم المقاطعة OCF .


 
تعلم الالكترونيات الشاملة » plc » الميكروكنترولر ودوائر الاتصال بالحاسب الالي » معالج عائلة المتحكمات AVR
  • صفحة 1 من%
  • 1
بحث: