منتديات الالكترونيات العصرية  
yoursite.com page title .

استرجاع كلمة المرور طلب كود تفعيل العضوية تفعيل العضوية
العودة   منتديات الالكترونيات العصرية > منتدى الحاكمات الدقيقة Microcontroller > منتدى المتحكمات ميكرو بلغة الاسمبلي

  #1  
قديم 06-03-2018, 11:53 AM
ماجد عباس محمد ماجد عباس محمد غير متواجد حالياً
استاذ
ومشرف الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة - مصر
المشاركات: 1,395
معدل تقييم المستوى: 26
ماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant future
افتراضي الميكرو كونترولر انواعه و برمجته و استخداماته

الميكرو كونترولر


هذا الشرح يتناول أنواع الميكروكونتروللر، وشرح لأهم عائلتين هما أتمل Atmel و عائلة ميكرو تشيبPIC و يتناول الحاجة إليهم و استخداماتهم و ما تصلح له وما لا تصلح و كيفية برمجتهم بلغات عدة.
ليس الهدف أن أجعلك محترفا ولا أن أكشف لك خبايا اللغات ولكن يكفينى أن أبين لك فروق هذه الأمور وأن أضعك على الطريق و عليك أن تختار الأنسب لك وهذا الاختيار هو ما يجعلك تصل للاحترافية لكن لو فرضت عليك طريقا ، قد يكون الأفضل لغيرك لكن الأفضل لك شيء آخر.
قد تبدو المقدمة التالية طويلة بعض الشيء لكنها ضرورة لوضع أساس حوار تركيبه الداخلى و لغات البرمجة.
كيف بدأ
منذ بدء الحضارة و سعى الإنسان لصنع آله حاسبة لتسرع الإنجاز و تتجنب الأخطاء ولاحقا تتجنب النسيان و توصل العديد من العلماء لآلات و لكنها عجزت عن الطلب الأخير فمفهوم الذاكرة و التذكر كان صعب التحقيق حتى توصل العالم *Lee De Forest لى دى فورست لوضع شبكة للتحكم فى مسار الإلكترونات فصنع أول صمام مكبر و من ثم أمكن عمل أول حاسب آلى إلكترونى تماثلى حقق كافة العلاقات الرياضية المعقدة مثل اللوغاريتمات و الحسابات المثلثية وحتى استخدمت كثير من الوسائل لتحقيق الذاكرة مثل الشرائط المثقبة أو الأجزاء المتحركة الخ لكن ظلت العقبة الرئيسية هى سهولة البرمجة. كانت الوظائف تصنع فى صناديق قياسية بعرض 19 بوصة و البرمجة بتثبيتها فى دولاب خاص يسمى راك 19 بوصة ثم توصل الصناديق ببعضها بكابلات و أيضا عمل حاسب يؤدى عدة وظائف تختار بينها بمفتاح صعبة لكون الأسلاك تحد من سرعة الاستجابة فتبطئ الأداء.
سعى العلماء لتصغير ألصمامات الإلكترونية بهدف تصغير الحجم و تقليل الفاقد فى حرارة التسخين و تقليل الفولت المطلوب لتشغيلها من مئات لأقل من مائه فولت. صممت كافة الدوائر المنطقية بألصمامات و صمم المذبذب متعدد التوافقيات (سلسلة تصميم الدوائر المنطقية) و ألذى اعتبر أول خلية ذاكرة سهلة التطبيق ثم تطورت لعمل مسجلات و بوابات أمكن الوصول لأول حاسب آلى إلكترونى فى الأربعينات سمى ENIAC اختصار جمله Electronic Numerical Integrator and Computer و كان يشغل مبنى كاملا و له مبنى ملحق لأجهزة التكييف و التبريد و كانت سرعته بلغت 2 ميجا هرتز و كان وقتها سحرا – تخيل أن تقوم بمليونى عملية حساب فى الثانية الواحدة و ذكر أحدهم أننا لو بنينا جهاز آخر سيكفيان حاجة العالم من الحسابات و الآن كل منا لديه حاسبان على الأقل فى يده، الهاتف المحمول و الساعة ...
حتى هذا الوقت اقتصرت الدوائر المتكاملة على المقاومات و المكثفات بهدف تصغير الحجم و تقليل الوصلات.
فى ديسمبر 1947 توصل العلماء لأول ترانزستور من الجرمانيوم و الثنائيات من المواد الصلبة وأضافت الدوائر المتكاملة الثنائيات فقط لعدم ملاءمة الجرمانيوم لهذا الأسلوب فى التصنيع. ظهرت عائلات رقمية مثل عائلة RDL وهى المقاومة و الثنائى و DTL أو الثنائى مع الترانزستور فى صورة كروت الكترونية قابلة للوضع فى قاعدة Plug in أو الرفع و الاستبدال.
عندما تمكن العلماء من استخدام السيليكون أمكن صنع أول دوائر متكاملة تحتوى ترانزستورات و صنعت عائلة TTL الشهيرة و صنعت حاسبات تسمى مينى كمبيوتر و هيكل أساسى Main Frame وهى "العملاقة وقتها" ولم تصل لجزء من مائه من هاتفك المحمول.
أغلب الحاسبات وقتها صنعت طبقا لنسق سمى هارفارد حيث يكون مكان حفظ البيانات و مسار حفظها مستقلين تماما عن مكان حفظ البرنامج (الكود) و مسار التعامل معه وهذا وفر المرونة و السرعة حيث لا يجب تساوى عرض كل منهما و طلب ومعالجة أحدهما لا يتعارض مع التعامل مع الآخر و كان عادة البرنامج فى كروت مثقبة أو شريط مثقوب و البيانات فى وسائل كهرو ميكانيكية .
الهيكل الأساسى لحاسب آلى تبلور فى وحدة معالجة مركزية للحساب و المنطق و حولها الذاكرة و وسائل إدخال و إخراج .
بعد تطور TTL أمكن صنع وحدة معالجة مركزية فى صورة دائرة متكاملة وهى 74181 ولاحقا المعدلة 74881 وهى قادرة على تنفيذ 16 عملية حسابية أو منطقية جمع أو طرح أو إزاحة أو مقارنة أو دوال المنطق المعروفة AND-OR-XOR و المتمم أو Complement على 4 بت معا وهى 24 طرف و بسرعة تصل إلى أكثر من 10 ميجا و قابلة للامتداد أى توصل بعضها ببعض للتعامل مع 8 بت أو اكثر.
ظهور دوائر منطقية من عائلات أخرى مثل NMOS , PMOS عازل أكسيد السيليكون الموجب و السالب القناة،ولاحقا CMOS عازل أكسيد السيليكون مع المكمل، مكن من تصغير حجم الترانزستور بصورة كبيرة و أمكن من دمج وحدة المعالجة السابقة مع مثيلتها لمعالجة 8 بت معا و إضافة مراكمات و عداد للبرنامج و حافظ للبيانات تحت المعالجة و ظهرت طريقة "فون نيومن" فى الحاسبات حيث تكون خطوات البرنامج و البيانات فى ذات الذاكرة و بتتابع، أى كود أمر يليه البيان ألذى يتعامل معه وسميت ميكروبروسيسور لأنها تعالج البيانات..
أشهر هذه الميكروبروسيسور هو 8080 و ألذى أنتجته إنتيل و ألذى تفوقت عليه شركة زيلوج بالميكرو Z80 و ألذى أصبح عصب كل الحاسبات الشخصية و تبنت IBM هذا النوع من إنتيل وهذا سبب شهرته لكن باقى الشركات استخدمت Z80 لأفضليته و سهولة استخدامه و منافستها الأساسية شركة موتورولا انتجت MC6800 و ألذى كان أسهل بكثير فى الاستخدام و أنسب للماكينات و الصناعة عموما وهنا مقارنة بينهما

كل منهما 40 طرف بنسق DIP اختصار Dual Inline Package و تشمل على حافلة للعنوان Address Bus من 16 طرف يتيح أقصى تناول للذاكرة 16 كيلو بايت أو 65536 خانه ، و أخرى للبيانات Data Buss من 8 بت تتيح التعامل مع بايت كاملة فى المرة الواحدة وثالثة للتحكم Control Buss أو أحيانا System Buss و أطراف التغذية و كانت تعمل بكريستال 2 ميجا و أقصاها وصل 4 ميجا.
على اليمين نجد Z80 و نجد حافلة ألعنوان Address Bus تشمل الجزء العلوى على الجانبين (أطراف من1:5 على الجانب الأيسر ثم من 30 :40 على الجانب الأيمن) بينما فى 6800 نجدها مرتبة بالتتالي على الجانب الأيسر من الطرف 9 وحتى 20 ثم الجانب الأيمن حتى 25 .
حافلة البيانات Data Buss فى Z80 فى الأطراف 14 ثم 15 ثم 12 ثم 8 ثم 7 ثم 9 ثم 10 ثم 13 مقابل اليسرى مرتبة .
لا ننسى هنا ذكر شركة روكويل و منتجها 6500 وهى ما اختارته شركة أبل لحاسباتها.
لا ننسى أن كل هذه الميكرو لم يحتوى ذاكرة و دوما كنا نشترى ذاكرة لحاسباتنا ولم يحتوى اتصال تسلسلى ولا عدادات تايمر ولا محول تماثلى رقمى – الحساب و المقارنة و المنطق فقط و الحساب كان جمع وطرح فقط أما الضرب و القسمة فكان لها معالج مساعد Co-processor لمعالجة الضرب و القسمة و الأرقام العشرية و كل هذه الخواص كانت إضافات محيطية ولها ما سمى بروسيسور خاص بها.
معذرة للإطالة لكن هذا تسبب فى الحاجة لأشياء هامة جدا تربط مفاهيم لغات البرمجة و أكوادها Software مع المكونات الملموسة Hardware و مدى حاجتنا لأي منهما فى عالم الميكرو، هذا موضوعنا القادم بإذن الله
الصور المرفقة
نوع الملف: jpg Microprocessors.jpg‏ (26.8 كيلوبايت, المشاهدات 79)

التعديل الأخير تم بواسطة ماجد عباس محمد ; 07-01-2018 الساعة 09:15 AM
رد مع اقتباس
  #2  
قديم 06-03-2018, 09:58 PM
sunxing sunxing غير متواجد حالياً
مشرف
 
تاريخ التسجيل: Jun 2011
المشاركات: 188
معدل تقييم المستوى: 9
sunxing will become famous soon enoughsunxing will become famous soon enough
افتراضي رد: الميكرو كونتروللر انواعه و برمجته و استخداماته

جزاك الله خير استاذنا الفاضل
سباق بارك الله فيك لمثل هذه المواضيع

اقترح ارفاق مقاطع فيديو قصيرة وصور لتوضيح بعض المفاهيم


نفع الله بكم
رد مع اقتباس
  #3  
قديم 06-04-2018, 01:15 PM
ماجد عباس محمد ماجد عباس محمد غير متواجد حالياً
استاذ
ومشرف الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة - مصر
المشاركات: 1,395
معدل تقييم المستوى: 26
ماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant future
افتراضي رد: الميكرو كونتروللر انواعه و برمجته و استخداماته

إن شاء الله
أسعدنى مروركم الكريم
رد مع اقتباس
  #4  
قديم 06-04-2018, 01:28 PM
ماجد عباس محمد ماجد عباس محمد غير متواجد حالياً
استاذ
ومشرف الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة - مصر
المشاركات: 1,395
معدل تقييم المستوى: 26
ماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant future
افتراضي بدء التشغيل و البايوس bios

بدء التشغيل و البايوس BIOS
كل ميكرو يجب أن يبدأ بالريسيت Reset ألذى يحدد له مكان فى الذاكرة يبدأ به فيضع على حافلة العنوان رقم الخانة المقصودة ثم يضع إشارة قراءة من الذاكرة على حافلة التحكم فتجيبه الذاكرة بمحتواها وهنا تحدد وحدة المعالجة ما إن كانت الخطوة التالية هى بيان مطلوب أو أمر جديد فمثلا أمر المتمم Complement يكون للمراكم فقط ولا يتطلب بيانات أخرى على العكس من أمر الجمع مثلا سيحتاج ما نجمعه.
الحاسبات الصغيرة تعمل على ملف واحد فقط له بداية واحدة فقط يبدأ منها ليشعر المستخدم أنه يعمل ثم يختار المستخدم لعبة ما أو برنامج وحيد لكى يشغله لكن، هل هذا البرنامج لا يحفظ بيانات؟
هنا تظهر مشكلة كبيرة وهى كيف؟
سنحتاج مكان ثم نقسم المكان لوحدات و نعطى البيانات اسما – أصبحت ملف (مثل أى كتاب له فهرس به الفصول و محتوى الصفحات الخ) ، و هنا نشأت الحاجة لنظام تشغيل يتولى هذه الأمور. يفرق بين أنواع الملفات و يحتفظ بفهرس للملفات و أماكنها و إن تم تعديل أحدها إين تضاف الزيادة؟ و إن حذف كيف نحررها من الفهرس الخ. باختصار نظام تشغيل Operating system لمعالجة هذه الأمور.
هنا ظهرت الحاجة لوسائط تخزين غير الذاكرة تكون دائمة عند غلق الجهاز مثل القرص الصلب أو المرن الخ.

