المعالجات والمتحكمات المصغرة الجزء الأول (20-40)


0020

ترجمة

0021 0022 0023 0024 0025 0026 0027 0028 0029 0030 0031 0032 0033 0034 0035 0036 0037 0038 0039 0040

ترجمة

التصميم الداخلي للمعالج
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
20 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
.1 تصميم Von Neumann :
 يقوم بجلب التعليمات والبيانات من مكان ذاكري وحيد.
 يحد من عرض حزمة التنفيذ.
.2 تصميم Harvard :
 يستخدم حي زين ذاكريين منفصلين عن بعضهما أحدهما خاص بتعليمات البرنامج
والآخر بالمعطيات.
 أداء أفضل لعرض الحزمة.
 يسمح باستخدام Bus ات بأحجام مختلفة.
تصميم ال AVR
21 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
نظرة عامة على التصميم
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
22 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
– تصميم Harvard الذي يعتمد على المسجلات مع تعليمات
ال RISC ، يسمح بتنفيذ سريع وجيد للبرنامج.
– قبل بدء العملية، يقوم المعالج بتحميل جميع البيانات اللازمة
إلى ال CPU ويتم تخزين النتائج في المسجلات.
– خلال عملية تنفيذ البرنامج، تتعامل ال CPU مع المسجلات،
وذلك للتقليل من حالة بطء الدخول إلى الذاكرة.
نظرة عامة على التصميم
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
23 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
– يتم بناء تعليمات أكثر تعقيدا انطلاقا من هذه التعليمات الأساسية.
– 131 تعليمة RISC ، يتم تنفيذ معظمها خلال دورة ساعة واحدة.
– يتم استخدام حزم نقل وذواكر منفصلة لكل من البرنامج والبيانات.
– يسمح العتاد الصلب بتنفيذ عملية الضرب خلال دورتي ساعة.
أَمْ Assembly C ؟
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
24 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
 من أجل التنفيذ الجيد والسريع لأوامر المايكرو:
يجب استخدام لغة ال Assembly .
 من أجل الاستخدام المفيد للغة ال Assembly :
 يجب على المبرمج أن يكون م طلعا على تفاصيل المرحلة المنخفضة في تصميم
المعالج.
 منحني التعلم في للغة ال Assembly يتصف بانحدار شديد نوعا ما،
والدروس المُتَعلمة لا تنطبق دائما على مايكرو آخر.
أَمْ Assembly C ؟
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
25 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
 تسمح لغة ال C بتحكم مباشر بالعتاد الصلب للمايكرو من رتبة المسجل.
مع المحافظة على قدرة استخدامها مع نوع آخر من المايكرو الذي تصنعه خطوط
انتاج AVR .
البرمجة بلغة C ليست أفضل من البرمجة بلغة Assembly ، كما أن العكس
ليس صحيحا.
 كلا اللغتان لها فوائدها المتوارثة كما أن لها مساوئها.
سنقوم باستخدام برنامج C for AVR Studio للأسباب المذكورة سابقا.
المخطط الصندوقي ل
Atmega16 .
26
ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
المخطط الصندوقي ل Atmega16 .
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
27 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
.1 توصيلات خارجية من أجل التغذية الكهربائية ) VCC ، GND ، AVCC ،
و AREF .)
.2 منافذ خارجية لقاعدة الوقت ) XTAL1 و XTAL2 ( بحيث توفر إمكانية قيادة
ساعة الشريحة.
. 3 أربع منافذ بعرض 8 بت ) PA0 حتى PA7 ، PC0 حتى PC7 ، PB0 حتى
PB7 ، و PD0 حتى PD7 (، تستخدم ك GPIO أو لأغراض أخرى.
.4 مؤقت، ADC )مبدل تشابهي رقمي(، مقاطعات، ذاكرة، واجهة اتصال،
وإعادة ضبط المعالج.
الذواكر في Atmega16 .
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
28 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
. 1 ذاكرة فلاش للشيفرة ) ISP 🙂
 تخزن شيفرة البرنامج.
 ثوابت الجداول الكبيرة.
