وصف الربط stm32 وتعليمات البرمجة مستشعر لمس سعوي بدون زخرفة خارجية في STM32 Discovery. بداية سهلة وسريعة مع CooCox CoIDE

في السنوات الأخيرة، غزت وحدات التحكم الدقيقة 32 بت (MCUs) المستندة إلى معالجات ARM عالم الإلكترونيات بسرعة. ويرجع هذا الاختراق إلى الأداء العالي والهندسة المعمارية المثالية والاستهلاك المنخفض للطاقة والتكلفة المنخفضة وأدوات البرمجة المتقدمة.

تاريخ موجز
اسم ARM هو اختصار لـ Advanced RISC Machines، حيث يرمز RISC (كمبيوتر مجموعة التعليمات المخفضة) إلى بنية معالج مجموعة التعليمات المخفضة. العدد الهائل من وحدات التحكم الدقيقة الشائعة، مثل عائلات PIC وAVR، لديها أيضًا بنية RISC، مما يسمح لها بزيادة الأداء من خلال تبسيط فك تشفير التعليمات وتسريع تنفيذها. إن ظهور وحدات التحكم الدقيقة ARM 32 بت المتقدمة والمنتجة يسمح لنا بالانتقال إلى حل المشكلات الأكثر تعقيدًا التي لم تعد وحدات MCU ذات 8 و16 بت قادرة على التعامل معها. تم تطوير بنية المعالج الدقيق ARM مع نواة 32 بت ومجموعة تعليمات RISC من قبل الشركة البريطانية ARM Ltd، والتي تعمل حصريًا على تطوير النوى والمترجمين وأدوات تصحيح الأخطاء. لا تنتج الشركة أعضاء الكنيست، ولكنها تبيع تراخيص إنتاجها. تعد MK ARM واحدة من أسرع القطاعات نموًا في سوق MK. تستخدم هذه الأجهزة تقنيات موفرة للطاقة، لذلك يتم استخدامها على نطاق واسع في الأنظمة المدمجة وتهيمن على سوق الأجهزة المحمولة التي يعد استهلاكها المنخفض للطاقة أمرًا مهمًا. بالإضافة إلى ذلك، تُستخدم وحدات التحكم الدقيقة ARM بشكل نشط في الاتصالات والأجهزة المحمولة والمدمجة التي تتطلب أداءً عاليًا. إحدى ميزات بنية ARM هي جوهر الحوسبة للمعالج، وهو غير مجهز بأي عناصر إضافية. يجب على كل مطور معالج أن يزود هذا النواة بشكل مستقل بالكتل اللازمة لمهامه المحددة. لقد نجح هذا النهج بشكل جيد مع الشركات المصنعة للرقائق الكبيرة، على الرغم من أنه كان يركز في البداية على حلول المعالجات الكلاسيكية. لقد مرت معالجات ARM بالفعل بعدة مراحل من التطوير وهي معروفة جيدًا بعائلات ARM7 وARM9 وARM11 وCortex. وينقسم الأخير إلى عائلات فرعية من معالجات CortexA الكلاسيكية، ومعالجات CortexR في الوقت الحقيقي، ونوى المعالجات الدقيقة CortexM. لقد كانت نوى CortexM هي التي أصبحت الأساس لتطوير فئة كبيرة من وحدات MCU ذات 32 بت. وهي تختلف عن المتغيرات الأخرى في بنية Cortex بشكل أساسي في استخدام مجموعة تعليمات Thumb2 ذات 16 بت. تجمع هذه المجموعة بين أداء وضغط تعليمات ARM وThumb "الكلاسيكية" وتم تطويرها خصيصًا للعمل مع لغات C وC++، مما يحسن جودة التعليمات البرمجية بشكل كبير. الميزة الكبيرة لوحدات التحكم الدقيقة المبنية على نواة CortexM هي توافقها مع البرامج، والذي يسمح نظريًا باستخدام كود برنامج لغة عالي المستوى في نماذج من شركات مصنعة مختلفة. بالإضافة إلى الإشارة إلى مجال تطبيق النواة، يشير مطورو MK إلى أداء نواة CortexM على مقياس من عشر نقاط. اليوم، الخيارات الأكثر شعبية هي CortexM3 وCortexM4. يتم إنتاج وحدات MCU ذات بنية ARM بواسطة شركات مثل Analog Devices، وAtmel، وXilinx، وAltera، وCirrus Logic، وIntel، وMarvell، وNXP، وSTMicroelectronics، وSamsung، وLG، وMediaTek، وMStar، وQualcomm، وSonyEricsson، وTexas Instruments، وnVidia، وFreescale، وMilander. وهاي سيليكون وغيرها.
بفضل البنية المحسنة، تكون تكلفة وحدات MCU المستندة إلى نواة CortexM في بعض الحالات أقل من تكلفة العديد من الأجهزة ذات 8 بت. يمكن حاليًا شراء النماذج "الأصغر سناً" مقابل 30 روبل. للجسم مما يخلق منافسة للأجيال السابقة من عضو الكنيست. وحدات التحكم الدقيقة STM32 دعونا نفكر في وحدة MCU الأكثر انتشارًا وبأسعار معقولة من عائلة STM32F100 من شركة STMicroelectronics، التي تعد واحدة من الشركات الرائدة في العالم في تصنيع وحدات MCU. أعلنت الشركة مؤخرًا عن بدء إنتاج MK 32 بت الذي يستفيد من الصناعة
نوى STM32 في التطبيقات منخفضة التكلفة. تم تصميم وحدات MCU من عائلة خط القيمة STM32F100 للأجهزة التي لا يكون فيها أداء وحدات MCU 16 بت كافيًا، وتكون الوظائف الغنية للأجهزة 32 بت "العادية" زائدة عن الحاجة. يعتمد خط STM32F100 من وحدات MCU على نواة ARM CortexM3 الحديثة مع الأجهزة الطرفية المحسنة للاستخدام في التطبيقات النموذجية حيث تم استخدام وحدات MCU 16 بت. يتفوق أداء STM32F100 MCU عند 24 ميجا هرتز على معظم وحدات MCU 16 بت. يتضمن هذا الخط أجهزة ذات معلمات مختلفة:
● من 16 إلى 128 كيلو بايت من ذاكرة فلاش البرنامج؛
● من 4 إلى 8 كيلو بايت من ذاكرة الوصول العشوائي؛
● ما يصل إلى 80 منفذ إدخال/إخراج GPIO؛
● ما يصل إلى تسعة مؤقتات 16 بت مع وظائف متقدمة؛
● اثنين من الموقتات الوكالة الدولية للطاقة.
● 16 قناة ADC عالية السرعة 12 بت؛
● جهازي DAC 12 بت مزودين بمولدات إشارة مدمجة؛
● ما يصل إلى ثلاث واجهات UART تدعم أوضاع IrDA وLIN وISO7816؛
● ما يصل إلى واجهتين SPI؛
● ما يصل إلى واجهتي I2C تدعم وضعي SMBus وPMBus؛
● وصول مباشر للذاكرة ذو 7 قنوات (DMA)؛
● واجهة CEC (التحكم في إلكترونيات المستهلك) المضمنة في معيار HDMI؛
● ساعة الوقت الحقيقي (RTC)؛
● وحدة تحكم المقاطعة المتداخلة NVIC.

يظهر الرسم التخطيطي الوظيفي لـ STM32F100 في الشكل 1.

أرز. 1. بنية خط MK STM32F100

هناك راحة إضافية تتمثل في توافق الأجهزة، والذي يسمح، إذا لزم الأمر، باستخدام أي MK من العائلة مع وظائف وذاكرة أكبر دون إعادة تشغيل لوحة الدوائر المطبوعة. يتم إنتاج خط وحدات التحكم STM32F100 في ثلاثة أنواع من الحزم LQFP48، LQFP64 وLQFP100، والتي تحتوي على 48، 64 و100 دبوس، على التوالي. يتم عرض تخصيص المسامير في الأشكال 2 و3 و4. ويمكن تركيب مثل هذه الحالات على لوحات الدوائر المطبوعة دون استخدام معدات خاصة، وهو ما يعد عاملاً مهمًا في الإنتاج على نطاق صغير.


أرز. 2. STM32 MCU في حزمة LQFP48 الشكل 2. 3. STM32 MCU في حزمة LQFP64


أرز. 4. STM32 MCU في حزمة LQFP100

STM32F100 هو جهاز محسّن وبأسعار معقولة يعتمد على CortexM3 الأساسية، مدعومًا ببيئة تطوير متقدمة لعائلة STM32 من وحدات التحكم الدقيقة، والتي تحتوي على
مكتبات مجانية لجميع الأجهزة الطرفية، بما في ذلك التحكم في المحركات ولوحات المفاتيح التي تعمل باللمس.

مخطط الاتصال STM32F100C4
دعونا نفكر في الاستخدام العملي لـ MK باستخدام مثال أبسط جهاز STM32F100C4، والذي، مع ذلك، يحتوي على جميع الكتل الرئيسية لخط STM32F100. يظهر مخطط الدائرة الكهربائية لـ STM32F100C4 في الشكل 5.


أرز. 5. مخطط اتصال لـ MK STM32F100C4

يضمن المكثف C1 إعادة ضبط MK عند تشغيل الطاقة، وتقوم المكثفات C2-C6 بتصفية جهد الإمداد. تحد المقاومات R1 و R2 من تيار الإشارة لمنافذ MK. يتم استخدام المذبذب الداخلي كمصدر للساعة، لذلك ليست هناك حاجة لاستخدام كريستال خارجي.


تتيح لك المدخلات BOOT0 وBOOT1 تحديد طريقة تحميل MK عند تشغيل الطاقة وفقًا للجدول. يتم توصيل دخل BOOT0 بالحافلة الصفرية المحتملة من خلال المقاوم R2، الذي يحمي طرف BOOT0 من دائرة كهربائية قصيرة عند استخدامه كمنفذ إخراج لـ PB2. باستخدام الموصل J1 وعبور واحد، يمكنك تغيير الإمكانات عند إدخال BOOT0، وبالتالي تحديد كيفية تحميل MK - من ذاكرة الفلاش أو من أداة تحميل التشغيل المدمجة. إذا كنت بحاجة إلى تحميل MK من ذاكرة الوصول العشوائي (RAM)، فيمكن توصيل موصل مماثل مع وصلة مرور بإدخال BOOT1.
تتم برمجة MK عبر المنفذ التسلسلي UART1 أو من خلال مبرمجين خاصين - مصححي أخطاء JTAG أو STLink. هذا الأخير هو جزء من جهاز تصحيح الأخطاء الشهير STM32VLDISCOVERY، الموضح في الشكل 6. على لوحة STM32VLDIS COVERY، يتم تعيين الموصل ذو 4 سنون للمبرمج - مصحح أخطاء STLink - على SWD. يقترح مؤلف المقال برمجة MK عبر المنفذ التسلسلي UART1، لأنه أبسط بكثير، ولا يتطلب معدات خاصة وليس أقل شأنا من JTAG أو ST Link. يمكن استخدام أي كمبيوتر شخصي (PC) يحتوي على منفذ COM تسلسلي أو منفذ USB مع محول USBRS232 كجهاز تحكم قادر على توليد الأوامر وعرض نتائج برنامج MK، بالإضافة إلى استخدامه كمبرمج.

لربط منفذ COM الخاص بجهاز الكمبيوتر مع MK، فإن أي محول لإشارات RS232 إلى مستويات إشارة منطقية من 0 إلى 3.3 فولت، على سبيل المثال، الدائرة الدقيقة ADM3232، سيكون مناسبًا. يجب توصيل خط نقل TXD للمنفذ التسلسلي للكمبيوتر، بعد محول المستوى، بمدخل PA10 لوحدة التحكم الدقيقة، وخط استقبال RXD، من خلال محول مماثل، بمخرج PA9.

إذا كنت بحاجة إلى استخدام ساعة MK غير متطايرة، فيجب عليك توصيل بطارية CR2032 بجهد 3 فولت ومرنان كوارتز بتردد 32768 هرتز. لهذا الغرض، تم تجهيز MK بدبابيس Vbat/GND وOSC32_IN/OSC32_OUT. يجب أولاً فصل طرف Vbat عن ناقل الطاقة 3.3 فولت.

يمكن استخدام المحطات المجانية المتبقية لـ MK حسب الحاجة. للقيام بذلك، يجب توصيلها بالموصلات الموجودة حول محيط لوحة الدوائر المطبوعة لـ MK، عن طريق القياس مع أجهزة Arduino الشهيرة ولوحة التصحيح STM32VLDISCOVERY.


أرز. 6. تصحيح أخطاء الجهاز STM32VLDISCOVERY


مخطط الدائرة الكهربائية STM32VLDISCOVERY.

وبالتالي، اعتمادًا على الغرض وطريقة استخدام MK، يمكنك توصيل العناصر الضرورية به لاستخدام الكتل والمنافذ الوظيفية الأخرى، على سبيل المثال، ADC، DAC، SPI، I2C، إلخ. في المستقبل، سيتم النظر في هذه الأجهزة بمزيد من التفصيل.

برمجة
اليوم، تقدم العديد من الشركات أدوات لإنشاء وتصحيح البرامج لوحدات التحكم الدقيقة STM32. وتشمل هذه الشركات Keil من ARM Ltd، وIAR Embedded Workbench for ARM، وAtol lic TrueStudio، وCooCox IDE، وGC، وEclipse IDE. يمكن للمطور اختيار البرنامج حسب تفضيلاته. سنصف أدناه مجموعة أدوات Keil uVision 4 من شركة Keil، والتي تدعم عددًا كبيرًا من أنواع وحدات التحكم الدقيقة، ولديها نظام متطور لأدوات تصحيح الأخطاء ويمكن استخدامها مجانًا مع قيود على حجم الكود الذي تم إنشاؤه وهو 32 كيلو بايت ( وهو في الواقع الحد الأقصى لوحدات التحكم الدقيقة قيد النظر).

بداية سهلة وسريعة مع CooCox CoIDE.

لذلك دعونا نبدأ. انتقل إلى موقع CooCox الرسمي وقم بتنزيل أحدث إصدار من CooCox CoIDE. للتنزيل، تحتاج إلى التسجيل، التسجيل بسيط ومجاني. ثم قم بتثبيت الملف الذي تم تنزيله وتشغيله.

كود كوكوكس- بيئة تطوير مبنية على Eclipse، والتي، بالإضافة إلى STM32، تدعم مجموعة من عائلات وحدات التحكم الدقيقة الأخرى: Freescale، Holtek، NXP، Nuvoton، TI، Atmel SAM، Energy Micro، وما إلى ذلك. مع كل إصدار جديد من CoIDE، يتم تحديث قائمة المتحكمات الدقيقة باستمرار. بعد تثبيت CoIDE بنجاح، قم بتشغيل:

ستظهر نافذة البدء بالخطوة 1، والتي تحتاج فيها إلى تحديد الشركة المصنعة لوحدة التحكم الدقيقة الخاصة بنا. اضغط على ST وانتقل إلى الخطوة 2 (اختيار وحدة التحكم الدقيقة)، والتي تحتاج فيها إلى تحديد طراز معين. لدينا STM32F100RBT6B، لذا انقر على النموذج المقابل:

على اليمين، تعرض نافذة المساعدة خصائص مختصرة لكل شريحة. بعد اختيار المتحكم الدقيق الذي نحتاجه، ننتقل إلى الخطوة الثالثة، الخطوة 3 – لاختيار المكتبات اللازمة للعمل:

لنقم بإنشاء مشروع بسيط لوميض مؤشر LED، كما هو معتاد لتعلم وحدات التحكم الدقيقة.

للقيام بذلك، نحتاج إلى مكتبة GPIO، عند تمكينها، سيطلب منك CoIDE إنشاء مشروع جديد. انقر فوق "نعم" في هذا الاقتراح، وحدد المجلد الذي سيتم تخزين مشروعنا فيه واسمه. في الوقت نفسه، سيتصل CoIDE بالمشروع 3 آخرين ضروريين لعمل المكتبة، وسيقوم أيضًا بإنشاء كل بنية المشروع الضرورية:

شيء جيد آخر في CoIDE هو أن لديه القدرة على تحميل الأمثلة مباشرة في بيئة التطوير. في علامة التبويب "المكونات"، يمكنك أن ترى أن هناك أمثلة لكل مكتبة تقريبًا، انقر فوق GPIO (مع 4 أمثلة) وشاهدها:

يمكنك إضافة الأمثلة الخاصة بك هناك. كما ترون في لقطة الشاشة أعلاه، تحتوي الأمثلة بالفعل على رمز وميض مؤشر GPIO_Blink LED. يمكنك النقر فوق زر الإضافة وستتم إضافته إلى المشروع، ولكن كملف مضمن، لذلك سنفعل ذلك بشكل مختلف ونقوم ببساطة بنسخ رمز المثال بالكامل إلى ملف main.c. الشيء الوحيد هو استبدال سطر GPIO_Blink(void) الفارغ بـ int main(void). لذا، اضغط على F7 (أو حدد Project->Build من القائمة) لتجميع المشروع و... لم يحالفك الحظ!

البيئة تحتاج إلى مترجم دول مجلس التعاون الخليجي، ولكن ليس لدينا واحد. لذلك، انتقل إلى صفحة أدوات GNU لمعالجات ARM المدمجة، وحدد نوع نظام التشغيل الخاص بك على اليمين وقم بتنزيل أحدث إصدار من سلسلة الأدوات. ثم نقوم بتشغيل الملف وتثبيت سلسلة أدوات gcc. بعد ذلك، في إعدادات CoIDE، سنشير إلى المسار الصحيح لسلسلة الأدوات:

اضغط على F7 مرة أخرى (Project->Build) وتأكد من نجاح عملية التجميع:

كل ما تبقى هو وميض وحدة التحكم الدقيقة. للقيام بذلك، نقوم بتوصيل اللوحة الخاصة بنا بالكمبيوتر باستخدام USB. بعد ذلك، في إعدادات مصحح الأخطاء، تحتاج إلى تثبيت ST-Link؛ للقيام بذلك، حدد Project->Configuration في القائمة وافتح علامة التبويب Debugger. حدد ST-Link من القائمة المنسدلة وأغلق النافذة:

دعونا نحاول وميض MK. في القائمة، حدد Flash->Program Download (أو انقر على الأيقونة المقابلة على شريط الأدوات) وتأكد من أن MK قد تم وميضه بنجاح:

نرى مؤشر LED وامض على اللوحة، وأعتقد أنه ليس من المنطقي تقديم مقطع فيديو أو صورة، لأن... الجميع رآه.

أيضًا، تعمل أوضاع تصحيح الأخطاء المختلفة في CoIDE؛ للقيام بذلك، اضغط على CTRL+F5 (أو في قائمة Debug->Debug):

هذا كل شيء. كما ترون، إعداد CoIDE والعمل معه أمر بسيط للغاية. آمل أن يشجعك هذا المقال على دراسة متحكمات STM32 الواعدة وغير المكلفة.

قد يبدو هذا موضوعًا بسيطًا، ولكن في التعليقات غمرتني الأسئلة حول كيفية توصيل وحدة التحكم الدقيقة. كيفية توصيل LED، زر، الطاقة به. ما يجب القيام به مع أجندأو عارف. لماذا هو مطلوب؟ AVCCوأشياء من هذا القبيل. لذا، بما أن هناك أسئلة، فهذا يعني أن الموضوع غير واضح ومن الضروري إعطاء إجابة شاملة قدر الإمكان. أنا أصف كل شيء بالنسبة لوحدات تحكم AVR، ولكن بالنسبة لبعض صور PIC، كل شيء متشابه جدًا. لأن المبادئ هنا هي نفسها.