مما سبق بات واضحا أن تركيب الحاسب أصبح مفتوحا للخيارات الشخصية فقد أشترى قرص صلب أو لا و قد أركب قارئ أقراص مرنة أو لا وقد احتاج لأن ابدأ من خارج الجهاز كليا، لذا كان لابد من استخدام نظام أساسيات الإدخال و الإخراج Basic Input Output System و اختصارا BIOS لكى ندل الميكرو ما لديه من وسائل الإدخال و الإخراج و أيها يبدأ منها التشغيل حيث يجد نظام التشغيل و ألذى بدأ بالدوس DOS وهى اختصار Disk Operating System أى نظام تشغيل الأقراص و ألذى مازال يستخدم حتى وقت كتابة هذه الكلمات ثم الويندوز وغيرهما من الأنظمة مثل يونكس و لينكس الخ.
تطور الجيل التالى و استخدم 16 بت للبيانات و طبيعى أن ينشدوا حجم أكبر من البيانات و البرامج و سرعات اكبر أى 24 بت للعنوان مع 16 بت للبيانات و لذا استخدموا متكاملة 48 طرف فى صورة متكاملة مربعة و تصل حتى 64 طرف.
لكن ما تلى ذلك من أجيال سعت لحجم أكبر من الذاكرة ولم تعد هذه الأشكال من المتكاملات مناسبة لذا لجأوا لعدة صفوف داخل بعضها مثل إنتيل 486 حيث لونت الصف الخارجى باللون الأحمر و الأوسط بالأخضر و الداخلى بالأصفر و تسمى PGA اختصارا Pin Grid Array مصفوفة الأطراف الشبكية.

الآن هذه لا تصلح لك ولى فهى تتطلب بوردة متعددة الطبقات كما أيضا لها احتياطات خاصة لسرعتها العالية و التى زادت عن 100 ميجا فلا يجب أن تتغير ألسعات فى أطراف البيانات حتى لا تصل بعض أطرافها متأخرة عن الأخرى من الذاكرة.
من أهم الأمور أن أوضح لك أن حافلة العنوان وحافلة البيانات كانت تصل الميكروبروسيسور بالذواكر وكافة المحيطات، أجل كل الأطراف السبعة و عشرون.
حقا هم 16 للعنوان مع 8 للبيانات أى 24 ثم خط تحكم يحدد ما إن كان التعامل مع الذاكرة أم محيطات IO request و نظرا لإضطراب القيم على الحافلات هناك خط تحكم آخر يسمى العنوان صحيح Valid Memory Address اختصارا VMA أى أن الميكروبروسيسور قد وضع العنوان النهائى وهو هكذا ببساطة فلا أريد أن أعقد لك الأمور بخاصية DMA أو Direct Memory Access حيث تتولى الأجهزة التعامل مع الذاكرة دون تدخل الميكرو والتى تضيف خطين تحكم أخريين
Buss request , Buss Available
- و فى النهاية خط يسمى ألفاز2 أو Ø2 وهى الجزء من الدورة التى تشمل من2 :4 نبضة و التى سيقرأ فيها الميكروبروسيسور البيان.

هنا نشأت الحاجة لعمل الميكروكونتروللر أى العودة للجذور من جديد حتى تتمكن انت و أنا من صنع بوردة بإمكانياتنا المحدودة و أن نضع هذا الميكرو على بوردة تجميع Bread Board و نجرى تجاربنا وهو موضوعنا القادم إن شاء الله
الصور المرفقة
نوع الملف: jpg 486dx.jpg‏ (25.8 كيلوبايت, المشاهدات 68)
رد مع اقتباس
  #5  
قديم 06-05-2018, 12:31 PM
ماجد عباس محمد ماجد عباس محمد غير متواجد حالياً
استاذ
ومشرف الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة - مصر
المشاركات: 1,395
معدل تقييم المستوى: 26
ماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant future
افتراضي العودة للجذور

ألعودة للجذور:
مما سبق وجدنا أن الحاجة نشأت لعدة أمور مثل:
1- ألعودة للشكل الأساسى DIP أو المربعة على أقصى تقدير لتمكين الشخص ألعادى من التعامل معه.
2- السرعات المتوسطة و التى لا تشكل عائقا فى التنفيذ.
3- الإسغناء عن نظام التشغيل و من ثم البايوس و ترك الميكرو متاح للمبرمج لكى يتعامل معه مباشرة على مستوى المكونات الداخلية.
4- التخلص من صعوبة توصيل 16 خط للعنوان مع 8 خط للبيانات و باقى التحكم أى 29 طرف و من ثم العودة لنظام هارفارد أى ذاكرة مستقلة للبرنامج و أخرى مستقلة للبيانات.
5- من النقطة السابقة يمكن التخلص كليا من 24 طرف و بعض خطوط التحكم بجعل الذواكر كلها داخلية و احتواء المداخل و المخارج Input Output ما أمكن داخل الميكرو وبعض الوظائف الطرفية مثل التواصل التسلسلى و التحويل تماثلى لرقمى و من ثم أصبحت كافة الأطراف متاحة للمبرمج للتحكم فى العالم الخارجى و تحسس وسائل التحكم مثل الحساسات و المفاتيح
6- لم تعد هناك حاجة لكل التعليمات فى الميكروبروسيسور لذا سنستغنى عن التعليمات التى ستتم فى الذاكرة و نكتفى بالتعليمات التى تتم بين الذاكرة ووحدة المعالجة فقط و نسمى هذا مجموعة الأوامر المخفضة Reduced Instruction Set Computer اختصاراRISC رغم أن هذا يتطلب زيادة عدد خطوات تنفيذ ذات المهمة للحاجة لنقل البيان الأول لوحدة المعالجة ثم نقل النتيجة للذاكرة.

وهنا أصبح كل برنامج يكتب هو وثيق الصلة ولصيق بالمكونات و لم تعد هناك ميزة للغة عن أخرى فى الوصول لها فلا نظام تشغيل يدخل بينك و بين الميكرو ولا أى وسيط من أى نوع. عندما تحمل البرنامج سيتعامل مباشرة مع كل مكونات الميكرو.

تنافست شركات عديدة فى إنتاج هذا الشكل و أصبح لكل منها منتج له خواصه و ميزاته و مجالاته الأنسب لكن أشهرها كان من إنتاج إنتيل و سمى C51 و ميكرو تشيب. إلا أن إنتيل باعت منتجها لشركة أتميل و التى سمته بدورها AT89x5x حيث AT تعنى Atmel و 89 رقم المجموعة ثم x قد تكون C,S, L,LV حيث كل حرف يعنى خاصية ما ثم 5X قد تكون 51 أو52 أو53 أو54 أو 58 أو 2051 الخ حسب نوع و طراز الميكرو ثم سلسلة AVR و المعروفة بالإسم AtMega بينما ميكرو تشيب أنتجت PIC10cxxx ثم PIC12cxx ثم PIC16xxx ثم PIC18xxx الخ
المجموعتان من إنتاج ميكروتشيب PIC10cxxx و PIC12cxx غالبا من ثمانية أطراف وهى محدودة الإمكانيات لكن لها العديد من التطبيقات مثلا موتور توجيه طبق الأقمار الصناعية، لا يحتاج سوى طرف لتلقى الأوامر من الريموت و آخر لعد نبضات إنكودر الموتور و طرفين لتحريك الموتور يمين أو يسار و طرفين لخزن المعلومات فى ذاكرة فلاش ملحقة بالبوردة. هذا لأبين مدى أهمية أن نعلم عن كل الأنواع ، فمهما كان الميكرو صغيرا و محدود الإمكانات فله عديد من التطبيقات التى يمكن استخدامها فيها و تحقق إنجازا كبيرا. فقط حاول أن تفكر كيف تستبدله بإلكترونيات رقمية لتدرك الفارق.
هذه المجموعة لم أعلم لها موازى من أتميل سوى لاحقا من فصيلة AVR و سميت ATtiny وهى اختصار AT وهو اسم الشركة ثم tiny بمعنى صغير إلا أن حريه اختيار الرصةة Stack (و سيأتى شرحه المرة القادمة إن شاء الله) تجعل ATtiny أقوى بكثير من ألبيك.
كيف نستخدمه و نبرمجه؟ حسنا لو شرحت لك ألبيك 16 سيعترض هواة ألبيك 18 ولو شرحت C51 سيحتج هواة AVR ولكنى سقت لكم مثالا موتور الدش لغرض فى نفسى وهو هذا الأمر. سأشرح الكل لكى تعلم انت كيف تبحث عما تريد و كيف تدرس أى ميكرو ولا تقف عاجزا بل تختار الأنسب . كنت أبرمج C51 بالأسيمبلى حين طلب منى جهاز بالميكرو تشيب و لغة C لعدم توافر النوع الآخر ، كمصمم يجب ألا تتوقف، ادرس الداتاشيت ، أتعرف على الفروق و أبرمج بأى لغة تناسب التطبيق.
لهذا يجب أن نعلم التركيب الداخلى و كيفية البرمجة. وهذا موضوعنا القادم بإذن الله
رد مع اقتباس
  #6  
قديم 06-06-2018, 12:39 PM
ماجد عباس محمد ماجد عباس محمد غير متواجد حالياً
استاذ
ومشرف الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة - مصر
المشاركات: 1,395
معدل تقييم المستوى: 26
ماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant future
افتراضي أشهر أنواع المتحكمات

أشهر الأنواع:
كما ذكرنا فشركتى ميكروتشيب و أتميل هما أشهر الشركات فى هذا المجال و سنقارن أشهر الأنواع من كل منهما ثم نشرح التركيب الداخلى و كيفية البرمجة بالأسيمبلى و البيزك و لغة C و سنعرض أخيرا للجيل المتطور من كل منهما و عليك أن تكمل المشوار.
أولا لنقارن بين الأطراف سنجد أننا فى حاجة لأن نعرف كيف يتصرف الميكروكونتروللر وما هى احتياجاته من العتاد لكى ينفذ أى برنامج.
ألتركيب العام:
الشرح التالى لا يخص رقم بعينه ولكنه صحيح لكل الأرقام ومن الشركتين أيضا.
أولا سنفتح مصدر التغذية و بالتالى يجب أن يبدأ الميكروكونتروللر فى العمل وهذا يتطلب مذبذب داخله لكى يعطى له نبضات تجعله يكرر دورة واحدة محددة وحتى قطع التغذية عنه. هذه الدورة هى أخذ كود الخطوة المعنية ثم يشير للخطوة التالية ثم تحليل الكود ليعرف ما هو ثم تنفيذه (نقل رقم للمراكم – نقل من المراكم للذاكرة-جمع رقم للمراكم..الخ) و يكرر.
لهذا يجب أن يحتوى على عداد للبرنامج Program Counter و وحدة تحليل التعليمات Instruction decoder و مراكم أو أكثر Accumulator حيث سيضع البيان ألذى تأمره به ألتعليمه و مجموعة من المسجلات لزوم الحاجة.
هنا نفرق بوضوح بين المسجل و المراكم. كلاهما تخزن فيه بيان و تقرأ منه و تستخدمه فى الحسابات و بعضها يمكنك أن تستخدم محتواه كعنوان لكن نتيجة العمليات الحسابية تذهب للمراكم فقط ، ولو به أكثر من مراكم قد يمكن الاختيار بينهما.
هكذا يمكنك التعامل مع معظم الأوامر لكننا ذكرنا أن هناك كثير من الأجهزة المحيطة مثلا التواصل التسلسلى، حسنا مشكلة هذا التسلسلى انك لا تخبر الطرف الآخر عن ترددك ولا أوقات وضعك للبيانات لذا يجب أن تعتمد الدقة العالية فى إرسالك و توقيت استقبالك لذا يتطلب الأمر أن يكون المذبذب يعمل بكريستال لتوفير الدقة كما انك لن تتمكن من تغيير الكريستال لو أردت تغيير معدل الإرسال،ولا أن تستخدم 2 كريستال واحدة بطيئة للتسلسلى و أخرى سريعة لباقي البرنامج ، لذا يجب وضع مؤقتات داخلية "تايمر" Timer و من ثم أغلب الوحدات تحتوى واحد 8 بت و آخر أو اثنان 16 بت. تضع فى أى منهما القيمة المناسبة (تحميل العداد) ليعطيك معدل الإرسال المطلوب أو أيضا أى توقيت تريد أو وظيفة أخرى كما سيلى الشرح إن شاء الله.
إذن تتولى وحدة الاتصال التسلسلى عند تمام العد أن تعيد تحميل العداد حتى نهاية إرسال البايت. كيف تخبر الميكرو بأنها أتمت المهمة أو أنها تلقت من الخارج بايت كاملة تحتاج التعامل معها قبل أن تصل بايت جديدة؟
إذن تنشأ الحاجة لاستبقاء نظام المقاطعة من الميكروبروسيسور السابق وهو أن يكون بداخل وحدة المعالجة مسجل به 8 بت كأى مسجل ، واحدة لإتاحة المقاطعة ككل أو إيقافها ككل و بعض من ألباقى يخصص بت لكل حدث.
عندما تصبح واحدة منهم =1 فسيتحسس الميكرو ذلك فى نهاية الدورة ثم يحفظ العنوان الحالى (أى خطوة هو على وشك تنفيذها) فى "ذاكرة ما" ثم يذهب لعنوان آخر تحدده أى بت سببت هذه المقاطعة و فى نهاية كود المقاطعة يجب وضع تعليمه خاصه اسمها عودة من المقاطعة لكى يفهم الميكرو أن عليه استعادة العنوان ألذى سيق أن خزنه فى تلك "الذاكرة ما" ليعود للبرنامج الأصلى.
هذا الموضوع سنتناوله تفصيلا لاحقا لكن ما يهم الآن انه أثناء خدمة المقاطعة قد يحتاج الأمر لمقاطعة ثانية و سيضع الميكرو العنوان الجديد فوق السابق (ترص فوق بعضها) وهكذا ، لذا سميت هذه "الذاكرة ما" بالمرصوصة Stack ولها عداد مستقل أيضا لمتابعة أين نحن الآن يسمى مؤشر الرصة Stack Pointer وهو يزداد بواحد أولا ثم يحفظ المطلوب حفظه و بالعكس يقرأ المحتوى أولا ثم ينقص بواحد.
التعامل مع العالم الخارجى:
مما سبق أصبح الميكروكونتروللر مهيأ للتعامل أساسا مع العالم الخارجى لذا صنعت أغلب أطرافه مداخل ومخارج فى مجموعات تسمى بوابه PORT و نظرا لأن معظم البيانات تعالج بالبايت وهى 8 بت قسمت هذه الأطراف لمجموعات أقرب ما تكون لهذا العدد و من ثم كل تعاملك مع بايت و تتحكم أيضا فى مخرج عرضه بايت و أيضا تعطى بيانات لأى جهاز خارجى أو تأخذ منه بعرض بايت أيضا.
لذا احتوى الميكرو على هذه البوابات PORTs و فيما عدا عائلة C51 فلكل منها داخل الميكرو مسجل مناظر لتحول أى طرف "بت" منها أو كلها معا من دخول لخروج. طبعا هناك فرق كبير بين أن يكون الطرف دخول أو يكون خروج.
الطرف الخروج سيكون إما صفر أو 1 حسب الأمر ألجارى تنفيذه وهو قادر على إعطاء تيار محدود عندما يكون =1 أو يقبل "يبتلع" تيار عندما يكون = صفر، أما الطرف المهيأ كدخول سيكون ذو إعاقة عالية حتى لا يسبب سحب تيار من أى مصدر يتصل به و يتبع المصدر من حيث الفولت.
حسنا هذا المنفذ PORT سواء كان دخول أم خروج، فلابد من مسجل ما فى مكان ما يحتوى البيانات الخاصة به ، أين يكون؟ و الأسوأ أنه سيحتاج لديكودر لتحليل عنوانه عندما تريد التعامل معه.
ابتكر أحدهم فكرة بسيطة و ظريفة و سهلة التعامل من حيث العتاد و البرمجة. قال لماذا لا نضعهم جميعا فى ذاكرة كالأصلية و نطلبها عند اللزوم. نظام الذاكرة ممتاز بالنسبة للدوائر المتكاملة لأنه يتناول قطعة مربعة صغيرة جدا و يقسمها لخانات متناهية الصغر و يطالها بالصف و العمود إذن لا نكرر العتاد لكل مسجل هى مجموعة من 128 خانة ذاكرة أو غيره طبقا للتصميم و كل خانة منها 8 بت كالذاكرة الأصلية ولكن إحداها للمنفذ " أ" و الآخر للمنفذ " ب" وهكذا و يمكن أيضا وضع كل المؤقتات "تايمر" Timers فيها ، و التايمر 16 بت يشغل خانتين متجاورتين .
أيضا أحدها يمكن أن يكون للمراكم الأساسى و آخر لكل مسجل أو مراكم و أيضا مؤشر الرصة SP السابق الخ.
هذه الذاكرة أسمتها كل من إنتيل و ميكروتشيب SPECIAL FUNCTION REGISTERS
الآن يمكننا المقارنة بين أشهر رقمين و هما PIC16F877A و عائلة AT89c5x هذه الصورة تضعهما بجوار بعض لتوضيح الفروق، وقد وضعت لون مختلف لكل بوابة PORT

يمكننا أن نلخص الفروق فى الجدول التالى


سنناقش هذا الجدول بالتفصيل المرة القادمة إن شاء الله
الصور المرفقة
نوع الملف: jpg Comparison.jpg‏ (54.2 كيلوبايت, المشاهدات 62)
نوع الملف: jpg C51vrs16F.jpg‏ (51.2 كيلوبايت, المشاهدات 59)
رد مع اقتباس
  #7  
قديم 06-08-2018, 12:45 PM
ماجد عباس محمد ماجد عباس محمد غير متواجد حالياً
استاذ
ومشرف الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة - مصر
المشاركات: 1,395
معدل تقييم المستوى: 26
ماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant future
افتراضي الفروق بالتفصيل

ألفروق بالتفصيل:
البند الأول: أن تكون كل المنافذ Ports ثابتة العرض 8 بت يجعلها قياسية و يسهل تعاملها مع المحيطات لكن كون لديك عدد مختلف يجعلك حائرا فى باقى المنافذ خاصة بعضها 4 بت فقط

