قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية noornader
noornader
:: عضو ذهبي ::
تاريخ التسجيل: Mar 2007
المشاركات: 608
نشاط [ noornader ]
قوة السمعة:
قديم 31-05-2011, 04:18 PM المشاركة 33   
افتراضي



شكرا جزيلا اخى العزيز/ فتح الله
على هذا المجهود الرائع
جزاك الله كل خير

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 31-05-2011, 04:33 PM المشاركة 34   
افتراضي


شكرا جزيلا اخى العزيز/ فتح الله

على هذا المجهود الرائع
جزاك الله كل خير

أخى الكريم

شكرا جزيلا لك

بارك الله فيك


مع تمنياتى بدوام التوفيق

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 31-05-2011, 04:35 PM المشاركة 35   
افتراضي


المقاطعة بالمؤقتات :
المؤقت TIMER1





  • تستخدم المقاطعة بهذا المؤقت لإمداد الميكروكونترولر بمعلومات التوقيت الصحيح .
  • يتم ضبط ساعته clocked بواسطة ساعة النظام System Clock أو عن طريق ساعة خارجية من على الطرف RC0 .
  • ساعة النظام تعمل أبطأ من ساعة المذبذب الخارجى بأربع مرات .
  • سواء كانت الساعة خارجية أو ساعة النظام فيمكن قسمتها على 2, 4 or 8 بإعداد معامل القسمة Prescaler الخاص بالمؤقت TMR1 عن طريق برمجيات Flowcode .
  • هذه الساعة الجديدة (بعد القسمة) تعمل على تزايد سجل المؤقت TMR1 .
  • المؤقت TMR1 هو سجل بسعة 8-bit ومن ثم سوف يحدث له طفحان عندما يصل إلى 256
(0-255=256) .
  • فى لحظة حدوث الطفحان تماما يولد المؤقت TMR1 مقاطعة ويتم تصفير المؤقت TMR1 من جديد .
  • المقاطعة بالمؤقت TMR1 سوف تؤدى إلى إيقاف البرنامج الرئيسى فورا والبدء فى تنفيذ الماكرو TMR1 Macro .
  • بعد إنتهاء الماكرو TMR1 Macro يتقدم تنفيذ البرنامج من المكان الذى تركه سابقا .
مثال :


External clock oscillator = XTAL : 19.660.800Hz
System Clock = /4 : 4.915.200 Hz
Set prescaler to 8 = /8 : 614.400 Hz
Overflow when TMR1 = 256 = /256 : 2400 Hz


الخلاصة :
فى هذه الحالة سوف يقوم المؤقت TMR1 بمقاطعة البرنامج الرئيسى وتنفيذ الماكرو TMR1 Macro 2400 مرة كل ثانية .

المؤقت TIMER0 :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 31-05-2011, 04:38 PM المشاركة 36   
افتراضي


المؤقت TIMER0 :
  • تستخدم المقاطعة بهذا المؤقت لإمداد الميكروكونترولر بمعلومات التوقيت الصحيح .
  • يتم ضبط ساعته clocked بواسطة ساعة النظام System Clockأو عن طريق ساعة خارجية من على الطرف RA4 .
  • ساعة النظام تعمل أبطأ من ساعة المذبذب الخارجى بأربع مرات .
  • سواء كانت الساعة خارجية أو ساعة النظام فيمكن قسمتها على :
1, 2, 4 or 8, 16, 32, 64, 128, or by 256 بإعداد معامل القسمة Prescaler الخاص بالمؤقت TMR0 عن طريق برمجيات Flowcode .
  • هذه الساعة الجديدة (بعد القسمة) تعمل على تزايد سجل المؤقت TMR0 .
  • المؤقت TMR1 هو سجل بسعة 8-bit ومن ثم سوف يحدث له طفحان عندما يصل إلى 256
(0-255=256) .
  • فى لحظة حدوث الطفحان تماما يولد المؤقت TMR0 مقاطعة ويتم تصفير المؤقت TMR0 من جديد .
  • المقاطعة بالمؤقت TMR0 سوف تؤدى إلى إيقاف البرنامج الرئيسى فورا والبدء فى تنفيذ الماكرو TMR0 Macro .
  • بعد إنتهاء الماكرو TMR0 Macroيتقدم تنفيذ البرنامج من المكان الذى تركه سابقا .
مثال :


External clock oscillator = XTAL : 19.660.800Hz
System Clock = /4 : 4.915.200 Hz
Set prescaler to 256 = /256 : 19200 Hz
Overflow when TMR0 = 256 = /256 : 75 Hz

الخلاصة :
فى هذه الحالة سوف يقوم المؤقت TMR0 بمقاطعة البرنامج الرئيسى وتنفيذ الماكرو TMR0 Macro75 مرة كل ثانية .

المقاطعة عن طريق الطرف RB0RB0 INTERRUPT


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 31-05-2011, 05:09 PM المشاركة 37   
افتراضي