تَغذِيَة
للعمل، يحتاج المتحكم الدقيق إلى طاقة - كهرباء. للقيام بذلك، بطبيعة الحال، تحتاج إلى البدء في تغذية عليه. MK جهد العرض اتميل AVRيختلف من 1.8 ل 5 فولت، حسب السلسلة والطراز. الجميع أفريمكن أن تعمل من 5 فولت (إذا كانت هناك سلاسل ذات جهد منخفض بحت، فيرجى التوضيح في التعليقات، لأنني لم أر مثل هذه). لذلك سوف نفترض أن جهد إمداد وحدة التحكم لدينا هو دائمًا 5 فولت أو نحو ذلك. عادةً ما يتم تحديد القيمة الإضافية لجهد الإمداد على أنها VCC. تم تعيين محطة الصفر (وكذلك الأرض والسكن وما يسمونه). أرض. إذا أخذنا مصدر طاقة الكمبيوتر كمثال. ثم السلك الأسود هو GND (بالمناسبة، السلك الأرضي مطلي تقليديًا باللون الأسود)، والسلك الأحمر هو +5، والذي سيكون سلكنا VCC. إذا كنت ستقوم بتشغيل وحدة التحكم الدقيقة من البطاريات، فسوف نأخذ ناقص البطاريات أرض، بالإضافة إلى VCC(الشيء الرئيسي هو أن جهد الإمداد من البطاريات يقع ضمن الحدود المحددة لـ MK معين، والمشكلة تكمن في ورقة البيانات. عادةً ما تتم كتابة المعلمة في الصفحة الأولى في الوصف العام للميزات:

الفولتية التشغيل
-1.8 - 5.5 فولت (ATtiny2313V)
-2.7 - 5.5 فولت (ATtiny2313)
درجات السرعة
-ATtiny2313V: 0 - 4 ميجا هرتز عند 1.8 - 5.5 فولت، 0 - 10 ميجا هرتز عند 2.7 - 5.5 فولت
-ATtiny2313: 0 - 10 ميجا هرتز عند 2.7 - 5.5 فولت، 0 - 20 ميجا هرتز عند 4.5 - 5.5 فولت

يرجى ملاحظة أن هناك سلسلة خاصة ذات جهد منخفض (على سبيل المثال الجهد المنخفض 2313 فولت) يكون فيها الحد الأدنى لجهد الإمداد أقل بكثير. ومن الجدير أيضًا الانتباه إلى النقطة التالية المتعلقة بالترددات. يوضح هذا اعتماد التردد الأقصى على جهد الإمداد. يمكن ملاحظة أنه عند الجهد المنخفض تكون الترددات المحددة أقل. والسلاسل ذات الجهد المنخفض أبطأ مرتين من نظيراتها ذات الجهد العالي. ومع ذلك، جميع المعالجات خاضعة لرفع تردد التشغيل ;))))))

للتشغيل مع وحدات التحكم المتسلسلة أفرالغذاء فقط يكفي. لجميع المداخل VCCنحن بحاجة إلى تطبيق 5 فولت (أو ما لديك) وجميع المدخلات أرضيجب أن تزرع على الأرض. يمكن أن يحتوي المتحكم الدقيق على العديد من المدخلات VCCومداخل كثيرة أرض(خاصة إذا كان في مربع TQFPجسم. الذي يبرز بيتالوفو من جميع الجوانب). لم يتم تصنيع العديد من المسامير لسهولة التركيب، ولكن لغرض تزويد البلورة بالطاقة بشكل موحد من جميع الجوانب، بحيث لا يتم تحميل دوائر الطاقة الداخلية فوق طاقتها. بخلاف ذلك، تخيل أنك قمت بتوصيل مصدر الطاقة من جانب واحد فقط، وعلى الجانب الآخر من الشريحة، قمت بتعليق مؤشر LED على كل خط منفذ وأضاءته مرة واحدة. تبخر ناقل الطاقة الداخلي ذو الأغشية الرقيقة، الذي أخافه مثل هذا الحمل الحالي، وتولى المعالج زمام الأمور فجأة، وبدون سبب واضح على ما يبدو، أسقط حوافره. لذا يجب توصيل جميع مخرجات Vcc وGND. قم بتوصيلها وفقًا لذلك وقم بتشغيلها.

تطرح أسئلة معينة أجندو AVCC- هذا هو مصدر الطاقة الأرضي التناظري للمحول التناظري إلى الرقمي. يعد ADC مقياسًا دقيقًا للغاية للجهد، لذا يُنصح بتزويده بالطاقة من خلال مرشحات إضافية بحيث لا يؤثر التداخل، وهو أمر شائع في دائرة إمداد الطاقة التقليدية، على جودة القياس. ولهذا الغرض، في دوائر دقيقة، يتم تقسيم الأرض إلى رقمية وتناظرية (يجب أن تكون متصلة فقط عند نقطة واحدة)، وعلى AVCCيتم توفير الجهد من خلال خنق المرشح. إذا كنت لا تخطط لاستخدام ADC أو لا تنوي إجراء قياسات دقيقة، فمن المقبول تمامًا القيام بذلك AVCCتطبيق نفس 5 فولت كما في VCC، أ أجندزرع على نفس الأرض مثل أي شخص آخر. ولكن يجب عليك الاتصال بهم!!!يقوم EMNIP من AVCC أيضًا بتشغيل المنفذ A.

تحذير!!!

يبدو أن شريحة Mega8 بها خطأ على مستوى طوبولوجيا الشريحة - Vcc وAVcc مترابطان داخل الشريحة. المقاومة بينهما حوالي (!!!) 5 أوم. للمقارنة، في ATmega16 وATmega168 بين Vcc وAVcc، تبلغ المقاومة عشرات ميغا أوم! لا يوجد حتى الآن أي مؤشرات في هذا الصدد في ورقة البيانات، ولكن في أحد المواضيع من عام 2004 على AVRFreaks يقال أن الناس كانوا ينطحون رؤوسهم بالضوضاء الرقمية لـ ADC، ثم كتبوا إلى دعم Atmel قائلين WTF؟؟؟ ويقولون إن هناك خطأ في الشريحة وأن Vcc وAVcc متصلان داخل البلورة. في ضوء هذه المعلومات، أعتقد أن ضبط دواسة الوقود على AVcc لـ Mega8 لا فائدة منه عمليًا. ولكن يجب تشغيل AVcc على أي حال - من يدري مدى قوة هذا الاتصال الداخلي؟

يظهر أدناه مخطط اتصال أبسط لوحدة التحكم الدقيقة AVR:

كما ترون، تمت إضافة خنق إلى دائرة الطاقة AVCCوكذلك المكثفات. من الممارسات الجيدة وضع مكثف سيراميكي بمائة نانوفاراد بينهما VCCو أرضكل دائرة صغيرة (وإذا كانت الدائرة الدقيقة تحتوي على العديد من مدخلات الطاقة والأسس، فبين كل مصدر طاقة وكل أرضي) أقرب ما يمكن إلى مخرجات الطاقة - فستعمل على تخفيف ضوضاء النبضة القصيرة في ناقل الطاقة الناتج عن تشغيل الدوائر الرقمية . سوف يعمل مكثف 47mKF الموجود في دائرة الطاقة على تسهيل زيادة الجهد بشكل أعمق. مكثف بين AVccو أرضسوف بالإضافة إلى ذلك تهدئة التغذية أدك.