فمثلا عندما تود التحكم فى 8 مخارج معا مثل شاشة سباعية 7Segment أو بعض الحساسات التى تعطى 8 بت معا أو التحكم فى 8 مخارج معا ستجد من الأسهل استخدام منفذ ثمانى للتوصيل لمكبرات أو عواكس مثل ULNxxxx كما أن الأمر لمنفذ كامل يعطيك التحكم فى 8 مخارج بأمر واحد على العكس من عدد من المنافذ كل منها يتطلب أمرا مستقلا.
هذا ينعكس على السرعة وحجم البرنامج معا.

البند الثانى : كل منفذ Port تجده مجمع و مرتب فى أطراف متجاورة فى أتميل مما يجعل توصيله لأى جهاز يكون سهلا – طرف بطرف و البوردة الناتجة منسقة ولا تحتوى كبارى jumpers ولا تعارضات أما فى بيك فالمنفذ C ممزق و بينه أطراف منفذD .
مثلا عند استخدامك منفذ B كاملا فإن استخدام منفذ C مع منفذ D سيجعل هذه الخطوط متقاطعة و البوردة تحتوى عديد من الكبارى، حتى لو أردت استخدام شاشة LCD و فضلت للسهولة استخدام 4 بت لن تجد 6 أطراف متجاورة منهم.

فى الجيل التالى مثلا PIC18 و أتميل ATMega سنجد أن ميكروتشيب استخدمت نفس الإسلوب فى الجيل المطور وهى ميزة تحتسب لهم أنك إن شئت التطوير فقد لا تعوقك الأطراف

بينما اتميل فقد صنعت رقم من عائلة AVR رقم مطابق فى الأطراف لعائلة 51 يمكنك من الترقية


و صنعت الجيل المطور بذات التنسيق فى الأطراف مع تعديلات طفيفة فى ترتيب أطراف القدرة و البدء RESET و الكريستال

ولم نجد سوى المنفذ D الطرف 7 فقط قد رحل إلى الجانب الآخر أى كوبرى واحد فقط.

البند الثالث: فى كل ميكرو يوجد مسجل للحالة Status register وهو بالغ الأهمية لأنه يتابع حالة المراكم خطوة بخطوة و يحفظ نتائج الخطوات للخطوات اللاحقة فمثلا لو كان المراكم خاليا نجد فى مسجل الحالة خانة فيها 1 و عدا ذلك تكون بصفر ولذا يسمى Zero Flag أى علم أو إشارة وجود صفر فى المراكم وهى هامة جدا فمثلا لا يجوز القسمة على صفر ولذا فباختبار هذه الخانة تتصرف طبقا للصواب.
و آخر للنتيجة السالبة و ثالث لمعالجة الأرقام BCD ورابع لفائض الجمع و اقتراض الطرح Carry/Borrow الخ و هو بإجمالى سته أعلام Flags و بقى 2 دون توظيف، شركة أتميل أعطتها أسماء F1,F0 و يمكن للمستخدم أن يستغلهم كما يشاء عند توافر شرط ما يجعل أحدهما = 1 للتذكر لاحقا.
هذا يوفر كثيرا فى الكود وكذا أسرع فى التنفيذ لأن هناك أمر JB أى القفز لو هذه البت =1 و عكسه JNB لو كانت = صفر دون التعرض للمراكم و ما به من حساب أما اختبار خانة فى الذاكرة فتحتاج لتحميلها أولا فى المراكم قبل الاختبار ولو كان ما فى المراكم مطلوبا عليك حفظه فى مكان ما مثل الرصة أو غيرها من الذاكرة.
أما فى بيك فعدد هذه الخانات قليلا مما يجعل القدرة الحسابية له أقل .

البند الرابع: كثرة الأوامر تعنى أنه يمكنك اختصار خطوتين أو أكثر فى خطوة
أفضل مثال لذلك وجود الاختبار السابق وفر خطوات التعامل مع المراكم و حفظه، و أيضا هناك أوامر أخرى منها وجود مسجل 16 بت يسمى مؤشر البيانات أو Data Pointer و اختصارا DP وهو يمكنك من أخذ أى بيان من ذاكرة البرنامج للمراكم وهذا يسهل عليك وضع رسائل المستخدم كجزء من ذاكرة البرنامج (وهى كبيرة) و بهذا المسجل تأخذها حرف بحرف للعرض على الشاشة بأمر واحد و غيره من التطبيقات.

البند الخامس: تدعم حساب BCD
مثال لو تريد عداد فوجود حساب BCD يمكنك من استخدام BCD to 7 segment و توفر كثير من المعالجات بالكود للتحويل من ثنائى لعشرى، أيضا متكاملات الوقت كلها تعمل BCD و أيضا بعض الحساسات و بعض الموازين.

البند السادس :
تدعم الضرب و القسمة فأمر الضرب أو القسمة وفر الانتقال لبرنامج يخصص لهذا الغرض وما يحتاجه ذلك من خانات الرصة رغم أنه يتعامل مع الأرقام الصحيحة فقط.
باقى البنود نستكملها المرة القادمة بإذن الله
الصور المرفقة
نوع الملف: jpg C51vrs16F.jpg‏ (51.2 كيلوبايت, المشاهدات 65)
نوع الملف: jpg PIC18Fam.jpg‏ (40.0 كيلوبايت, المشاهدات 65)
نوع الملف: jpg C51toAVR.jpg‏ (35.1 كيلوبايت, المشاهدات 66)
نوع الملف: jpg ATMegaALL.jpg‏ (65.5 كيلوبايت, المشاهدات 63)
رد مع اقتباس
  #8  
قديم 06-09-2018, 10:39 AM
ماجد عباس محمد ماجد عباس محمد غير متواجد حالياً
استاذ
ومشرف الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة - مصر
المشاركات: 1,395
معدل تقييم المستوى: 26
ماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant future
افتراضي رد: الميكرو كونتروللر انواعه و برمجته و استخداماته