. 2 ذاكرة بايت قابلة للعنونة من
النوع EEPROM
 تخزين البيانات.
.3 بِّتات قفل قابلة للبرمجة
 ست بتات ذاكرة للقفل.
 تتم برمجتها باستخدام المبرمج
« STK 500 .»
. 4 ذاكرة البيانات ) SRAM .)
 تخزين المتحولات الشاملة.
 يستخدمه المعالج كمكد س.
1. ذاكرة فلاش للشيفرة ) ISP )
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
29 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
16 كيلو بايت من ذاكرة فلاش EEPROM المنظمة ك:
8 كيلو بايت كحجرات ذاكرية، تحتوي كل منها على 16 بِّت.
 يتم محوها وبرمجتها كوحدة كاملة،
 إما تكون داخل الدارة وتتم برمجتها عن طريق وصل كابل مع
الحاسب المضيف، وذلك لتثبيت البرنامج على المايكرو.
 أو تكون خارج موقعها في الدارة، فتتم برمجتها باستخدام الشرائح
المبرمجة للفلاش، مثل Atmel STK500 .
2. ذاكرة بايت قابلة للعنونة من النوع EEPROM .
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
30 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
512 بايت من ذاكرة EEPROM تستخدم في تخزين وجلب
المتحولات أثناء تنفيذ البرنامج.
 من أجل تسجيل أعطال النظام وأخطاء البيانات أثناء تنفيذ البرنامج.
 من أجل تخزين البيانات التي يجب أن يتم استردادها عند حصول خطأ
كهربائي ما.
 لكن قد نحتاج إلى تغييرها من فترة لأخرى.
 لتخزين بارامترات النظام، مثل:
 تراكيب القفل الالكتروني.
 تسلسل فك القفل الالكتروني لباب الكراج الآلي.
3. بِتات القفل القابلة للبرمجة.
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
31 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
 قد يتم تصميمها من أجل الخيارات التالية:
 عدم استخدام خاصية قفل الذاكرة.
 عدم السماح بإجراء أي تعديل آخر على الذاكرة، باستخدام
تقنيات تسلسلية أو تفرعية.
عدم السماح بأي برمجة أو تحقق قد يتم على الذاكرة،
باستخدام تقنيات تفرعية أو تسلسلية.
ذاكرة الوصول العشوائي الساكنة SRAM .
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
32 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
 ذاكرة قابلة للتطاير تستخدم للقراءة والكتابة أثناء تنفيذ البرنامج.
1120 بايت من SRAM
32GP بمسجلات تعمل بطول 8 بِّت.
 تستخدم من أجل المتحولات المحلية، البيانات المؤقتة، وحتى المتحولات العامة.
يتبعها 64 مسجل دخل/خرج بطول 8 بت.
 تستخدم كواجهة لأدوات الدخل/خرج والطرفيات الموصولة مع المايكرو.
 يتبعها ذاكرة SRAM داخلية.
 تستخدم كمساحة لتخزين المتحولات العادية وتستخدم أيضا كمكد س للمعالج.
المسجلات
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
33 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
 تقوم بتخزين النتائج المؤقتة أو الوسيطية.
 تستخدم أحيانا في تخزين المتحولات المحلية.
 تستخدم أحيانا في تخزين المتحولات الشائعة، وأحيانا في تخزين
مؤشرات لمواقع الذاكرة، التي يستخدمها المعالج.
 يتم التحكم بها عن طريق مترجم لغة ال C وعادة ما يكون