مدخل عارفهذا هو مدخلات الجهد المرجعي أدك. بشكل عام، يمكنك تطبيق الجهد النسبي الذي سيتم حسابه عليه أدك، ولكن عادةً ما يتم استخدام مرجع داخلي يبلغ 2.56 فولت، أو جهد يبلغ AVCC، وبالتالي على عارفيوصى بتعليق مكثف، مما سيؤدي إلى تحسين جودة الجهد المرجعي قليلاً أدك(وتعتمد كفاية قراءات المخرجات على جودة الدعم أدك).

إعادة تعيين الدائرة
المقاوم على إعادة ضبط. عموما في أفرلديه دائرة إعادة الضبط الداخلية الخاصة به، والإشارة إعادة ضبطمن الداخل تم سحبه بالفعل بمقاوم 100 كيلو أوم VCC. لكن! إن التشديد سيء للغاية لدرجة أن وحدة التحكم الدقيقة تلتقط إعادة ضبط من كل عطسة. على سبيل المثال، من لمس الساق بإصبعك RST، أو حتى بمجرد لمس الإصبع مقابل رسوم. ولذلك ينصح بشدة RSTاسحب إلى مصدر الطاقة بمقاومة 10 كيلو. لا يستحق أقل من ذلك، لأنه... ثم هناك احتمال ألا يتمكن المبرمج الموجود داخل الدائرة من التغلب على هذا التشديد ولن يكون من الممكن وميض MK داخل الدائرة. 10K هو مجرد حق.

يوجد أيضًا نظام إعادة التعيين هذا:

ما يجعل الأمر رائعًا هو أنه عند تشغيل الدائرة، يتم تفريغ المكثف ويقل الجهد RSTبالقرب من الصفر - لا يبدأ المتحكم الدقيق، لأن له إعادة تعيين مستمر. ولكن مع مرور الوقت، من خلال المقاوم، سيتم شحن المكثف وسوف يكون الجهد RSTيصل إلى log1 - سيبدأ MK. حسنًا، يتيح لك الزر فرض إعادة التعيين إذا لزم الأمر.

سيكون التأخير تقريبًا T=R*C في هذا المثال - حوالي ثانية واحدة. لماذا هذا التأخير؟ نعم، على الأقل حتى لا يبدأ MK قبل أن يتم تشغيل جميع الأجهزة الموجودة على اللوحة وتصل إلى حالة مستقرة. في أعضاء الكنيست القدامى ( AT89S51، على سبيل المثال) بدون مثل هذه السلسلة التي توفر إعادة التعيين الأولي، قد لا يبدأ MK على الإطلاق.

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

مصدر الساعة
مولد الساعة هو قلب المتحكم الدقيق. لكل نبضة، يحدث نوع من العمليات داخل وحدة التحكم - يتم إرسال البيانات من خلال السجلات والحافلات، ويتم تبديل دبابيس المنفذ، ويتم النقر على الموقتات. كلما كان تردد الساعة أسرع، كلما زادت سرعة تنفيذ MK لأفعاله واستهلاك المزيد من الطاقة (يتطلب تبديل البوابات المنطقية طاقة، وكلما زاد عدد مرات التبديل، زادت الحاجة إلى الطاقة).

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


يمكن أن يكون المولد:

  • داخلي مع دائرة RC رئيسية داخلية.
    في هذه الحالة، لا يلزم الربط على الإطلاق! ولا يمكن توصيل دبابيس XTAL1 وXTAL2 على الإطلاق، أو يمكن استخدامها كمنافذ إدخال/إخراج عادية (إذا سمح MK بذلك). عادة يمكنك اختيار واحدة من 4 قيم تردد داخلية. يتم ضبط هذا الوضع بشكل افتراضي.
  • داخلي مع دائرة RC رئيسية خارجية.
    هنا سوف تحتاج إلى توصيل مكثف ومقاوم خارج وحدة التحكم الدقيقة. يسمح لك بتغيير تردد الساعة بسرعة عن طريق ضبط قيمة المقاوم.
  • داخلي مع كوارتز رئيسي خارجي.
    يتم وضع مرنان الكوارتز وزوج من المكثفات في الخارج. إذا كان الكوارتز منخفض التردد (يصل إلى 1 ميغاهيرتز)، فلن يتم تثبيت المكثفات.
  • خارجي.
    من جهاز آخر، يتم إرسال إشارة مستطيلة إلى مدخل MK، الذي يضبط الساعة. يعد هذا الوضع مفيدًا، على سبيل المثال، إذا كنا بحاجة إلى العديد من وحدات التحكم الدقيقة للعمل في تزامن صارم من مولد واحد.

المخططات المختلفة لها مزايا مختلفة:
في حالة دائرة RC الداخليةنوفر مساحة على اللوحة، ولا نحتاج إلى أجزاء إضافية، لكن لا يمكننا الوصول إلى الحد الأقصى للتردد والتردد يعتمد قليلاً على درجة الحرارة وقد يتقلب.

يتمتع الكوارتز الخارجي بدقة ممتازة، لكنه يكلف 15 روبلًا إضافيًا ويتطلب أجزاء إضافية، والأمر الأكثر إزعاجًا، غالبًا ما يستهلك بضع أرجل الإدخال / الإخراج. أيضًا، باستخدام الكوارتز الخارجي، يمكنك تحقيق أقصى أداء من MK. يتم تحديد تردد MC من خلال التردد الذي يتم شحذ الكوارتز المحدد به. دائرة RC خارجيةيسمح لمذبذب MK بالعمل بشكل أسرع من المذبذب الداخلي، ويكلف أقل من الكوارتز، ولكنه يعاني من نفس المشكلات المتعلقة باستقرار التردد مثل دائرة RC الداخلية.

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

توصيل المصابيح والأزرار إلى وحدة التحكم الدقيقة
في حد ذاته، دون التفاعل مع العالم الخارجي، فإن وحدة التحكم الدقيقة ليست مثيرة للاهتمام - من يهتم بما يدق في الداخل؟ ولكن إذا كان بإمكانك بطريقة أو بأخرى عرض هذا أو التأثير عليه ...

لذلك، يتم توصيل الزر وLED على النحو التالي:


بالنسبة للزر، تحتاج إلى توصيل ساق الإدخال/الإخراج المحددة من خلال الزر بالأرض. يجب تكوين الإخراج نفسه كـ مدخل مع سحب ما يصل(DDRxy=0 PORTxy=1). ثم، عندما لا يتم الضغط على الزر، من خلال المقاوم السحب، سيكون هناك مستوى الجهد العالي عند الإدخال، ومن البتات بينهوسوف يعطي 1 عند القراءة، إذا تم الضغط على الزر، فسيتم وضع الإدخال على الأرض، وسوف ينخفض ​​الجهد عليه إلى الصفر، وهو ما يعني بينكسيسيتم قراءة 0 بناءً على الأصفار في بتات التسجيل رقم التعريف الشخصينحن نعلم أنه يتم الضغط على الأزرار.