البند السابع : كما شرحنا فالرصه تتيح أكثر من مقاطعة لكن فى الحقيقة قد تكون فى برنامج لحساب شيء ما ثم تضطر للانتقال لبرنامج خاص لجمع الأرقام العشرية ، هنا ستحتاج أن تحفظ موقعك (محتوى مؤشر البرنامج) فى الرصة ثم تنتقل لهذه الوظيفة و لعودتك تستعيد العنوان السابق ، إذن كن حريصا ألا تزيد عن 7 مستويات متداخلة فى البك 16 أو 35 فى ألبيك 18 لكن أتميل يتيح لك استخدام الفائض من 256 خانه ذاكرة.
فضلا عن احتياجنا للرصه ليس فقط فى حفظ العنوان ولكن أيضا فى حفظ المراكم الخ فلو انت فى خضم عملية حسابية مثلا ووصلت بايت من التسلسلى، لن تستطيع أخذها فى المراكم للتعامل معها قبل أن تحفظ محتواه أولا و إن لم يكن لديك مكان فى الرصة ستضطر لاستخدام متغير مثلا فى الذاكرة، و ربما أيضا مسجل الحالة لتسترجع ما إن حدث من الجمع فائض Carry أو كان الرقم سالبا أو غيره.
البند الثامن: فى عائلة أتميل C51 وسيلة لإضافة 64 ك إضافية خارج الميكرو كبرنامج أو بيانات إن شئت و يمكن باستخدام أطراف إضافية أن تعمل بنظام Memory Banking أو مجموعة الذاكرة حيث تتيح فى كل مرة مجموعة مختلفة من 64 ك ، وهذه لم أرها فى ميكرو تشيب كما أن العائلة الجديدة AVR لم تدعمها.

البند التاسع : كم بت 8 أم 18 هو فرق ليس هاما سوى حين تتعامل المبرمجة مع الميكروكونتروللر.

البند العاشر: البرمجة بالأسيمبلى سهلة لتعدد الأوامر فأثناء البرمجة تتمنى أن تجد ما يفعل كذا فتجد أمر يناسبه أما لو الأوامر قليلة فلن تجد ما يفيدك فمثلا استخدام مسجل من 16 بت مخصص لطلب البيانات يسمى Data pointer مما يسهل لك التعامل مع الجداول و أيضا الأمر قارن مع القفز فى الاختلاف CJNE اختصار Compare and Jump if Not Equal وهو يتيح لك ثلاث حالات ، التساوى أو أحدهما أكبر أو الآخر أكبر.

البند الحادى عشر: لكل مقاطعة مكان مختلف تحفظ به عنوان مستقل يحدده المبرمج حيث يريد لمعالجة المقاطعة لذا لا تحتاج للتعرف على سبب المقاطعة عكس ألبيك فهناك الخانة رقم 4 تأخذ منها عنوان كود المقاطعة و هناك تفحص العلامات Flags لتحدد أيها سبب المقاطعة وهذا يستهلك وقتا و كود فى الذاكرة لا حاجة إليه.

قد يقول البعض أن ألبيك به محول تماثلى رقمى لكن بعض الشركات الصينية أنتجت من هذه العائلة أرقام تحتوى محول تماثلى رقمى.

أيضا العائلة AT89xx825x بها 2 ك ذاكرة EEPROM وهى لا تمحى بانقطاع التيار.

المرة القادمة بإذن الله نتحدث عن المنافذ لكل منهما ثم بعد ذلك نتحدث عن التركيب الداخلى وأخيرا نبدأ فى البرمجة
رد مع اقتباس
  #9  
قديم 06-10-2018, 10:07 AM
ماجد عباس محمد ماجد عباس محمد غير متواجد حالياً
استاذ
ومشرف الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة - مصر
المشاركات: 1,395
معدل تقييم المستوى: 26
ماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant future
افتراضي المنافذ Ports

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

هناك نقطة هامة يجب تذكرها فى كافة الأنواع وهى كم مللى أمبير يتحملها المنفذ، حسنا طبقا للداتاشيت ستجد بعض الطرز 25 مللى و البعض الآخر 40 مللى لكن الميكرو 40 طرف يحتوى على 32 طرف دخول / خروج أى 25*32 = 800 مللى على الأقل، لكن من الداتاشيت أيضا ستجد أن طرف التغذية VDD يقبل 400 مللى كحد أقصى فقط .
لو بحثت أيضا ستجد بيان آخر يقول أقصى تيار لمجموع المنافذ هو 300 مللى، إذن هذا هو ما نلتزم به أى لا نحمل مجموع المنافذ أكثر من هذا القدر رغم أنك تستطيع تحميل أى منها القيمة القصوى سواء كانت 25 أم 40 مللى و ذلك حتى لا يختل أداء الميكرو أو تعرضه للتلف.

أيضا يوجد مسجل لكل منفذ يحتوى البيانات التى تضعها على المنفذ PORT لكن لا تخرج مباشرة و إنما عبر عازل Buffer وذلك لزوم التحكم فى خواص الطرف و شرح ذلك لاحقا إن شاء الله. لذا يجب الحيطة عندما تقرأ المنفذ حتى لا تعيد قراءة ما وضعته عليه عوضا عن قراءة حالة الطرف الخارجية.

تنقسم المنافذ لنوعين C51 من إنتاج أتميل و باقى الأنواع AVR من إنتاج أتميل و كافة منافذ ميكروتشيب تقريبا.
الأول سيلى شرحة فى منافذ أتميل لكونه مخلف قليلا أما ألباقى من إنتاج الشركتين تشترك فى الخواص التالية
1- يحتوى كل منفذ على مسجل للبيانات و مسجل آخر تحدد كل خانه فيه كون الطرف المقابل من المنفذ إدخال أو إخراج.
2- يحتوى كل منفذ على مسجل ثالث يحتوى حالة الطرف الفعلية الآن و بصرف النظر عن المسجل الأول ألذى تكتب أنت فيه ما تريد فقد تكتب على الطرف 1 ولكن عليه مفتاح يفرض صفر، هنا سيقرأ مسجل البيانات 1 و مسجل الطرف صفر.

منافذ أتميل:
فى عائلة C51 نجد أن المنافذ تسمى بالأرقام المنفذ صفر ثم 1 و 2 و 3. أما فى عائلة AVR فتسمى بالأحرف منفذ A,B,C,D
فى عائلة C51 المنفذ صفر هو الأقوى حيث يستطيع أن "يبتلع" تيار معادل 8 حمل TTL وهذا الحمل يبلغ 1.6 مللى أمبير وهو الحمل القياسى لأحمال الدوائر المنطقية ولمعرفة المزيد عنه راجع سلسلة الدوائر المنطقية ، أى ان كل طرف يتحمل 12.8 مللى أمبير.
هذا المنفذ ذو مخرج يسمى المصب المفتوح Open drain (سلسلة الدوائر المنطقية) لذ عندما يكون = 1 ، لا يخرج منه تيار و لا يظهر عليه فولت و يحتاج لمقاومة أو حمل ما متصل بالطرف الموجب +5 فولت ليظهر هذا الواحد (+5فولت) .
أما عندما يكون = صفر يقبل تيار حتى القيمة المذكورة. لذا هو مناسب لتشغيل ليد بيان LED أو شاشات 7 شرائح 7Segment من النوع المهبط المشترك Common Anode أو أوبتو كبلر الخ. أيضا أغلب المفاتيح Switch تحتاج لمقاومة Pull Up لذا يمكن استخدام هذا المنفذ.
المنافذ الأخرى 1،2،3 متماثلة حيث تصدر و تقبل تيار بنصف القيمة السابقة أى 4 حمل أو 6.4 مللى أمبير عندما تضع على أى طرف منها صفر تيار كما سبق ولو وضعت عليه 1 يمكنك أن تضع مفتاح أو توصله بخرج أى دائرة إلكترونية أخرى تعطيه بيانات.
الحالة الفرضية هى ما يكون عليه عند البدء أو إعادة التشغيل وهى كل المخارج فى وضع الخرج أى كلها 11111111