خارج سيطرة المبرمجين، إلا في حالة استخدام لغة ال
Assembly .
مسجلات الدخل/خرج ) I/O .)
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
34 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
ثلاثة مسجلات بطول 8 بت من النوع GPIO لكل بوابة )البوابة A ،
البوابة B، البوابة C، البوابة D .)
مسجل مسار البيانات ) DDRx ( يستخدم لضبط بتات البوابات لتكون إما
مخارج ) 1 ( أو مداخل ) 0 .)
مسجل قيادة البوابة ) PORTx ( يستخدم للكتابة على بتات الخرج للبوابة x .
مسجل منفذ البوابة ) PINx ( يستخدم لقراءة دخل بتات البوابة x .
ومسجلات الحالة ) SREG .)
مسجلات الدخل/خرج ) I/O .)
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
35 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
 لكل مسجل دخل/خرج:
 اسم.
 عنوان ال دخل/خرج.
عنوان SRAM .
 تقوم لغة C باستخدام اسم مسجل ال دخل/خرج فقط.
 تقوم البادئة ) #include ( بتحديد:
الأسماء وعنواين ال دخل/خرج المستخدمة من أجل مترجم ال C .
مسجل إعداد البوابة
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
36 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
مسجل إعداد البوابة
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
37 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
DDxn
PORTxn
I/O
ملاحظات
0
0
دخل
ثلاثي الحالة )ممانعة عالية(
0
1
دخل
منبع تيار إذا كان الخرج موصول
بمقاومة إلى الأرض
1
0
خرج
خرج منخفض )مصرف(
1
1
خرج
خرج مرتفع )منبع(
x : دليل البوابة ) A ، B ، C ، D )
n : دليل المنفذ ) 0 – 7 )
تشغيل البوابة باستخدام أسماء المسجلات
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
38 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
#include <mega.h>
Main () {
DDRA = 0xFF; /*جميع بتات هذه البوابة هي مخارج */
DDRB = 0x00; /*جميع بتات هذه البوابة هي مداخل */
While (1) {/* ‘for ever’ (Super Loop) حلقة لانهائية */
PORTA = PINB; /* » ايي « واكتب على البوابة » بي « اقرأ من البوابة */
}
}
لماذا نستخدم مقاومات الرفع؟
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
39 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
منافذ بوابات الدخل تكون عائمة،
◦ يغذي المايكرو مقاومات الرفع، عن طريق كتابة 1 على منفذ الدخل.
◦ المنفذ قادر على تصريف تيار حتى 20 ميللي أمبير، لكنه قادر على التغذية بتيار
أقل بكثير من ذلك.
◦ المنفذ قادر على قيادة ال LEDs ، بشرط أن يكون عمله كمصرف للتيار.
DDRA = 0xF0; /*تحدد الخانات الأقل أهمية لتكون مداخل */
PORTA = 0x03; /*تصل أول مدخلين إلى مقاومة رفع */
PORTA = (PINA<<4); /* تقرأ قيمة البوابة وتزيحها أربع خانات */
الإعدادات الأولية لبوابات الدخل/خرج
ترجمة أحمد رامي قباني || RamiKabbani.wordpress.com
40 ترجمة وتنسيق: رامي قباني. إلقاء الدكتور: عبد الغني البكار.
Void initialize_ports(void){
DDRA=0xFC; //PORTA [7:2] مخارج , PORTA [1:0]
مداخل
PORTA = 0x03; //PORTA [7:2] صفر منطقي , PORTA [1:0] منبع للتيار
DDRB = 0xa0; //PORTB [7:4] مخارج , PORTB [3:0]
مداخل
PORTB = 0x00; // إلغاء تفعيل مقاومات الرفع في هذه
البوابة
DDRC = 0xFF; // PORTC مخارج
PORTC = 0x00; // فعلها على أنها منطق منخفض
DDRD = 0xFF; // PORTD مخارج
PORTD = 0x00; // فعلها على أنها منطق منخفض
}
◦ لقراءة قيمة ما من منفذ بوابة محددة على أنها دخل،
unsigned char new_PORTB; // » بي « القيم الجديدة للبوابة
New_PORTB= PINB; // » بي « اقرأ قيمة البوابة

ترجمة

Advertisements

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s