المقاطعة الخارجية

المقاطعة عن طريق الطرف RB0RB0 INTERRUPT
  • التغير فى المستوى المنطقى على الطرف RB0 يمكن إعداده لتوليد مقاطعة .
  • يمكن إعدادة فى برمجيات Flowcode ليتفاعل مع حدوث الحافة الصاعدة أو الهابطة للتغير على الطرف RB0 .
  • عندما يضبط على التفاعل مع الحافة الصاعدة وتحدث حافة صاعدة على الطرف RB0 عندئذ :
# يؤدى ذلك إلى إيقاف البرنامج الرئيسى فورا .
# يتم تنفيذ الماكرو المرتبط بالمقاطعة بالطرف RB0 .
# بعد تنفيذ هذا الماكرو يعود البرنامج الرئيسى للتقدم من المكان الذى تركه سابقا .
وسوف يحدث ذلك فى كل مرة يتم فيها كشف حدوث إرتفاع فى حافة النبضة على الطرف RB0 .


المقاطعة الخارجية عن طريق المنفذ PORT B :
  • التغير فى المستوى المنطقى على أى من الأطراف RB4 or RB5 or RB6 or RB7 ( الأربع خانات ذات الأهمية القصوى MSB ) يمكن إعداده لتوليد مقاطعة واحدة فقط .
  • يمكن إعدادة فى برمجيات Flowcode ليتفاعل مع حدوث الحافة الصاعدة أو الهابطة للتغير .
  • عندما يضبط على التفاعل مع الحافة الصاعدة وتحدث حافة صاعدة على أى طرف منهم عندئذ :
# يؤدى ذلك إلى إيقاف البرنامج الرئيسى فورا .
# يتم تنفيذ الماكرو المرتبط بالمقاطعة بالمنفذ PORT B .
# بعد تنفيذ هذا الماكرو يعود البرنامج الرئيسى للتقدم من المكان الذى تركه سابقا .
وسوف يحدث ذلك فى كل مرة يتم فيها كشف حدوث إرتفاع فى حافة النبضة على أى طرف من الأطراف الأربعة .


المحول من تناظرى إلى رقمى ADC :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 01-06-2011, 01:46 AM المشاركة 38   
افتراضي


المحول من تناظرى إلى رقمى ADC :


  • يمتلك الميكروكونترولر PIC16F877A 8 إطراف والتى لها وظيفة التحويل ADC كوظيفى إضافية .
  • يمتلك الميكروكونترولر محول ADCواحد ذات سعة 10-bit .
  • وهذا يعنى أن هذه المداخل التناظرية الثمانية لا يمكن أن تقرأ فى نفس الوقت .
  • المفاتيح التماثلية الموجودة ضمن التركيب الداخلى للميكروكونترولر هى التى تقوم بحل هذه المشكلة.
  • فى برمجيات Flowcode يمكنك اختيار أى من الثمانى مداخل التناظرية تريد أن تأخذ منه العينة .
  • بعد أخذ العينة يتم ضبط (تحديد) المفتاح التناظرى على المدخل الصحيح حيث يتم تحويل هذا المدخل التناظرى إلى قيمة ثنائية ذات 10 خانات .
  • فى برمجيات Flowcode يمكنك اختيار أن تستخدم فقط الثمانى خانات ذات الأهمية القصوىMSB من قيمة الخانات العشرة باستخدام التعليمة 'ReadAsByte' "قراءة كبايت" أو تختار العشرة خانات بالكامل بايتخدام التعليمة 'ReadAsInt' . الخانات العشرة سوف تملأ الخانات العشرة ذات الأهمية الأقل LSB للمتغير المختار ذات 16-bit من نوع العدد الصحيح integer variable .
  • بعد ذلك يمكنك اختيار مدخل تناظرى آخر والذى تريد قراءته .
النواقل (الممرات) Busses :
  • الميكروكونترولر PIC ذات تركيب بنائى يسمى نوع "هارفارد" Harvard .
  • هذا يعنى وجود ممر ناقل منفصل للتعليمات وآخر للبيانات .
  • ناقل البيانات ذات سعة 8-bit ويوصل جميع الوحدات والمنافذ معا .
  • ناقل التعليمات ذات سعة 14-bit وينقل التعليمات ذات الطول 14-bitمن ذاكرة البرنامج إلى وحدة الجساب والمنطق ALU .
التوقيت CLOCKING :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 01-06-2011, 11:06 AM المشاركة 39   
افتراضي


التوقيت CLOCKING :
مقدمة :
يحتاج أى ميكروكونترولر لإشارة ساعة للعمل . تقوم إشارة الساعة داخليا بالتحكم فى سرعة عمل الميكروكونترولر وفى كل دورة ساعة يكون هناك تزامن بين عمل الأجهزة الداخلية المختلفة . توجد قرارات متعددة يجب أن تتخذ حول توقيت عمل شريحة الميكروكونترولر قبل تحميل البرنامج بالميكروكونترولر لذلك قد تحتاج لفهم الخيارات حتى تستطيع تحديد القرار .
دائرة الساعة CLOCK CIRCUIT