يُظهر الخط المنقط مقاومة سحب إضافية. على الرغم من إمكانية توصيل السحب بالمنفذ الموجود داخل AVR، إلا أنه ضعيف جدًا - 100 كيلو أوم. وهذا يعني أنه يمكن تثبيته بسهولة على الأرض عن طريق التداخل أو التداخل، الأمر الذي سيسبب إنذارًا كاذبًا. وهذه المقاومات الداخلية للسحب تحب حقًا أن تحترق من التداخل. لدي بالفعل عشرات من وحدات التحكم الدقيقة مع مقاومات PullUp المقتولة. كل شيء يعمل، ولكن لا يوجد تشديد - احترق. قم بتعليق المقاوم في الخارج وسيعمل كما لو لم يحدث شيء. لذلك، بالنسبة للدوائر الحرجة، أوصي بشدة بإضافة سحب خارجي قدره 10 كيلو أوم - حتى لو تم تغطية الجزء الداخلي، فسوف يعمل الجزء الخارجي. خلال عملية التعلم، يمكنك أن تنسى هذا.

قاديتصل بالمنفذ بطريقتين. وفقا للمخطط أرض الميناءأو قوة الميناء. في الحالة الأولى، لإشعال الصمام الثنائي، تحتاج إلى إخراج مستوى عالٍ إلى منفذ log1 (يساوي تقريبًا Vcc). في الحالة الثانية، لإضاءة الصمام الثنائي، تحتاج إلى إخراج log0 إلى المنفذ - مستوى منخفض (بالقرب من الصفر). ل أفريبدو أنه لا يوجد فرق، ولكن العديد من السلاسل القديمة من وحدات التحكم الدقيقة يتم سحبها للأسفل بشكل أفضل بكثير من الأعلى، لذا فإن دائرة Port-Power أكثر شيوعًا. أستخدم كلا المخططين بناءً على ملاءمة تخطيط ثنائي الفينيل متعدد الكلور. حسنا، على مستوى البرمجيات لا يوجد فرق كبير.
يجب تكوين دبوس المنفذ للعمل مع مؤشر LED مخرج(DDRxy=1) وبعد ذلك، اعتمادًا على القيمة الموجودة في PORTxy، سيكون للطرف مستوى جهد مرتفع أو منخفض.

قاد يجب أن تكون متصلا عبر المقاوم. الحقيقة هي أن المقاومة المباشرة لمصباح LED صغيرة جدًا. وإذا لم تقم بالحد من التيار من خلاله، فيمكنه ببساطة أن يحترق. أو، على الأرجح، حرق دبوس المتحكم الدقيق، والذي، بالمناسبة، يمكنه سحب شيء مثل 20-30 مللي أمبير. ولكي يتوهج مصباح LED العادي (نحن لا نفكر في جميع الأنواع الآن، يمكن لهذه الوحوش أن تستهلك الأمبيرات) تحتاج إلى حوالي 3...15 مللي أمبير.

لذلك، مرتجلا، ونحن نعتبر:

  • يبلغ الجهد عند خرج ساق MK حوالي 5 فولت، وعادة ما يكون انخفاض الجهد عبر مؤشر LED حوالي 2.5 فولت (لا يمكن أن يكون أعلى، وإلا فإن الصمام الثنائي سوف يستهلك تيارًا أكثر من اللازم ويختنق، وينبعث منه دخان جميل)
  • وبالتالي، فإن الجهد الذي يجب أن تتحمله المقاومة المحددة سيكون 5-2.5 = 2.5V.
  • نحتاج إلى تيار 5 مللي أمبير - لا فائدة من تغذية مؤشر LED، نحتاج إلى إشارة، وليس إضاءة :)
  • R=U/I= 2.5/5E-3 = 500 أوم. الأقرب في السلسلة هو 510 أوم. دعونا نأخذها. من حيث المبدأ، يمكنك ضبط أي شيء في متناول يدك من 220 أوم إلى 680 أوم - سوف يحترق بشكل طبيعي.

إذا كنت بحاجة إلى توصيل العديد من مصابيح LED، فلكل منها مقاوم خاص بها. بالطبع، يمكنك أن تكون جشعًا وتضع مقاومًا واحدًا للجميع. ولكن هنا ستكون المشكلة - هناك مقاوم واحد فقط، ولكن هناك العديد من الثنائيات! وفقًا لذلك، كلما زاد عدد الثنائيات التي نشعلها، قل التيار الذي يستقبله كل منها - سيتم تقسيم التيار من مقاوم واحد بين أربعة. لكن لا يمكنك وضع مقاوم أصغر - لأنه عندما يتم إشعال صمام ثنائي واحد، فإنه سيتلقى جزءًا من التيار لمدة أربعة ويلصق الزعانف معًا (أو يحرق المنفذ).

بعض المراوغات في تصميم الدوائر أو بضع كلمات حول حفظ المسامير

ما لا يمكن لحامه يجب برمجته. (ج) الحكمة الشعبية.

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

عادةً ما يكون حجر الزاوية في هذا التوفير هو مبدأ الفصل الديناميكي لتعيينات الدبوس بمرور الوقت. أي، على سبيل المثال، يمكن أن يعمل الإخراج على أي ناقل، وعندما لا تكون الحافلة نشطة، فمن خلال نفس الإخراج يمكنك التحقق من حالة الزر، أو إرسال شيء ما عبر ناقل آخر. من خلال التبديل السريع (عشرات أو حتى آلاف المرات في الثانية) بين مهمتين مختلفتين، يمكنك تحقيق تأثير "التشغيل المتزامن".

الشيء الرئيسي هنا هو اتباع قاعدتين:

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

دعني أعطيك مثالا:

  • لدينا دبوس يتم تعليق الإخراج من مستشعر معين وزر عليه. يمكن أن يكون الإخراج من المستشعر 0، 1 في الوضع النشط وHi-Z عندما لا تصل إشارة التمكين إلى المستشعر.
  • يعطي الزر 0 ثابتًا للخط من خلال دائرة كهربائية قصيرة.

كيف ينبغي أن تعمل:
لنفترض أنه في معظم الأحيان يكون لدينا مدخل وحدة التحكم الدقيقة مهيأ لإدخال Hi-Z ونأخذ قراءات من المستشعر الذي يتم تطبيق إشارة التمكين عليه أيضًا. عندما نحتاج لاستقصاء زر ما، نأخذ Enable بعيدًا عن المستشعر وتنتقل مخرجاته إلى وضع Hi-Z ولا تتداخل معنا. نقوم بتحويل إخراج وحدة التحكم الدقيقة إلى وضع السحب والتحقق مما إذا كان هناك صفر عند الإدخال - إشارة الزر المضغوط. هل راجعت؟ نقوم بنقل إدخال MK إلى إدخال Hi-Z وتطبيق التمكين على المستشعر مرة أخرى. ومرات عديدة في الثانية الواحدة.

