:جديد المواضيع
صفحة 1 من 3 123 الأخيرةالأخيرة
النتائج 1 إلى 10 من 21

سلسلة مقالات كيف تستخدم Atmil ميكروكونتروللر

  1. #1
    مشرف متميز

    User Info Menu

    سلسلة مقالات كيف تستخدم Atmil ميكروكونتروللر

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

    هذه مجموعة دروس هدفها التعريف بهذا النوع من المعالجات – فتح الطريق لتعرف ما تريد ولكن بدون جهدك ستظل دوما تكتب هنا رجاء أعطونى الدائرة والبرنامج ، عندها لا فائدة من هذه الدروس

    هناك العديد من الشركات أنتجت بترخيص نفس نوع المعالج والفرق فى الأحرف الأولى كما أن هناك عائلة من المعالجات تختلف فى السرعة أو كمية الذاكرة لكن يمكنك استبدال أى منها بالأخرى مادام البرنامج يمكن وضعة فى الذاكرة المتاحة و الدوائر المحيطة لا تتطلب سرعة اعلى ، لذا سنطلق عليها عائلة 8051 لأن كلها تعمل بنفس الشفرة والبرنامج المكتوب يصلح لأى منها.

    العائلة تشمل 89C51 ‘89C52’89S51 ‘89S52 والعديد غيرها
    يمكنك دوما إنزال البيانات من موقع الشركة لتعرف الفروق بينها وكمية الذاكرة المخصصة فى كل منها
    ما يهمنا لنبدأ أن مجموعة 89x51 تحتوى ذاكرة برنامج 4ك و مجموعة 89x52 تحتوى ذاكرة برنامج 8ك والكل يحتوى ذاكرة بيانات RAM فقط 256 خانة
    تحتوى عادة على أربع مداخل Ports كل منها 8 خط Bit يمكنك أن تستخدم أى خط Bit كمدخل أو مخرج أى لديك من 1 إلى 32 مدخل / مخرج
    تمتاز هذه المجموعة بالبساطة أى أن كل خطوطها بسيطة لا تستخدم الخواص المتراكبة Multiplexed مما يجعل الدوائر سهلة وبسيطة ولا تعانى من مشاكل التزامن ، ولكنها تستخدم الخواص البديلة أى إما تستخدم هذا أو ذاك وليس الاثنين معا فلديك خطان إما تستخدمهما للمقاطعة Interrupt أو استخدمهما كاستخدام عادى و أيضا خطان للاتصال المتسلسل Serial Communication أو كاستخدام عادى
    القطعة تحتوى 40 طرف

    كما ذكرنا 4 × 8 Ports = 32
    2 كريستال + 2 تغذية + طرف للبدء RESET + طرف للبرمجة + طرف للتعامل مع الذاكرة الخارجية أو الدوائر المحيطة + طرف لتحديد ما إذا كان البرنامج سينفذ من الذاكرة الداخلية أم خارجية

    أثناء البرمجة يمكنك وضع حماية لمنع قراءة البرنامج لاحقا حفاظا على حق الملكية وهى 3 مستويات
    1- منع قراءة الذاكرة الداخلية
    2- يضاف لما سبق عدم تمكين خاصية التحقق (التحقق من صحة البرنامج)
    3- يضاف لما سبق عدم إمكانية تنفيذ برامج من خارج المعالج
    مجموعة المداخل أربعة تسمى PO,P1,P2,P3 وكلها قابلة للبرمجة كدخول أو خروج أو جزء دخول وأخر خروج لذلك تعطى قدرا كبيرا من المرونة واستخدام حساسات لمعالجة الماكينات أو الأجهزة المحيطة
    عند البدء كلها تكون مخارج مع بعض الاختلافات الهامة والتى سنذكرها فيما يلى
    عند كتابة "1" فى خانة أى خط ما من مدخل ما يتحول من إدخال إلى إخراج – سنعرف لاحقا كيف
    بعد أن ذكرنا التشابهات ، فيما يلى سنذكر الاختلافات
    PO
    أقواها على الإطلاق حيث يمكنه أن يقود 8 مداخل TTL قياسية (التيار داخل للطرف فقط Sink – جدير بالملاحظة انه لا يخرج منه تيار Source إلا عند التعامل مع الذاكرة الخارجية)
    الوحيد الذى لا يحتوى على مقاومة جذب Pull up Resistor لذلك يجب وضعها خارجيا
    يكون مدخل البيانات Data أثناء البرمجة
    أن شئت استخدام ذاكرة خارجية سيكون هذا هو مجموعة البيانات Data Buss والجزء الأدنى من قيمة العنوان Low Order Address Buss
    P1
    كمخرج يمكنه أن يقبل أو يمد بتيار يوازى 4 مداخل TTL قياسية Source/Sink
    يحتوى على مقاومة جذب داخلية Internal Pull up Resistor أى كمدخل لا يحتاج أى إضافات
    عند البرمجة يوضع عليه الجزء الأدنى من قيمة العنوان Low Order Address Buss

    P2
    كمخرج يمكنه أن يقبل أو يمد بتيار يوازى 4 مداخل TTL قياسية Source/Sink
    يحتوى على مقاومة جذب داخلية Internal Pull up Resistor أى كمدخل لا يحتاج أى إضافات
    يوضع عليه الجزء الأعلى من قيمة العنوان High Order Address Buss سواء عند البرمجة أو التعامل مع الذاكرة الخارجية

    P3
    كمخرج يمكنه أن يقبل أو يمد بتيار يوازى 4 مداخل TTL قياسية Source/Sink
    يحتوى على مقاومة جذب داخلية Internal Pull up Resistor أى كمدخل لا يحتاج أى إضافات
    يحتوى كل الأطراف التى يمكن استخدامها لوظائف أخرى
    P3.0 RXD مدخل الاتصال التوالى
    P3.1 TXD مخرج الاتصال التوالى
    INT0 P3.2 مدخل المقاطعة Interrupt
    INT1 P3.3 مدخل المقاطعة Interrupt
    T0 P3.4 مدخل مؤقت خارجى
    T1 P3.5 مدخل مؤقت خارجى
    P3.6 WR مخرج الكتابة للذاكرة الخارجية
    P3.7 RD مخرج القراءة من الذاكرة الخارجية

    مما سبق نرى أننا لو اكتفينا بالذاكرة الداخلية 8 ك ستكون الدوائر سهلة و مباشرة ولا تعقيد بها
    أما البرمجة – فرغم انه يشمل كثير من الأوامر إلا أنها لو فهمت بالطريقة الصحيحة ستكون هى أيضا سهلة مباشرة
    والى اللقاء إن شاء الله فى الحلقة القادمة
    فى انتظار ارائكم


    0 Not allowed!

  2. #2
    جديد

    User Info Menu

    اخى العزيز لو امكنك وضع بعض الكتب عن تلك اللغة لكي تعم الفائدة
    ولك جزيل الشكر


    0 Not allowed!

  3. #3
    مشرف متميز

    User Info Menu

    اخى اشكر لك ردك الجميل فقط غالبا تكون الكتب اكبر مما يسمح به المنتدى لذا يمكنك تحميل ما تريد من موقع الشركة الأم
    http://www.atmel.com
    اما عن المقالات فأرجو ان يوفقنى الله على ان اكمل الشرح من الجهتين - المكونات والبرمجة


    0 Not allowed!

  4. #4
    عضو متميز

    User Info Menu

    شكرا لك ياماجد على هذا المجهود

    هناك جمله لم أفهمها جيدا وهى
    كمخرج يمكنه أن يقبل أو يمد بتيار يوازى 4 مداخل TTL قياسية Source/Sink
    أرجو منك شرحها أكثر
    وأيضا ما هو الفرق بين P0 وغيره من البورتات بالنسبه للتيار

    وجزاك الله خيرا


    0 Not allowed!

  5. #5
    جديد

    User Info Menu

    شكرا لك اخى ماجد على اهتمامك وجزاك الله كل خير


    0 Not allowed!

  6. #6

  7. #7
    مشرف متميز

    User Info Menu

    الكثير يعلمون ما هى TTL Gate بدون أن يعلموا ما بداخلها أو يأخذون التركيب على انه مادة درست دون استخلاص نتائجه لهذا أرجو معذرتى فى محاولة شرح هذه النقطة حتى يكون لما يلى معنى وليس مجرد ارقام تنسى عند الخروج من ألنت
    ما يلى هو التركيب الداخلى من واقع Texas Instruments TTL Data Book ورقم القطعة SN7437 – SN7440 والفرق الأولى 2 Input NAND Gate والثانية 4 Input NAND Gate

    منا نرى فالدخول هو Emitter الخاص بترانزيستور الدخول وهو ترانزيستور ذو Emitter متعدد

    حسب الدائرة هناك 4 دايود بين الدخول والطرف السالب هى حماية فقط ضد انعكاس الفولت (دخول سالب الجهد)

    لذا نرى أن عندما يكون الدخول Logic1 أى +5فولت لا يمكن أن يمر تيار دخولا للطرف Input إلا فقط ما يسمى Leakage current وهو بالميكرو أمبير ومهمل القيمة
    عندما يكون الدخول Logic O أى صفر فولت يخرج التيار من طرف ألـ Input للخارج و ما لم تستطيع الدائرة الخارجية امتصاصه Sink it يصبح ترانزيستور الدخول Off وكان الطرف Logic1
    قيمة التيار تحسب من قيمة المقاومة R1 وجهد بين Emitter - Base وهذه المقاومة تختار بحيث يصبح التيار قياسيا موحدا معلوما واصبح اسمه Standard TTL input ويساوى 1.6 مللى أمبير
    عندما يكون الدخل موزعا على عدد من أقسام الوحدة مثل Counter – Shift Register يوضع فى هذا الطرف داخليا Buffer لجعل الدخول موحدا دائما
    مع التطور والسعى وراء سرعة اكبر ظهرت العديد من العائلات مثل H – S – L – LS – ALS – F وكان أقربها للقياسى هو عائلة LS حيث زادت فى السرعة مع انخفاض التيار ولذا اعتبر البديل المنتظر للعائلة الأساسية واعتبر تيار دخولها أيضا قياسيا وهو 0.4 مللى أمبير

    إذا ذكر فى مواصفات مخرج ما انه Can Drive n TTL inputs فهذا معناه أن المخرج يمكنه أن يمتص Sink تيارا خارجا من عدد n من TTL inputs أى n × 1.6 مللى أمبير ولكنه لا يستطيع أن يصدر أو يخرج منه تيار اقل من ذلك بكثير حيث انه غير مطلوب للــ TTL inputs – وبالمثل مواصفات مخرج ما انه Can Drive n TTL-LS inputs فهذا معناه أن المخرج يمكنه أن يمتص تيارا خارجا من عدد n من TTL-LS inputs أى n × 0.4 مللى أمبير ولكنه لا يستطيع أن يصدر أو يخرج منه تيار اقل

    المخارج التى يمكنها إصدار تيار للخارج تسمى Source أما التى تمتص التيار تسمى Sink وعلى هذا فعندما يذكر أن هذا المخرج Can Source/Sink يعنى التيار يمكن أن يخرج أو يدخل
    بمعنى آخر يمكنه أن يتعامل مع أحمال تتصل بالأرضى أو أحمال تتصل بالطرف الموجب VCC
    من الرسم أيضا يتضح معنى هذا الكلام – إذ انه أساسا حجم وبالتالى قدرة (أمبير) كل من Q3,Q4 ونظرا لأن تيار طرف الدخول خارجا منه لذا يتحتم أن يمر فى OUTPUT Y للوحدة السابقة لها فى مسار الإشارة من الخرج إلى الأرضى وعليه وجب أن يكون Q4 اكبر مساحة من Q3 وهذا بالضبط ما يحدد ما إذا كان المخرج قادر على تحمل التيار داخل إليه فقط أم الاتجاهين
    السؤال الثانى سارد عليه فور الإنتهاء من كتابته وشكرا


    0 Not allowed!

  8. #8
    مشرف متميز

    User Info Menu

    معذرة للإطالة والإسهاب فى الشرح فأنا أضع فى اعتبارى أن هناك من سيقرأ هذا ويحتاج هذه المعلومة أيضا
    الفرق بين PO و باقى المنافذ
    لنعد مرة أخرى للرسم السابق , عندما يكون الخرج HI يكون Q4 Offإذن ماذا يجعل النقطة Y تأخذ قيمة 5 فولت ؟ أن Q3 يقوم بوظيفة Pull Up أى يوصلها بالـجهد الموجب حتى فى وجود حمل متصل بالأرضى وفى الوحدات التى لا يكون بها Q3 كما نعلم كلنا تسمى Open Collector وفى تقنية CMOS تسمى Open Drain وهى لا تعمل بدون مقاومة خارجية توصل بالطرف الموجب للتغذية
    PO عندما يبرمج كخرج يصبح Open Drain أى يحتاج لمقاومة خارجية موصلة إلى +5فولت لتجعل الطرف يتحرك بين صفر و +5 فولت ويمكنه أيضا أن يقود 8 TTL inputs ومن المناقشة السابقة يستطيع كل خط من الثمانية لمدخل PO يستطيع أن يقبل 8×1.6 = 12.8 مللى أمبير
    هناك نقطة يجب عدم إغفالها هنا ليست فى هذه القطعة ولكن بالنسبة لأى قطعة الكترونية نتعامل معها وهى

    فى المثال السابق لدينا 8 خطوط للمدخل PO وكل منها يتحمل 12 مللى أمبير والسؤال هو هل يمكن تحميل الثمانية معا كل منها بـ 12 مللى ؟
    هذه الحالة متكررة فى كثير مكن القطع مثل المكبر LM324 حيث يمكن للمخارج الأربعة له أن تتحمل شوورت للأرضى أو VCC+ لكن هناك دائما تحذير
    Device Dissipation هو محور المشكلة لأته ببساطة قدرة العبوة الإيبوكسى أو السيراميك على التخلص من الحرارة المتولدة وإلا سترتفع الحرارة لحدود التلف الدائم – ولكل نوع من هذه العبوات لها قدرة مختلفة على إشعاع الحرارة لذلك يجب مراعاة أن فى حالة التحميل على المداخل تحسب الطاقة المتولدة ويجب الأ تزيد عن القيمة المذكورة
    قد نسأل إذن لماذا يتحمل هذه القيمة ونحترس فى استخدامها
    الفكرة انك إذا استخدمت PO فى برنامج خارج المايكرو والتعامل مع ذاكرة خارجية فالأمر مقبول لأن طبيعة التعامل مع هذه الأشياء لحظية – نضع العنوان ثم نقرا البيان ونغير العنوان فى حوالى المايكرو ثانية - أما للتحكم فى الدوائر المحيطة فربما يظل الأمر ثابتا لحين إشعار آخر مثلا من بدء التشغيل لنهايته


    0 Not allowed!

  9. #9

  10. #10
    مشرف متميز

    User Info Menu

    لنعرف كيف ننفذ ما سبق أى نخصص أى الأطراف تكون مداخل وأيها مخارج ربما يكون من الأفضل معرفة شئ عن التركيب الداخلى
    لاحظت فى الكثير من الحالات أن البعض لا يفرق بين الميكروبروسيسور و الميكرو كونتروللر و الجهاز المسمى PLC و ربما يكون من المفيد توضيح هذه الفروق الآن
    الأول ميكرو بروسيسور up وهو الجزء الأساسى فى الحاسبات و لا يقوم بشىء بدون أجزاء أخرى مساعدة ولا يحتوى غالبا على ذاكرة للمستخدم و تكون الذاكرة داخله فقط لاستخدامه الذاتى فمثلا لا نستطيع أن نستخدم أمرا لحفظ بيانات داخل ألكاش داخل البينتيوم وهو يحتوى على وحدة تحكم تنفذ أوامر البرنامج ووحدة حساب و منطق لتنفيذ العمليات الحسابية و العمليات المنطقية (التى ينتج عنها إما صح أو خطأ مثل هل أ اكبر من ب ؟ - كما يحتوى على مجموعة من المسجلات Registers و المراكمات Accumulators و الفرق أن نتيجة عملية حسابية يمكن أن تذهب للأخير فقط مثلا نجمع محتوى مسجل أ مع مسجل ب يجب أن تذهب النتيجة لمراكم و ليس إلى أى منها
    استخدامه يتطلب دوائر تحليل شفرات Decoders حتى تتمكن من التعامل مع أى شىء خارجى لذا فهو صعب فى استخدامه لكن طاقاته هائلة مثل المستخدم فى حاسبك الحالى
    الثانى وهو الميكرو كونتروللر عبارة عن ميكرو بروسيسور مضاف إليه ذاكرة للبرنامج و أخرى للبيانات و بعضها قد يحتفظ بالبيانات عند انقطاع التيار عنه كما يحتوى على دوائر لتوفير أطراف يستخدمها المبرمج للتعامل المباشر مع العالم الخارجى مثلا باستخدام ترانزيستور و ريلاى لتشغيل أشياء مباشرة وهو لذلك أسهل كثيرا جدا فى الاستخدام ولكن طاقته أقل كثيرا من الأول من حيث السرعة والإمكانات
    الثالث PLC وهى اختصار Programmable Logic Controller عبارة عن ميكرو كونتروللر مضافا إليه ما يلزم من ترانزستورات و ريلاى أو ثايريستورات الخ للتحكم فى الأجهزة المحيطة
    نظرا لأن الأخير عبارة عن ميكرو كونتروللر بكامل دوائره لذا يجب أن نحدد مسبقا كم طرف تحول إلى مداخل للقياس و كم يبقى مخارج للتحكم فمثلا لو استخدمنا الوحدة 89C52 فهى تحتوى 48 طرف
    هل نستخدم أطراف الاتصال التسلسلى RS232 ؟ هل نستخدم طرف المقاطعة لهذا الهدف ؟ هل نستخدم العدادات الداخلية ؟ ثم كم من الباقى نجعله دخول و كم نجعله تحكم (خروج)
    لهذا يكون من الصعب على المستخدم أن يبرمج هذه الوحدة خاصة لا يتوقع منه أن يكون مبرمجا من الأصل - لذا يصنع الشركات التى تنتج وحدات PLC برنامجا ذو طبيعة رسوميه بها أشكال للمفاتيح و الحساسات و الخريطة التى يريد المستخدم أن تكون خطوات التنفيذ عليها و هذا البرنامج يولد الشفرات الخاصة لبرمجة وحدة PLC و يقوم ببرمجتها أيضا و بناء على طراز الوحدة يحذرك إن حاولت استخدام عدد أكبر من المخصص كمخل أو مخرج فى هذا الطراز
    مثلا يمكن أن استخدم الوحدة 89C52 لعمل عدة موديلات من خمسة مداخل و خمسة مخارج ألى 15 من كل و تتراوح فى السعر حسب تجهيز كل منها

    الآن نتحدث عن تركيب الميكرو من سلسلة 89C5x
    كما سبق عرفنا أن بداخله وحدة تحكم و ذاكرة للبرنامج وأخرى للبيانات و مراكم واحد اسمه Accumulator A و ثمانية مسجلات Registers
    يوجد بداخلة أيضا 128 خانة ذاكرة تسمى مسجل الوظائف الخاصة Special Function Register SFR وهى تحتل المواقع (العنوان) من 128 إلى 255 و قبل أن تسأل عن موقف الذاكرة 256 أقول أنها على التوازى
    فلو استخدمت الأمر حفظ فى خانة رقم 200 فهى تعنى الخانة 200 من المسجل أما إن استخدمت أمر للحفظ الغير مباشر كأن تضع فى المراكم رقم 200 ثم تنفذ الأمر حفظ عند العنوان المخزون فى المراكم هنا تذهب للذاكرة
    و الذاكرة من 0 الى 127 لا شىء معها و يمكنك الكتابة بها كيفما شئت
    لا داعى للقلق لأن البرامج التى تستخدم لكتابة الكود (برمجة اتميل) تفرق بسهولة بين هذه الفروق لأنها تعطى كل خانة من SFR اسما يعبر عن وظيفتها – هذا المثال أرجو أن يوضح ما أقول
    لكل مدخل Port خانة مخصصة من SFR و الخانة كما نعلم 8 خط 8 bit كل منها لخط من المدخل Port
    فلا داعى لأن نتذكر أيها خاص بالمدخل P0 وهى رقم 80 (نظام ستة عشر ) أو 128 نظام عشرى
    الوحدة تستخدم أسلوب شركة انتل للبرمجة أى أن الأمر MOV يستخدم لنسخ البيانات من المصدر للهدف ولكن لا ينقلها بمعنى لا تلغى من المصدر فمثلا
    MOV P0,01010101
    يترجم لأنك تريد التحكم فى المدخل P0 و ستترك الأطراف P0.0 P0.2,P0.4 etc مداخل كما هى و تغير P0.1,P0.3,P0.5 etc إلى مخارج
    تذكر أننا نبدأ العد P0.0 , P0.1, P0.2
    كما أن هناك أوامر تتعامل مع الخط الواحد Bit فيمكنك أن تغير طرف معين من مدخل إلى مخرج والعكس
    ÓáÓáÉ ãÞÇáÇÊ ßíÝ ÊÓÊÎÏã Atmil ãíßÑæßæäÊÑæááÑ-atmilconst-gif atmilconst-gif
    معذرة أود تصحيح معلومة كتبتها خطأ فى المرة السابقة
    عند البدء – يخزن الميكرو مجموعة من 11111111 فى كل مدخل من الأربع مداخل وهذا يجعلها إدخال أى تقرأ من العالم الخارجى وعند وضع صفر لأى خط يتحول لإخراج
    فى المرة القادمة إن شاء الله سنرى جدول لهذا SFR و معنى كل خانة به و من المريح أن نعلم أن أغلبه غير مستخدم حتى لا نشعر بالقلق من محاولة معرفة 128 خانة و ما تعنيه كل منها فقط 27 خانة قيد الاستخدام

    الصور المرفقة الصور المرفقة

    0 Not allowed!

صفحة 1 من 3 123 الأخيرةالأخيرة

الكلمات الدلالية لهذا الموضوع

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •