الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مقدمة... دورة المتحكم الصغري atmega16

بدأه مصطفى 36a2 في 12 أكتوبر 2012 · 12 رد · 12,810 مشاهدة · في الميكروكنترولر (المتحكم) و الدوائر الرقمية و المنطقية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الحمد لله رب العالمين والصلاة والسلام على سيدنا محمد صلى الله عليه وسلم صاحب الخلق العظيم وعلى آله وأصحابه أجمعين ...

نبدأ على بركة الله تعالى في الحلقة الأول من دراسة المتحكم الصغريMicroController من نوع AVR ..

المتحكم الذي سندرسه اسمه ATmega16 ومعنى اسمه كما يلي :

AT وتعني أن الشركة المصنعة هي ATMEL

Mega وهو كنية المتحكم (يعني اسم عائلته happy.gif) وهناك عوائل أخرى مثل tiny ..

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

_____________________________________________________

أود منذ البداية أن أنوه إلى بعض النقاط أرجو التركيز عليها :

1. أهم مرجع على الإطلاق لأي عنصر إلكتروني أو أي دارة متكاملة .. هي التعليمات المرفقة من الشركة المصنعة ... وتُعرف باسم Data Sheet.. وتحتوي على جميع المواصفات الكهربائية والفيزيائية للعنصر .. وعلى شرح جميع وظائف الدارة المتكاملة ..

وأضع بين يديكم datasheet لمتحكمنا atmega16

وسنتعاون بإذن الله على فهمها بالتفصيل ... بحيث نقرأ الصفحات التي تجيب على أسئلتنا بوضوح ...

2. هدف هذه الدروس هو تلخيص الأفكار الهامة والابتعاد عن أي معلومة غير مفيدة للمبتدئ... وسأحاول بإذن الله تعالى ... وضع كل معلومة في مكانها المناسب ...

وبالتالي فهذه الدروس ليست أكثر معلومات من المراجع العربية المتوفرة أو الكتب الالكترونية ولكنها أكثر تركيزاً ... وأقل حجماً ...

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

3. لن ندخل في تفصيلات أو تعدادات لن تفيدنا في مجال دراستنا بشكل مباشر ...

فمثلاً .. لن تكون البداية عن التقدم التكنولوجي ولا عن تعداد أسماء الشركات وأنواع المتحكمات .. والفروق بينها ...

فهناك من اهتم بهذه الأمور ولذلك سأذكر مرجعاً يمكن الاستزادة منه عند كل تفصيل أجد أن عدم الدخول فيه أبسط ..

4. أخيراً ...أرجو من الله تعالى التوفيق والسداد والثبات ...والقبول ..فإني نذرت هذا العمل لوجه الله تعالى ..

ولا أطلب فيه غير رضاه ..والله ولي التوفيق..

أما بعد ..

ببساطة ...مم يتألف الحاسوب Computer ؟

من معالج .. وذاكرة (ولها عدة أنواع) ..وأجهزة دخل و خرج ..وما يصل بينها جميعاً بتنسيق ما...

ببساطة ...مم يتألف المتحكم الصغري MicroController ؟

من معالج .. وذاكرة (ولها عدة أنواع ) .. وأرجل تربطه بالعالم الخارجي ...وما يصل بينها جميعاً بتنسيق ما ...

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

هناك نوعان لمعظم الدارات المتكاملة ...ربما يمكننا وصفها كما يلي . نوع له أرجل شاقولية ..ونوع له أرجل أفقية ...

النوع الأول :

ATMEGA16.jpg

النوع الثاني :

atmega164p-20au.jpg

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

بحيث نغرز أرجله على الTestBoard كهذه الصورة مثلاً ...

dsPIC-test-board-for-DSP-1328812648.jpg

ببساطة ... مم يتألف المعالج ؟

وحدة تقوم بالعمليات الحسابية arithmetic كالجمع والطرح والمنطقية Logic كعملية and و or ... وفيه بضعة حجرات ذاكرة .. وممر للنقل والتنسيق بينهما وبين العالم الخارجي ...

ولكل متحكم برنامج خاص ..ومعظم الأجهزة الالكترونية التي نستعملها يوميا تحتوي على متحكم ..

كأمثلة : المايكروويف .. والتلفاز ..والغسالات الحديثة والموازين الالكترونية .والكثير الكثير ....قرأت مرة عنوانا يقول : How Many Microcontrollers Did You Use Today?

...لماذا نهتم المتحكم الصغري ؟؟

لأنه يوفر علينا صنع دارة كثيرة العناصر ومعقدة الصنع ...وغالية الثمن ولها وظيفة واحدة غير قابلة للتغيير ...عن طريق برمجة المتحكم ليقوم بهذه الوظيفة برمجياً بدل القيام بها .. هاردويريّا ...smile.gif

مثال سيوضح أهميته ثم سنبدأ ....

لعمل دارة تقوم بإضاءة عدد من المصابيح ..بشكل متسلسل ..الأول ثم الثاني ثم الثالث ....

سيلزمنا (بدون استخدام المتحكم ) أن نقوم بعمل دارة توقيت..ستحوي مكثفات ومقاومات ..وسنقوم بعمل دارة لاختيار المصباح لإضاءته ..

وسنقوم بربطهم معاً ..ضمن آلية ما ..الكثير من العناصر والكثير من الأسلاك ..والكثير من التعقيد ..لوظيفة واحدة لا يمكن تغييرها ... وهذه الوظيفة تبدو بسيطة بالنسبة للناظر ..!!

بالمقابل ..سنكتب ما لا يزيد عن خمسة أسطر بلغة C مثلاً ..ونصل المتحكم إلى الحسوب ونقوم بشحن البرنامج داخله ..وينتهي الأمر.. (ولكن يجب الانتباه إلى أن المتحكم لا يمكنه إضاءة المصابيح بنفسه ..لأسباب تتعلق بالتيار الأعظمي الذي يمكن أن يمر عبر المتحكم ..لذلك يتم وضع ترانزستورtransistor أو حاكمة relay .. لحل هذه المشكلة ...وهذه العملية تسمى interfacing أي تنسيق واحهة التخاطب بين المتحكم وبين ما نريد أن نتحكم به (وواجهة التخاطب عنا هي الجهود والتيارات))

لنبدأ ....

سنستخدم في دراستنا للمتحكم ..

· برنامجاً لمحاكات الدارات الإلكترونية ..وذلك لتوفير المال والجهد ...(وهذا جيد للمبتدئ فقط ...ولا يصبح خبيراً حتى يجرب بيده على أرض الواقع ..)

· بيئة نقوم فيها بكتابة البرنامج بلغة C ثم إنتاج الملف الذي نشحنه في المتحكم لبرمجته ...

أي أننا سنتعلم برمجة المتحكم بلغة C .. ويجب الإلمام بالأساسيات على الأقل في اللغة ... (من المتحولات حتى التوابع على الأقل )

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

إذا درسنا المتحكم بشكل عام فإنه يتألف من معالج و ذاكرة ..وطبعاً من برنامج يقوم بتنفيذه ... (ومن المهم برأيي أن نعتبر البرنامج جزء من المتحكم )

الذاكرة لها 3 أنواع لكل واحد وظيفة ... الأنواع الثلاثة هي :SRAM وFlashوEEPROM

Flash تحفظ الكود ..(ولا تمحى بانقطاع التيار )

SRAM تخزن فيها المتحولات العادية وفيها بعض الحجرات المحجوزة سنتكلم عنها في وقتها ... (وتعتبر Stack للبرنامج )

EEPROM وتمثل ال HEAP للبرنامج ويمكن الكتابة عليها والقراءة منها ... ولا تمحى بانقطاع التيار ..

للمتحكم أرجل تصله بالعالم الخرجي ...(أي بالعناصر الإلكترونية المجاورة )

كل رجل لها وظيفة خاصة ووظيفة عامة ...

الوظائف العامة تتمثل بالدخل والخرج ... والوظائف الخاصة سنتحدث عن كل واحدة منها في وقتها بإذن الله ..

ويتم اعتماد وظيفة الرجل من خلال البرنامج ...سواء دخل أو خرج .. (أم لاستخدام وظيفته الخاصة )

في المتحكم Atmega16 هناك أربع مجموعات من الأرجل ... كل مجموعة فيها 8 أرجل (ونسمي المجموعة بوابة PORT)

لنلقي نظرة على المتحكم ... ونرى البوابات .. والأرجل ..

post-256536-055090700 1350051152_thumb.j

laugh.gif)

المستطيلات الحمراء تحيط بكل PORT والمستطيلات الخضراء تشير إلى اسم كل بوابة ..لدينا A ,B,C, D (بركة

يمكنك ملاحظة أن عدد الأرجل الكلي هو 40 ... منها 32 للبوابات ...

والباقي نراه من الصورة :

post-256536-044639000 1350051538_thumb.j

المستطيل الزهري (لشيء اسمه المحول من تشابهي إلى رقمي ... يعني نستعمله عندما نريد استخدام ADC analog to digital converter وسنتحدث عنه في وقته ان شاء الله )

المستطيل الأزرق ... نضع عنده العنصر الالكتروني الذي يولد ترددات ... ( كريستالة ) .. في حالات خاصة ... (لأن بداخل المتحكم يوجد مولد ترددات يصل إلى 16Mhz ... سريع ما شاء الله laugh.gif )

لاحظ الأحمر vcc نصله إلى جهد التغذية 5 ... وgnd إلى الجهد 0v

والبنفسجي .. هي رجل إعادة التشغيل ... وسنتعلم استخدامها في الدرس الثاني بإذن الله تعالى ...

والآن بعد أن أنهينا هذه النظرة العامة ...على ما يهمنا في المتحكم ... انتهت المقدمة ...

وسندرس في الدرس القادم استعمال الدخل والخرج في المتحكم بإذن الله تعالى ...

وسأفرد درساً لتنصيب البرنامجين proteus و codevision بإذن الله تعالى ...

وسنتعلم استخدامهما في الدرس الأول إن شاء الله تعالى ...

والله ولي التوفيق ..

والسلام عليكم ورحمة الله وبركاته ...

بما أنه لدينا 4 بوابات وكل بوابة فيها 8 أرجل ...يمكننا برمجة الأرجل لتكون 32 رجل دخل أو 32 رجل خرج .. أو أن نخلط بينها دخل وخرج ...سنتعلم برمجتها في الدرس الأول بإذن الله ...

المرفقات
MicroController.jpgMicroController.jpg

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 12 أكتوبر 2012 في 17:32

1
#2

إن شاء الله من متابعيك ومساعديك في إنهاء الدورة ..

لقد قمت بعمل المقدمة بملف PDF بالتنسيقات ..

وكل درس سأقوم بتنسيقه .. إن شاء الله

تحياتي :happy:

مقدمة المتحكم الصغري.pdf

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

#3

السلام عليكم

أخي العزيز .. كنت أفكر ..

لو أنقل المقدمة للمدونتي أو أن أضيفك كمؤلف في مدونتي .. أرجوا الرد ...

تحياتي :happy:

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

#4

السلام عليكم أخ م/ مصطفى 36a2 نرجو منك المزيد ونشكر أيضاً أخ bahbahعلى هذا المجهود

ونحن فى إنتظار المزيد من الشرع الماتع الجميل

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

#5
اقتباس
إن شاء الله من متابعيك ومساعديك في إنهاء الدورة ..

لقد قمت بعمل المقدمة بملف PDF بالتنسيقات ..

وكل درس سأقوم بتنسيقه .. إن شاء الله

جزاك الله حيراً أخي العزيز ...

اقتباس
لو أنقل المقدمة للمدونتي أو أن أضيفك كمؤلف في مدونتي .. أرجوا الرد ...

انقلها وبدون ذكر اسمي ... والله ولي التوفيق

اقتباس
ونحن فى إنتظار المزيد من الشرع الماتع الجميل

أهلا بك أخي الكريم .,..

الدرس القادم خلال يومين بإذن الله ... وسيكون ممتعاً بإذن الله تعالى ,,,

نلتقي قريباً ..بإذنه تعالى ...

والسلام عليكم ورحمة الله وبركاته

1
#6

أخي العزيز هل يجب أن نستعمل لغة السي

ألا يمكننا إستخدام c++ أو أي لغة أخرى

vr7y9y10.jpg
#7
اقتباس
أخي العزيز هل يجب أن نستعمل لغة السي

ألا يمكننا إستخدام c++ أو أي لغة أخرى

مرحبا بك أخي الكريم ...

لا يمكننا استخدام ++C...

أعتقد أن الأمر يعتمد على وجود مترجمات تحول لغة C أو ++C إلى لغة الآلة الخاصة بالمتحكم ...

لكن هناك امور أخرى فلغة ++C تتميز بالصفوف والكائنات بشكل أساسي ... وبهذا تختلف عن C (هناك أمور أخرى غير مهمة )

ربما معظمنا درس لغة ++C .. ولم يعلم ماذا تختلف عن C .. ويمكننا تلخيص الاختلافات بعدة نقاط ...

فمثلاً : تعريف المتحولات المحلية كلها يجب أن يكون في بداية main وبداية التوابع بشكل عام ...ولا يجوز تعريف متحول في وسط التابع مثلاًُ ... (هذه أكثر نقطة لفتت نظري )

يمكنك الاستفادة من هذه النقاط العشر هنا...

بشكل عام من يعرف ++C يمكنه الانتقال إلى C فوراً ... إذا وضع في ذهنه بعض النقاط سنذكرها في وقتها ...

______________________________________

وحتى تكون الإجابة وافية قدر الإمكان ..

يمكنك برمجة المتحكم بلغة التحميع Assembly .. وهناك لغات مختصة ببرمجة المتحكم (طبعا يتم تحويلها إلى لغة التجميع)

مثل لغة bascom ... هذا ما لدي من معلومات عن هذا السؤال ... (لا تقلق ستعجبك C كثيراً عندما تبدأ بالبرمجة بها ..smile.gif)

تحياتي ..

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 27 أكتوبر 2012 في 16:50

1
#8

حسناً سأحاول أن أتعلم السي بعد تعلم السي بلس بلس

المشكلة أنني لست إلا طالب سنه تحضيرية وهي سنه ندرس فيها جميع المواد قبل التخصص

أي أنني سأتخصص بإذن الله السنة القادمة

فأنا الآن لست إلا هاوي وآخر ماتعلمته هو المؤشرات والآن بدأت في التوابع في كتاب "إكسير ++c" :)

