|
:: نائب المشرف العام ::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 11,652
|
|
نشاط [ ماجد عباس محمد ]
قوة السمعة:
|
|
24-06-2018, 08:24 AM
المشاركة 41
|
|
استخدامات الميكروكونتروللر أو المتحكم
استخدامات الميكروكونتروللر أو المتحكم
البعض يتخيل أن الميكرو أو المتحكم هو رائعة العلم و أنه أتى ليقول لعالم ألتماثلى وداعا لكن مهلا نحتاج لفهم بعض الحقائق عن هذه الأشياء ثم نحكم.
أولا ما هى أقصى سرعة نتحدث عنها هنا؟ حسنا نلجأ للدائرة و سنجد كريستال هى الحاكم ألرئيسى و من الداتاشيت لهذه الأنواع نجد أن أعلى تردد استخدم هو 30 ميجا – طبعا الكثير منها 25 فقط أو 20 ميجا فقط.
إذن لا تحلم بأسرع من 30 ميجا
ماذا تعنى؟ أجل تعنى حدك الأقصى فلا تستطيع توليد تردد أو قياسه أو التحكم فى شيء بمعدل أسرع من ذلك.
أيضا هناك نقطة هامة وهى كيف يعمل الميكرو من الداخل؟
لدينا ما يسمى Sequencer أو مرتب الأحداث أو موالى الأحداث أو سمه ما شئت وهو المسؤول عن تنفيذ الأحداث بتتالى محدد وهو
1- قراءة الكود من ذاكرة البرنامج
2- زد واحد على مسجل عنوان البرنامج
3-تحليل الكود و معرفة الخطوة التالية هل تنفيذ السابق كأمر مفرد (مثلا NOP لا تفعل شيئا أو INC A زد واحد لمحتوى المراكم أو CLR A ألغى محتويات المراكم الخ) أو هو حساب يتطلب أخذ قيمة تالية من الذاكرة
4- قراءة الكود التالى من الذاكرة كبيان
5- تنفيذ الأمر ثم البدء من جديد
هذه الخطوات يأخذ وقتا وهذا الوقت يحسب بعدد نبضات الكريستال لهذا فعائلة C51 تحتاج 12 نبضة لتنفيذ دورة كاملة و التى قد تكفى تنفيذ أمر وحيد الخانات أو أمر مفرد كما سبق (مثلا NOP لا تفعل شيئا أو INC A زد واحد لمحتوى المراكم أو CLR A ألغى محتويات المراكم الخ) أو قد تحتاج 12 أخرى لغالبية الأوامر و التى تأخذ دورتين.
إذن30 ميجا / 24 ستصبح1.25 مليون أمر فقط فى الثانية.
لاحقا أنتجت الشركة وحدات تنفذ فى 6 دورات و حتى دورتين فقط لكن بكريستال لا تزيد عن 20 ميجا و من ثم أعلى سرعة هى 10 مليون أمر فى الثانية.
بالنسبة لميكروتشيب فهى تحتاج 4 نبضات فى الدورة إذن 30 /4 تصبح 7.5 مليون أمر فى الثانية
رائع ماذا نحتاج أكثر من ذلك؟
أجل أنت لست وحدك فى هذا العالم و تتحكم فيما حولك بالبرنامج أى المسألة ليست بسيطة كما نظن ولو عدنا للمثال السابق سنجد أننا لنتحكم فى بضع أمور بسيطة تطلب الأمر عدة خطوات و رغم أن البرنامج لا ينفذ كله فى كل مرة إلا أننا يجب أن نستوعب هنا خاصية من أهم خصائص البرمجة عن سرعة التنفيذ
لاحظ أن دورة أو Cycle هى 12 نبضة من الكريستال، وهكذا نستهلك 2 دورة فى كل تعليمه أى 4 دورات تمهيد من Start إلى Loop و من ثم 6 دورة لو كان المفتاح الأول مضغوطا ثم نكرر و إلا سنضيف 6 للمفتاح الثانى و إلا 6 للمفتاح الثالث.
أى كل دورة كاملة للبرنامج إما 6 أو 12 أو 18 دورة أى 72 نبضة من الكريستال أو 144 أو 216 دورة. وهذا زمن لا بأس به، و بالطرز الحديثة حيث تستخدم 2 نبضة من الكريستال لكل تعليمه ستستهلك 12 أو 24 أو 36 دورة من الكريستال
كود:
Start:
Mov Switches , #255 ; 2Byte, 2Cycle
Mov LEDs , #255 ; 2Byte, 2Cycle
Loop:
jb SW1 , SW2test ; 3Byte, 2Cycle
mov LEDs , #11111110b ; = 254 2Byte, 2Cycle
sjmp Loop ; 2Byte, 2Cycle
SW2Test:
jb SW2 , SW3Test ; 3Byte, 2Cycle
mov LEDs , #11111100b ; = 252 2Byte, 2Cycle
sjmp LOOP ; 2Byte, 2Cycle
SW3Test:
jb SW3 , start ; 3Byte, 2Cycle
mov LEDs , #11111000b ; = 248 2Byte, 2Cycle
jmp Loop ; 2Byte, 2Cycle
مع ميكروتشيب الأمر أسهل حيث الكل يأخذ 3 دورة و بايت واحدة فيكون البرنامج يحتاج 8 تعليمات حتى يصل إلى Loop أى 32 دورة للتمهيد ثم
كود:
CLRF STATUS ; Bank0
CLRF PORTB ; Initialize PORTB by clearing output data latches
CLRF PORTD ; Initialize PORTD by clearing output data latches
BSF STATUS, RP0 ; Select Bank1
CLRF TRISB ; All OUTs
MOVLW 255
MOVWF TRISD
CLRF STATUS ; Bank0
هنا أمرين لو لم يكن المفتاح الأول مضغوطا أو 4 لو مضغوطا ليكرر الدورة أى4 أو 6 للثانى أو 8 للثالث أو تكرار الدورة كاملة وهذا يعنى 4*4=16 أو 24 أو 32 دورة إضافة للتمهيد 32 دورة كريستال
كود:
Loop:
BTFSC PORTD , 0
GOTO Sw1
MOVLW 1
MOVWF PORTB
GOTO Loop
Sw1:
BTFSC PORTD , 1
GOTO Sw2
MOVLW 3
MOVWF PORTB
GOTO Loop
Sw2:
BTFSC PORTD, 2
GOTO SW3
MOVLW 7
MOVWF PORTB
GOTO Loop
SW3:
CLRF PORTB
GOTO Loop
هناك كثير من الأشياء الأخرى يجب مراعاتها مثلا محول ألتماثلى رقمى وفى PIC16 يحتاج على الأقل 200 ميكرو ثانية لكل تحويله أى 5000 مرة فى الثانية وأسرع من ذلك فى كل من PIC18 و عائلة AVR
وهذا يقودنا لمثال بسيط، تود أن تصنع دائرة مثبت فولت ، لديك طريقين إما تماثلى بالمتكاملات أو بمتحكم و الأخير يعطى إيهاما بأننا ننظمها بالحاسب الآلى
حسنا سرعة المتكاملة الخطية تستجيب فى أقل من ميكرو ثانية طبقا للداتاشيت فكم تعليمه تنفذها فى هذا الوقت؟؟ يمكنك وضع ميكرو للوجاهة و تعرض التيار و الفولت الخ لكن دع التحكم للمتكاملة الخطية سواء أكانت تماثلية أو تقطيعية.
الآن يمكننا أن نفكر فى تطوير برنامجنا السابق لنبدأ مثلا بغساله آلية ذات 6 برامج وهو موضوعنا القادم بإذن الله.
|