فى عائلة AVR فقد اختلف الأمر و أصبحت المنافذ الأربع متماثلة و من الممكن أن تتحكم فى أى منفذ تحكما أكثر .

فى المرة القادمة إن شاء الله نتحدث عن منافذ AVR و منافذ ألبيك
رد مع اقتباس
  #10  
قديم 06-11-2018, 09:56 AM
ماجد عباس محمد ماجد عباس محمد غير متواجد حالياً
استاذ
ومشرف الكترونيات
 
تاريخ التسجيل: Jun 2011
الدولة: القاهرة - مصر
المشاركات: 1,395
معدل تقييم المستوى: 26
ماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant futureماجد عباس محمد has a brilliant future
افتراضي منافذ عائلة avr من أتميل

منافذ عائلة AVR من أتميل :
كما سبق أن ذكرنا لكل منفذ مسجل بيانات و آخر يسمى DDR اختصار Data Direction Register أى مسجل اتجاه البيانات (دخول أم خروج) مضاف إليه اسم المنفذ مثلا DDRA للمنفذ A و هكذا حتى DDRD للمنفذ D .
الوضع الافتراضى للبدء هو دخول أى محتواه = صفر ووضع 1 فى أى خانه تجعل الطرف خروج فمثلا لو وضعنا فى المسجل DDRA=10101010 سنجعل المنفذ A طرف دخول و المجاور خروج و هكذا، كما أنك يمكن فى أى لحظة فى البرنامج أن تغير خصائص أى طرف فلو فى أى مكان فى البرنامج استخدمت الأمر DDRA=10101011 ستغير الطرف صفر من المنفذ A (أقصى اليمين) من إدخال لإخراج.
كما ذكرنا سابقا أنه لدينا مسجل آخر لقراءة حالة الأطراف وهو باسم PINA و حتى PIND واحد لكل منفذ. فمثلا لو قرأت القيمة PORTA ستعطيك آخر قيمة سجلتها أنت فى هذا المنفذ ولو عليه أزرار لن تعرف حالتها، لكن لو قرأت القيمة PINA ستعلم أى الأزرار يضع 1 و أيها يضع صفر.
المسجلين المذكورين يمكن التعامل معهما كمنفذ ذو 8 طرف أو تحدد الطرف المختار من الثمانية.
منافذ ألبيك :
الأمر مختلف قليلا مع ألبيك فمسجل الاتجاه TRIS اختصار Tri-State و يسمى TRISA وحتى TRISF حسب اسم المنفذ و عند وضع 1 فى أى خانه يجعلها دخول و صفر يجعلها خروج وهى أسهل حفظاً من أتميل لأن 1 مشابهة شكلا للحرف I أو INPUT و الرقم 0 أشبه بالحرف O أو Output.
فى عائلة PIC16 سنجد لها مسجلين فقط أولهما السابق ذكره للاتجاه و الثانى اسمه PORT باسم المنفذ، هنا لا يوجد مسجل لحالة الطرف و قراءة المنفذ PORTA مثلا تعطى حالة الأطراف ولا وسيلة لقراءة ما سبق لك كتابته.
أما فى عائلة PIC18 فمازال قراءة المنفذ PORTA مثلا تعطى حالة الأطراف وأضيف مسجل أخر باسم LAT وهى اختصار Latch ويضاف اسم المنفذ أصبح قراءتها هى التى تعطى ما سبق لك كتابته على المنفذ فمثلا قراءة LATA تعطى ما كتبته انت بينما PORTA تعطى حال الطرف حاليا فقد يكون هناك مفتاح ما فرض حالة عكس ما كتبت.
فى عائلة PIC16 الحالة الافتراضية لمنفذ A هو تماثلى لذا يجب تهيئته لو يستخدم كأطراف رقمية فيما عدا ذلك ففى العائلة 16 و العائلة 18 كل المنافذ ستكون دخول ما عدا بعض الأطراف لذا يجب الرجوع للداتاشيت لمعرفة أى الأطراف مرتبطة بأى الوظائف حتى تعيد تهيئتها كمداخل / مخارج أو تستخدمها كما هى فقط اعرف ماذا تفعل.

الآن لدينا 32 طرف للتحكم فى العالم الخارجى و بهذه الأطراف نستطيع التحكم فى كثير من الأدوات المنزلية كخلاط مثلا أو غسالة أو كثير من الآلات الصناعية أيضا.
لنرى كيف ذلك نبدأ فى كتابة بعض البرامج لتشغيله.
لتكتب بالأسيمبلى لعائلة أتميل فهناك برنامجان أسهل من غيرهم فى هذا المجال
برنامج MIDE
http://mide-51.software.informer.com/0.2/
وهو مجانى لكن ينقصه تتبع الأعطال Debug
الثانى
يمكنك إنزال BASCOM نسخة 8051 لإستخدامها مع c51 و نسخة AVR لإستخدامها مع AVR و كلاهما يصلح للأسيمبلى أو بيزك أو كلاهما معا
أو يمكنك استخدام ميكرو الكترونيكا كما يمكنك أن تستخدم بروتس أيضا.
سنبدأ المرة القادمة إن شاء الله بكتابة برنامج بسيط يقرأ 3 أزرار فى مداخل و يضئ 3 ليد تمثل العدد 1 أو 2 أو 3 حسب أيها تم الضغط عليه

التعديل الأخير تم بواسطة ماجد عباس محمد ; 06-18-2018 الساعة 09:49 AM
رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)

أدوات الموضوع
انواع عرض الموضوع

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

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة



الساعة الآن 12:32 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
الحقوق محفوظة لمنتديات الاليكترونيات العصرية

Security team

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77