وهنا أمامنا متناقضان:

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

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

  • التناقض الكهربائي
    إذا قام المستشعر بتعيين 1، وقمنا بالضغط على الزر، فمن الواضح أن GND وVcc في نفس السلك لن يتوافقا وسيموت شخص ما. في هذه الحالة، سيموت خرج المستشعر، لأنه أضعف - لا توجد طريقة للترانزستور الضعيف للتنافس مع الزر النحاسي.

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

    على سبيل المثال، إذا كان خرج المستشعر لا يمكن أن يوفر أكثر من 10 مللي أمبير، فسنحتاج إلى مقاوم بحيث لا يتجاوز التيار من خلاله من Vcc إلى GND هذه القيمة. مع مصدر 5 فولت سيكون 510 أوم. الآن، حتى لو كان هناك سجل 1، مستوى عالٍ على الخط من جانب المستشعر، فإن الضغط على الزر لن يؤدي حتى إلى تشويه المستوى المنطقي لأنه تم تصميم المقاوم مع الأخذ بعين الاعتبار الحمولة القصوى للمنفذ

تبين أن المثال فوضوي بعض الشيء، لكنني أعتقد أن الجوهر واضح. أريدك أن ترى وتفهم ليس فقط كيف يتم ذلك، ولكن أيضًا سبب القيام بذلك :)

حسنًا، بعض الأمثلة على عدة وظائف على ساق واحدة:
أولاً، موصل مزود خدمة الإنترنت. لقد نسيت منذ زمن طويل كيف كان الأمر عندما تقوم بإدخال وحدة التحكم الدقيقة أولاً في كتلة المبرمج، ثم في اللوحة، ثم مرة أخرى، وهكذا عدة مرات حتى تقوم بتصحيح أخطاء البرنامج. لدي 6 دبابيس من موصل ISP بارزة على اللوحة، وعند تصحيح الأخطاء، يتم توصيل المبرمج دائمًا باللوحة، وأحيانًا أقوم بتغيير البرنامج عدة مرات كل 10 دقائق. سألت وفحصت. لا تعمل؟ لقد صححته وأعدت تفليشه مرة أخرى... وهكذا حتى يعمل. يتم حساب مورد MK للوميض بآلاف المرات. لكن موصل مزود خدمة الإنترنت (ISP) يلتهم المسامير. ما يصل إلى 3 قطع - موسي، ميسو، SCK.

من حيث المبدأ، يمكنك أيضًا إرفاق أزرار بهذه المسامير. في هذه الحالة، لن يزعج أحد أي شخص، والشيء الرئيسي هو عدم الضغط على هذه الأزرار أثناء البرامج الثابتة. يمكنك أيضًا تعليق مصابيح LED (على الرغم من أن أبسطها في هذه الحالة يمكن أن يفشل، ولكن أحسنت!) ثم عند وميض البرنامج الثابت، فإنها تومض بمرح شديد :)))

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

نقوم بتبديل الإخراج من 0 إلى 1 وتشغيل الصمام الثنائي العلوي والسفلي. إذا كنا بحاجة إلى إضاءة كليهما، فإننا ببساطة نقوم بتحويل إخراج وحدة التحكم الدقيقة إلى الوضع مرحبًا زيويبدو الأمر كما لو أنه غير موجود، وسوف تحترق الثنائيات بتيار. أو قم بتبديل الثنائيات بسرعة بين بعضها البعض، وفي هذه الحالة سوف يحترق كلاهما بالعين. عيب الدائرة واضح - لا يمكن إطفاء الثنائيات. ولكن إذا، وفقا للخطة، يجب أن يحترق واحد على الأقل، فلماذا لا؟ محدث:ثم اعتقدت أنه من الممكن اختيار مصابيح LED والمقاومات بحيث يكون انخفاض الجهد الإجمالي عند مستوى جهد الإمداد، وسيؤدي إجمالي المقاومات في هذه الحالة إلى دفع التيار إلى هذا المستوى الضئيل بحيث عندما تكون الساق في وضع Hi- Z، الثنائيات لن تضيء على الإطلاق. على الأقل للعين لن يكون ملحوظا على الإطلاق. إلا في ظلام دامس.

الخيار التالي لا يحفظ الأرجل، لكنه يسمح لك بتبسيط تخطيط لوحة الدوائر المطبوعة دون سحب ناقل طاقة أو ناقل أرضي إلى الثنائيين:

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

في وضع الأزرار الستة، يكون الوضع مشابها - ساق واحدة تعطي رفعا، والآخر يعطي الأرض، والثالث يتظاهر بأنه قطعة قماش Hi-Z ولا يعكس. ولكن هناك تأثير جانبي واحد. على سبيل المثال، نقوم باستقصاء الزر "B". للقيام بذلك، خطنا العلوي يقف عند مدخل مع سحب ما يصل(PORTxy=1, DDRxy=0)، يعطي المتوسط مستوى الانتاج منخفض(PORTxy=0, DDRxy=1)، الجزء السفلي لا يشارك في العملية لأنه موجود مرحبًا زي(بورتكسي = 0، DDRxy = 0). إذا ضغطنا على الزر "B"، فإن الخط العلوي سوف يتدلى في تلك اللحظة وسيفهم البرنامج أنه تم الضغط على الزر "B"، أما إذا لم نضغط على "B"، بل نضغط على "E" و"B". " في نفس الوقت ، سوف يتدلى السطر العلوي أيضًا ، وسيعتقد البرنامج أنه تم الضغط على "B" ، على الرغم من أنه لم يكن مستلقيًا هناك. تتمثل عيوب هذا المخطط في إمكانية معالجة النقرات بشكل غير صحيح. لذا، إذا كان سيتم استخدام الجهاز من قبل مشغلين متخلفين يستخدمون كل شيء دون تمييز، فمن الأفضل التخلي عن مثل هذا المخطط.

وأخيرًا، رسم تخطيطي يوضح كيفية الجمع بين الزر ومصباح LED:


كما أنه يعمل حصريًا في الديناميكيات. أي أننا نعرض دائمًا حالة مؤشر LED - أي أننا نخرج إما 0 (الصمام الثنائي قيد التشغيل) أو Hi-Z (الصمام الثنائي غير قيد التشغيل) إلى المنفذ. وعندما نحتاج إلى استطلاع زر ما، نقوم مؤقتًا (لبضعة ميكروثانية) بتحويل الإخراج إلى وضع الإدخال المنسدل (DDRxy=0 PORTxy=1) ونستمع إلى الزر. لا يمكن تمكين الوضع عندما يكون هناك مستوى عالٍ قوي عند الإخراج (DDRxy=1 PORTxy=1) تحت أي ظرف من الظروف، لأنه عند الضغط على الزر، يمكنك حرق المنفذ.