vr7y9y10.jpg
#9
اقتباس
أي أنني سأتخصص بإذن الله السنة القادمة

أرجو لك التوفيق عزيزي happy.gif

اقتباس
والآن بدأت في التوابع في كتاب "إكسير ++c

عندما تنتهي من دراسة التوابع ...لن تحتاج إلى أكثر من ذلك .. في مجال المايكرو ...

ولا تحاول دراسة C ... فطالما انك لم تتجاوز مرحلة التوابع فكل ما درسته حتى الآن متطابق مع C .. ماعدا فكرة تعريف المتحولات في أول main ..بدل تعريفها في الداخل ...

بالتوفيق ..

نلتقي يوم السبت للدرس الثاني بإذن الله تعالى...

#10

عدت من جديد بعد غياب ..

وتم نشر المقدمة وجاري نشر الدروس الباقية

تحياتي :happy:

1

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

#11

حمدا لله على سلامتك أخي العزيز ...

أوقفت الدروس بانتظارك حتى لا يثقل عليك تنسيق دروس كثيرة ...

وأنتظر منك الملاحظات على أي جديد كي نتعاون في الإنتاج ..

بالتوفيق smile.gif

_________________________

سيتم استكمال الدروس قريباً بعد عودة الأخ bahbah

نلتقي بإذن الله والسلام عليكم ورحمة الله وبركاته

#12

شكراً لك على إنتظاري ..

فقد كان الحاسب في حالة عصيبة :wacko: !!

ولكن في تنفيذ الدرس الأول الجزء العملي ظهرت هذه المشكلة لي في البرنامج ..

post-219398-029839500 1355073538_thumb.p

تقبل تحياتي :happy:

المرفقات
Capture.PNG
1

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

#13

سأبحث عن هذه المشكلة على Google وأعلمك بالجديد ...(وجدت هذا حتى الآن ولكنه غير مناسب laugh.gif )

حاول إعادة تشغيله ... أو أفضل من ذلك .. قم ببناء الدارة بنفسك فالملف للاستئناس فقط ...

بالتوفيق

____________________بعد فترة من الزمن ________________

وجدت هذه النتيجة في البحث ... وهي نفس مبدأ المشكل التي ظهرت لك ..

على كل حال قم بتركيب الدارة بنفسك ..حتى تعتاد ذلك ..

(نلتقي يوم الاربعاء بإذن الله في درس "المقاطعات interrupts" ) وإلى ذلك الحين اقرأ الدروس ووافني بأي جديد .. أرجو لك التوفيق

والسلام عليكم ورحمة الله smile.gif

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 10 ديسمبر 2012 في 00:08

1

مواضيع مشابهة