يمكن توقيت الميكروكونترولر PIC بعدة طرق . الطرق التى سوف نهتم بها هى :
  • الساعة ذات الكريستال Crystal clock .
  • الساعة ذات المقاومة والمكثف RC clock .
  • الساعة الداخلية Internal clock .
كل من هذه الطرق معتمد بواسطة أجهزة برمجة الميكروكونترولر PIC . الدائرة التالية تبين طريقة التحويل بين أنظمة الساعة لتوصيل دوائر مختلفة بين الطرفين OSC1 و OSC2 .







أطراف المذبذب بالميكروكونترولر هى الطرف OSC1 (Clock in) "دخل الساعة" والطرف OSC2 (Clock out) "خرج الساعة ". داخل الميكروكونترولر من الممكن توصيل الطرفين OSC1 و OSC2 لدوائر متعددة حسب الاختيار . كل دائرة داخلية سوف تنشأ (تولد) إشارة ساعة على طرفى المذبذب عند وضع الدائرة الخارجية المناسبة بين الطرفين OSC1 و OSC2. هذا يسمح بتحديد تردد الذبذبات بمكونات الدائرة الخارجية .
فى الدائرة السابقة المفتاح SW2 يحدد إما توصيل الدائرة RC أو دائرة الكريستال .عندما يكون المفتاح SW2 على وضع RC فإن قيم المكثف والمقاومة هى التى تحدد سرعة الذبذبات .
المفتاح SW1 يحدد سرعة ذبذبات دائرة RC حيث تبطأ من الذبذبات بإدخال مكثف أكبر فى الدائرة RC .
عندما يكون المفتاح SW2 فى وضع Crystal عندئذ يتحدد التردد بقيمة الكريستال .
لماذا لدينا هذه الأنظمة ؟
تردد الذبذبات غير مهم فى تطبيقات الميكروكونترولر البسيطة حيث أن معظمها يعمل على سرعات منخفضة . مع ذلك فى التطبيقات الأكثر تطورا يكون التردد هام جدا لأنه يحدد طريقة الاتصال بين الأجهزة وبعضها البعض . العديد من الأنظمة الإلكترونية تتكون من معالجات متعددة والتى تتصل ببعضها باستخدام بروتوكولات الاتصال التسلسلى serial communication protocols (على سبيل المثال البروتوكول RS232 ) .فى أنظمة الاتصال التسلسلى معدل تغير الأصفار 0's والآحاد 1's على خط يجب أن يكون متفق مع كل نظام حتى يمكن إجراء الاتصال . إذا عملت الأنظمة على سرعات مختلفة عندئذ يكون الاتصال مستحيل .سرعة الاتصال يشار إليها بعدد الخانات لكل ثانية 'bits per second' أو معدل 'Baud' النظام المتصل. الكريستال المستخدمة هنا بتردد 19.660800MHz . لماذا هذا الرقم الدقيق ؟ السبب أن هذا التردد يمكن تخفيضه بعدادات ثنائية متتابعة إلى معدل البود Baud القياسى والذى يسهل الاتصال بين الأنظمة . فى هذه الحالة عند قسمة تردد الساعة الرئيسى على 2 مرفوعة للأس عشرة يكون الناتج 19200 . معدل البود بالقيمة 19200 متعارف عليه دوليا كمعدل قياسى للاتصال التسلسلى .
رياضيا :
19660800 / 2^10 = 19200
نظام المكثف والمقاومة متوفر جزئيا كإرث تاريخى والجانب الآخر إقتصادى . بعض الميكروكونترولر تمتلك القدرة ضبط ساعتها داخليا بدون أى مكونات خارجية .
نظام المكثف والمقاومة قد يكون مفيدا عندما يسمح لنا بنبضات ساعة بتردد صغير جدا (هرتزات قليلةfew Hertz) .
ضبط (تحديد) الساعة CLOCK SETTING


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 01-06-2011, 11:33 AM المشاركة 40   
افتراضي


ضبط (تحديد) الساعة CLOCK SETTING
يجب التأكد من توافق دائرة الساعة المستخدمة فى الأجهزة hardware مع البرنامج software .
لعمل ذلك فى برمجيات Flowcode (على سبيل المثال) :
من القائمة CHIP اختار CONFIGURE فتظهر لك نافذة الإعدادات التالية :





لاحظ أن النافذة بها تذكير بالميكروكونترولر المستهدف وهو PIC16F877A (حيث يمكن تغييره) . هذه النافذة تسمح لك بالاختيار بين نظام المذبذب الخارجى باستخدام المقاومة والمكثف RC أو نظام مذبذب الكرستال XTAL .



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 07:30 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)