السلبيات - عندما تضغط على الزر، يضيء مؤشر LED بغض النظر عن نظرتك إليه. ومع ذلك، قد لا يكون هذا خطأ، ولكن ميزة :)

هذه هي الفطائر. تخيل الآن برنامجًا ينفذ كل هذه الميزات الديناميكية + مجموعة من الخوارزمية الخاصة به. اتضح إما سلسلة لا نهاية لها من استطلاعات الرأي، أو فيلق من جميع أنواع الأعلام. في مثل هذه الحالات، يكون أبسط إرسال أو إرسال تعاوني هو ما طلبه الطبيب - حيث تقوم بإجراء كل استطلاع على طول دورة مهمتك ولا تقلق. لكنك تستخدم بعض ATTiny2313 في كل مكان وتنظر بسخرية إلى أولئك الذين يدفعون Mega8 أو شيء أكثر بدانة في نفس المهمة :)

لا أعرف شيئا وأخاف أن أحرق شيئا ماذا أفعل؟؟؟

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

وبعد ذلك، باستخدام مثال كيفية إجراء الدفع التجريبي، حاول أن تصنع شيئًا خاصًا بك. لوحة العرض التوضيحي نفسها عبارة عن وحدة تحكم دقيقة + بعض الأجهزة الطرفية للبدء، وهو ما يكفي لعدد من التجارب البسيطة ويمكن أن يسهل الاتصال بالأجهزة الأخرى ودراستها. هناك لوحات تجريبية مختلفة، على سبيل المثال، الأنظمة ذات العلامات التجارية مثل STK500 أو AVR Butterfly، أو الأنظمة الخاصة بي، والتي تم تصميمها بناءً على تجربتي والتي ستعتمد عليها الدورة التدريبية الإضافية بأكملها.

مجلس التنمية اكتشاف STM32مصممة لدراسة قدرات ومبادئ البرمجة 32 بت ذراعسلسلة متحكم STM32من الشركة إس تي مايكروإلكترونيكس. تحتوي اللوحة على جميع العناصر اللازمة لبدء العمل مع هذه الدوائر الدقيقة. ينقسم هيكل اللوحة إلى جزأين - مصحح أخطاء ST-Link ووحدة التحكم الدقيقة نفسها.

متحكم

تحتوي لوحة Discovery STM32 على وحدة التحكم الدقيقة STM32F100RBT6B، والتي تعد واحدة من أبسط الأجهزة في سلسلة STM32. STM32F100RBT6B عبارة عن معالج أساسي ARM 32 بت، سلسلة Cortex-M3. سعة الذاكرة المدمجة هي ذاكرة فلاش 128 كيلو بايت وذاكرة الوصول العشوائي 8 كيلو بايت. الدائرة الدقيقة مصنوعة في حزمة LQFP ذات 64 سنًا للتركيب على السطح.

يتم تنفيذ الأجهزة الطرفية التالية في STM32F100:

  • 5 منافذ الإدخال/الإخراج
  • أدك 12 بت
  • 2 DACs 12 بت
  • 3 واجهات USART
  • واجهة سبي
  • واجهتين I2C
  • توقيت

الأسلاك متحكم

بالإضافة إلى المتحكم الدقيق الموجود في لوحة Discovery STM32، يوفر متخصصو شركة STMicroelectronics الأجهزة التالية:

  • اثنين من المصابيح المستخدم
  • زر مخصص
  • زر إعادة الضبط
  • كريستال كوارتز 8 ميجا هرتز
  • مرنان 32768 هرتز لتشغيل الساعة والمراقبة في الوقت الفعلي

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

لتشغيل MK، يتم استخدام الجهد 3.3V. يمكن إمداد الأجهزة الخارجية بالطاقة من خلال مثبت الجهد المدمج بجهد 5 فولت.

مصحح الأخطاء

تم تجهيز STM32 Discovery بمصحح أخطاء خاص من شركة STMicroelectronics، يُسمى ST-Link. هذا النموذج غير متوافق مع منتجات الشركات المصنعة الأخرى. يتم تطبيق مصحح الأخطاء على وحدة التحكم الدقيقة STM32F103 ويسمح لك بكتابة برنامج إلى MK الأساسي ومراقبة تشغيله. للتواصل مع جهاز كمبيوتر، يتم استخدام موصل Mini-USB، والذي يسمح لك أيضًا بتشغيل الأجهزة الموجودة على اللوحة. للإشارة إلى تشغيل مصحح الأخطاء، يتم استخدام مؤشرين LED باللون الأحمر. يضيء أحدهما عند تشغيل الطاقة، والثاني عند تشغيل مصحح الأخطاء.

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

برمجة

يمكن استخدام عدة بيئات تطوير متكاملة مختلفة للعمل مع STM32 Discovery. تقدم شركة STMicroelectronics بيئة التطوير الخاصة بها والتي تسمى Atollic True STUDIO. في الإصدار LITE، يتم توفير هذه البيئة مجانًا. كما تدعم وحدات التحكم الدقيقة STM32 الحزم المعروفة مثل IAR وKeil وCODE RED. يمكن تنفيذ البرنامج الثابت لوحدة التحكم الدقيقة المستهدفة باستخدام الأداة المساعدة ST-Link Utiliuty المجانية.

ليس لديك الحق في نشر التعليقات

مبرمج

لتحميل البرامج الثابتة إلى ذاكرة وحدة التحكم الدقيقة وتصحيح أخطاء البرنامج، استخدم واجهة SWD، التي تتطلب إخراج 4 أسطر:

  • أرض- تحتاج إلى الجمع بين أراضي الجهاز والمبرمج؛
  • سويديو- الخط الذي يتم من خلاله نقل البرامج الثابتة خطوة بخطوة ويتم إجراء التصحيح ؛
  • SWSCK- إشارة المزامنة اللازمة لإرسال البرامج الثابتة؛
  • إعادة ضبط- تحتاج إلى إعادة تشغيل MK بعد تحميل البرنامج الثابت.

يمكنك أيضًا العثور على أرجل هذه الخطوط في القسم المقابل.

قد تكون أسباب إعادة تشغيل MK كما يلي:

  • إعادة ضبط؛
  • انخفاض NRST؛
  • لا يوجد ما يكفي من الجهد العرض.

عادةً ما تتطلب دائرة إعادة الضبط الخارجية مقاومة سحب، لكن STM32F1xx MCU لا تتطلب مقاومة سحب خارجية لإعادة الضبط (دبوس NRST). القيمة الموصى بها لمكثف التوقيت هي 100 nF.

الآن بعد أن قمنا بتغطية جميع القضايا المتعلقة بتصميم الدوائر، حان الوقت للانتقال إلى مسألة تخطيط لوحة الدوائر المطبوعة.



glvpom.ru - المحطات الفرعية. إلكترونيات الطاقة. علم البيئة. الهندسة الكهربائية