في العام الماضي بالنسبة لـ Hands On ، قمت بإخراج TRS-80 Model 100 الذي لم يعد له وجود. وكان الهدف هو ترقية 24 كيلو بايت من ذاكرة الوصول العشوائي و 2.4 ميغا هرتز و 8 بت وحدة المعالجة المركزية مع الحفاظ على لوحة مفاتيح الكمبيوتر المحمول وشاشة LCD الرائعة. كان هذا المقال تقريبًا حول معرفة كيفية تشغيل شاشة LCD التي تعود إلى حقبة الثمانينيات. تركت الباقي ، كما يقولون ، كتمرين للقارئ. بعد كل شيء ، فإن إرسال دفق من البيانات من وحدة المعالجة المركزية الجديدة إلى Arduino Mega للتحكم في الشاشة سيكون بمثابة تمرين تافه ، أليس كذلك؟
هاهاهاها.
لا ، يا رفاق ، لا لم يكن كذلك.
IEEEنطاقتوفر مقالات “التدريب العملي” إصدارات خطية بالضرورة لكيفية تكامل المشروعات معًا. يمكن أن يعطي انطباعًا بأننا أذكياء بشكل رهيب ، ولدينا نفس العلاقة تقريبًا بالواقع مثل خلاصة الوسائط الاجتماعية المنسقة بواسطة المؤثر. لذا ، بين الحين والآخر ، أود أن أقدم قصة غارقة في الفشل ، كتذكير فقط بأن هذا هو شكل الهندسة أحيانًا.
لإرسال بيانات الشاشة إلى Mega ، كان لدي الاختيار بين عدة طرق تدعمها مكتبات برامج تشغيل العرض في CircuitPython. كنت أرغب في استخدام متحكم دقيق يعمل بالطاقة CircuitPython كعقل جديد للطراز 100 نظرًا لوجود الكثير من البرامج الحالية التي يمكنني نقلها. على وجه الخصوص ، ستعمل مكتبات عرض CircuitPython على تبسيط إنشاء الرسومات والنصوص بشكل كبير وستقوم تلقائيًا بتحديث العرض. كانت اختياراتي بين واجهة متوازية وواجهتين تسلسليتين: SPI و I2ج.
تتطلب الواجهة المتوازية 12 سلكًا على الأقل. كان SPI أفضل ، كونه واجهة بأربعة أسلاك. لكن أنا2كان C هو الأفضل على الإطلاق ، حيث يتطلب سلكين فقط! بالإضافة إلى ذلك ، هناك العديد من لوحات الاختراق التي تدعم I2ج ـ بما في ذلك التخزين والحساسات بأنواعها. أنا فقط2يمكن للحافلة C ، من الناحية النظرية ، دعم أكثر من مائة IE2ملحقات ج. يعتبر I2C أبطأ بكثير من SPI ، لكن شاشة عرض الموديل 100 كبيرة الحجم بدقة 240 × 64 بكسل لا تزال أبطأ. وقد استخدمت الأجهزة الطرفية القائمة على I2C عدة مرات من قبل في المشاريع السابقة. أنا2كان C هو الخيار الواضح. ولكن هناك فرق كبير بين استخدام جهاز طرفي تم إنشاؤه بواسطة بائع وبناء واحد بنفسك.
وحدة تحكم جراند سنترال [bottom] يوفر العقول الجديدة لـ Tandy. على الرغم من أن وحدة التحكم لها نفس عامل الشكل مثل Arduino Mega ، إلا أنها تتمتع بقوة حوسبة أكبر بكثير .. يحتوي الدرع المصمم خصيصًا على ناقل حركة على مستوى الجهد الداعم [top left] يحول مستويات المنطق 3.3 و 5 فولت المستخدمة من قبل وحدات التحكم بشكل مناسب.جيمس بروفوست
على مستوى الدائرة ، أنا
2تم بناء C حول مبدأ “الصرف المفتوح”. عندما تكون الحافلة في وضع الخمول ، أو عندما يكون ملف
1 يتم نقلها ، تمسك مقاومات السحب الخطوط عند مستوى الجهد مما يشير إلى ارتفاع منطقي. ربط خط بالأرض يسحبه منخفضًا. ينقل خط واحد نبضات من وحدة التحكم المركزية كإشارة على مدار الساعة. يتعامل الخط الآخر مع البيانات ، مع إرسال بت واحد لكل دورة ساعة. تتعرف الأجهزة على الوقت الذي تكون فيه حركة المرور على الحافلة مخصصة لها لأن لكل منها عنوان فريد من 7 بت. يتم إضافة هذا العنوان مسبقًا إلى أي كتلة من وحدات بايت البيانات التي يتم إرسالها. من الناحية النظرية ، يمكن استخدام أي سرعة ساعة و / أو جهد مستوى منطقي ، طالما أن كل من وحدة التحكم والجهاز المحيطي يقبلهما.
وكانت هناك مشكلتي الأولى والوحيدة ، كما اعتقدت: كانت وحدات التحكم الدقيقة التي تشغل CircuitPython والتي كانت ضخمة من الناحية الحسابية بما يكفي لاحتياجاتي تعمل على 3.3 فولت ، بينما يستخدم Arduino Mega 5 فولت المطلوب لتشغيل شاشة LCD. حل سهل على الرغم من ذلك – سأستخدم فقط مبدل مستوى منطقي متوفرًا بسعر 4 دولارات أمريكية ، وإن كان نوعًا خاصًا متوافقًا مع I2إعداد الصرف المفتوح C.
باستخدام لوحة Adafruit Grand Central التي تبلغ تكلفتها 40 دولارًا كوحدة تحكم مركزية ، قمت بتوصيلها بـ Mega عبر مفتاح تغيير المستوى ، ووضعت بعض كود الاختبار على كل من المتحكمات الدقيقة. أبسط أنا2المعاملة C هي أن ترسل وحدة التحكم عنوانًا طرفيًا عبر الناقل والحصول على إشعار بالاستلام.
لا يوجد رد. بعد التحقق من الكود الخاص بي والأسلاك ، قمت بتوصيل محلل منطقي بالحافلة. ظهر قطار نبضي جميل ، قام برنامج المحلل بفك تشفيره كدفق من العناوين التي تم تشكيلها بشكل صحيح والتي يتم إرسالها بواسطة وحدة التحكم Grand Central أثناء فحصها للأجهزة الطرفية ، ولكن بدون إقرار من Mega.
أنا2C عبارة عن ناقل منخفض السرعة نسبيًا يوفر اتصالات ثنائية الاتجاه بين وحدة تحكم و (نظريًا) أكثر من مائة جهاز طرفي. يتم الاحتفاظ بخط البيانات والساعة بجهد عالٍ بواسطة مقاومات السحب يتم التحكم في تردد خط الساعة بواسطة وحدة التحكم ، بينما يمكن أن تؤثر كل من أجهزة التحكم والأجهزة الطرفية على خط البيانات عن طريق توصيله بالأرض. سيتولى الجهاز الطرفي التحكم في خط البيانات فقط بعد أن يأمره جهاز التحكم بالقيام بذلك لتجنب تصادم الاتصالات. جيمس بروفوست
سأتخطى خلال الساعات القليلة القادمة من الفشل التشخيصي ، بما في ذلك الكثير من صرير الأسنان والطريق المسدود الذي ينطوي على شذوذ في كيف أن شريحة SAMD الموجودة في قلب وحدة التحكم Grand Central (والعديد من الأجهزة الأخرى) لديها جهاز تسريع I
2واجهة C التي يقال إنها لا تعمل
أبطأ من سرعة ساعة تبلغ 100 كيلوهرتز. في النهاية ، قمت بتوصيل محلل المنطق مرة أخرى ، وقمت بالتمرير لأعلى ولأسفل خلال النبضات التي تم فك تشفيرها ، لاحظت أخيرًا أن فحص الحافلة لم يبدأ في العنوان 0 أو 1 ، ولكن في 16. الآن ، عندما اخترت عنوان Mega in رمز الاختبار الخاص بي ، لقد رأيت العديد من الأوصاف الخاصة بي2C في البرامج التعليمية التي تقول إن النطاق المحتمل للعناوين يمتد من 0 إلى 127. عندما نظرت إلى ما بدا وكأنه وصف شامل إلى حد ما من قبل شركة Texas Instruments لكيفية2عملت حافلة C وصولاً إلى المستوى الكهربائي ، ووُصفت العناوين ببساطة على أنها 7 بت – أي من 0 إلى 127. لذلك اخترت 4 ، أكثر أو أقل بشكل عشوائي.
ولكن مع وجود نتائج مسح المنطق في يدي ، اكتشفت أن ،
أه، بالمناسبة، العناوين من 0 إلى 7 غير صالحة للاستعمال في الواقع لأنها محجوزة لوظائف إدارة الحافلات المختلفة. لذا عدت إلى إعداد أجهزتي الأصلي ، وقمت بتوصيل عنوان جميل مكون من رقمين ، وبنغو! كل شيء يعمل على ما يرام.
صحيح أن هذا الصداع كان سببه عدم فهمي لما أفعله
2يعمل ج. التحذير من وجود العناوين المحجوزة
يستطيع يمكن العثور عليها في بعض البرامج التعليمية ، بالإضافة إلى وثائق أكثر تفصيلاً من أشخاص مثل Texas Instruments. لكن في دفاعي ، حتى في أفضل البرامج التعليمية ، عادةً ما تكون مدفونة جدًا ويسهل تفويتها. (الغالبية العظمى من أنا2تتعلق تعليمات C بالوضع الأكثر شيوعًا حيث يقوم الكبار ببناء الجهاز المحيطي وتوصيله بعناوين معقولة.) وحتى ذلك الحين ، لم يخبرني شيء أن فحص نبضات قلب CircuitPython سيبدأ في 16.
حسنًا ، حان الوقت للضغط على الترقية. يجب أن يكون الباقي سهلًا جدًا ، رغم ذلك!
من مقالات موقعك
مقالات ذات صلة حول الويب
اكتشاف المزيد من عرب نيوز للتقنية
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.