أفضل المصابيح من خلال DMA

في حين أن قراء Hackaday العادي يعرفون بالفعل كيفية وميض بقيادة متحكمين وانتقلوا إلى مشاريع أكثر تحديا قليلا مثل حل معادلات Navier-Stokes في الجمعية 6502، وهذا لا يعني أنه لا يعني عدم وجود مساحة للمبتدئين. [RIK] نشر تعليمي رائعا حول إساءة استخدام DMA للأشياء اللقام اللامع. لماذا يريد أي شخص أن يتعلم عن تقنيات DMA؟ للأشياء اللامع Blinkier، بالطبع.

يفترض هذا البرنامج التعليمي معرفة مصفوفات مضاعف LED و LED، أو في الأساس مجموعة من المصابيح المتصلة معا على شبكة XY. إن الطريقة الساذجة لقيادة شبكة LED 8 × 8 تعلق ثمانية كاثودات على دبابيس GPIO على متحكم، إرفاق الأنود الثمانية إلى مجموعة أخرى من دبابيس GPIO، ومصادر تيارا غرقا على النحو المطلوب. يمكن تخفيض عدد PIN مع سجلات التحول، ويمكن تنفيذ تعتمات LED مع PWM. هذا يخلص إلى دورة Arduino المكثفة لمدة ثمانية أسابيع.

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

تتضمن طريقة [Rik] LED LEDs DMAing إعداد مجموعة كبيرة في التعليمات البرمجية، وهي تهيئة DMA الطرفية بشكل صحيح، وأسلاك مصفوفة LED إلى عدد قليل من الدبابيس. يمكن توسيع هذه التقنية للرسوم المتحركة التي تحتوي على 64 مستويات من السطوع، وهو شيء من شأنه أن يستغرق كمية لا تصدق من طاقة المعالجة (للحصول على ميكروكنترولر، على الأقل) إذا لم تكن لمرادقة DMA.

الإعداد المستخدم في هذه التجارب هو لوحة نواة STM32F103 جنبا إلى جنب مع OpenStm32 IDE. [Rik] أصدر كل رمز على جيثب، وأنت، بالطبع، تشجيع على اللعب حولها.