تصميم ريترو لأول وحدة تحكم محمولة من بعيد 1979



في عام 1974 ، أطلقت شركة Texas Instruments أول متحكم 4 بت من عائلة TMS1000 ، وبدأت Intel في 1976 في إنتاج متحكم 8 بت من سلسلة MCS-48 الشهيرة. ثم بدأت.

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

الوصف العام




تم إصدار Microvision في الولايات المتحدة قبل حوالي أربعين عامًا ، في عام 1979. في المجموع ، تم بيع 12 خرطوشة مع ألعاب لها ، من بينها - اكتملت مع وحدة التحكم Block Buster (تناظرية Breakout ) ، والرياضة - البولينج والبيسبول ، وهي نسخة إلكترونية من لعبة اللوحة الشهيرة Connect Four و Pinball وغيرها. يمكن تقييم معظم الألعاب على محاكي MVEM ، والذي تم إجراؤه على أساس سلسلة مثيرة من المنشورات ، والتي تعلمت منها أيضًا الكثير من الأشياء المفيدة. هنا لن أتطرق بالتفصيل إلى وصف الألعاب الأصلية لوحدة التحكم ، لكنني سأنتقل على الفور إلى عالمها الداخلي.



ميزة مهمة لوحدة التحكم هي شاشة LCD مقاس 2 بوصة بدقة 16 × 16 بكسل. بدائية تمامًا بمعايير اليوم ، ولكن مقارنة بتجميعات LED ومؤشرات الإنارة الفراغية المستخدمة في الألعاب المحمولة ، كانت شاشة LCD المصفوفة خطوة تقدمية إلى حد ما. بالإضافة إلى Microvision ، في نفس العام ، ظهرت سلسلة من الألعاب الإلكترونية Mego Mini-Vid مع شاشة مماثلة للبيع ، على الرغم من 13x20. على ما يبدو ، في ذلك الوقت ، كانت هذه هي الأجهزة الوحيدة المعروضة للبيع بشاشات LCD مصفوفة لمثل هذا القرار.



يتم التحكم في العرض بواسطة رقاقة Hughes SCUS0488 - هذا هو برنامج تشغيل شاشة LCD مصفوفة. يتم تشغيل السائق بواسطة مثبت جهد سلبي UA79MG مع زوج من المكثفات والمقاومات ، وهي أبسط قاعدة للعناصر.


في غلاف وحدة التحكم توجد أيضًا عناصر التحكم - مصفوفة زر 4x3 ومقاوم متغير 10kΩ كمضرب. لاستنساخ الصوت هناك ديناميكية ديناميكية.

الشيء الأكثر أهمية هو لماذا صنعت Microvision التاريخ ، ونسي الجميع حول Mini-Vid المذكور أعلاه ، باستخدام خراطيش قابلة للاستبدال.



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


كتلة لعبة بوستر باستر ، في القضية وعلى الظهر

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

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

تعادل


اشتريت وحدة التحكم القديمة هذه لكتابة نوع من اللعبة لها وصنع خرطوشة ، وإن أمكن ، نسخ قاعدة العنصر الأصلية قدر الإمكان.
ولكن هناك مشكلة واحدة مهمة - وهي أن TMS1100 ، أن Intel 8021 كان يحتوي على ROM مقنع ، أي مبرمجة في المصنع أثناء عملية التصنيع. هناك طريقة للخروج من وحدة التحكم الدقيقة من Intel: 8021 هو نسخة مجردة من 8048 ، والتي تحتوي أيضًا على ROM مقنع ، ولكن أنتجت Intel نظير 8048 مع ROM قابل للبرمجة - 8748 ، كلاهما في حالة محو الأشعة فوق البنفسجية وأرخص مرة واحدة قابلة للبرمجة.

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

بشكل عام ، ما تحتاجه للمسح فوق البنفسجية 8748 هو ما تحتاجه ، ويمكن عمل النسخة النهائية من الخرطوشة على نسخة لا تمحى.


أعلاه هو P8748H القابل للبرمجة واحد وأدناه هو D8748H قابل للمسح بالأشعة فوق البنفسجية

انتل 8021


فيما يلي وصف موجز لـ 8021 ، وليس 8748 ، لأنه سأستخدم فقط الميزات المقطوعة 8021 من أجل الحصول على الموارد التي وضعها مطورو وحدة التحكم في الأصل فقط.

النظام الفرعي للذاكرة ، مثل عائلة MCS-48 بأكملها ، يعتمد على بنية هارفارد المعدلة. ذاكرة البرنامج هي ROM داخلي من 1024 بايت ، وذاكرة البيانات هي 64 بايت من ذاكرة الوصول العشوائي الديناميكية.

يظهر تنظيم ذاكرة الوصول العشوائي في الشكل التالي:



تحتل الخلايا من 0 إلى 7 سجلات عمل موجهة مباشرة R0 - R7 ، مع استخدام R0 و R1 كمؤشرات للوصول غير المباشر إلى جميع خلايا ذاكرة الوصول العشوائي. تُستخدم الخلايا من 8 إلى 23 لمكدس المكالمة من 8 مستويات ، على الرغم من إمكانية استخدامها أيضًا من خلال R0-R1.

يحتوي الميكروكونترولر على مولد ساعة مدمج ، يتم تعيين التردد المرجعي بواسطة كوارتز خارجي أو سلسلة RC أو سلسلة LC. تستغرق دورة الآلة 10 دورات ، وتستغرق كل دورة 3 فترات من التردد المرجعي. الحد الأقصى للتردد هو 3.58 ميجاهرتز ، بينما تستمر دورة الماكينة 8.38 μs. الحد الأدنى للتردد محدد بخصائص DRAM وهو 600 كيلو هرتز.

يحتوي 8021 على منفذي 8 بت وواحد 4 بت ، والذي يمكن استخدامه أيضًا لتوصيل موسع منافذ الإدخال / الإخراج ، رقاقة 8243. جميع المنافذ شبه ثنائية الاتجاه.

بالإضافة إلى ذلك ، يحتوي المتحكم الدقيق على عداد / عداد مدمج مكون من ثمانية أرقام. في وضع المؤقت ، يزداد العداد T بمقدار 1 كل 32 دورة للجهاز. على تجاوز T ، يتم تعيين علامة TF. في وضع العداد ، يتم حساب النبضات عند إدخال الاختبار T1.

يحتوي نظام الأوامر على 64 تعليمات ، يتم تنفيذ 36 منها في دورة واحدة ، و 28 في دورتين. معظم التعليمات أحادية البايت.

قائمة التعليمات مع أوصاف موجزة


تحضير


لم تكن هناك مشاكل في شراء 8748 ، الشيء الرئيسي هو الانتباه إلى أن الرقائق تم إنتاجها باستخدام تقنيات مختلفة. تتطلب NMOPs الأولى جهدًا بجهد 25 فولت للبرامج الثابتة ، المسمى D8748. بحلول نهاية السبعينيات ، بدأ بناء هذه المتحكمات الدقيقة باستخدام تقنية HMOP-E (نسخة محسنة من NMOP من Intel) ، وتم تسميتها D8748H وكانت مطلوبة بالفعل 21 فولت. مطلوب نفس الجهد من قبل استنساخ لاحق من NEC (mPD8748H). تم تصنيف الإصدار القابل للبرمجة لمرة واحدة P8748H.

تم شراء ممحاة الأشعة فوق البنفسجية من أبسط وأرخص الصينية مع جهاز توقيت ميكانيكي ، كما أظهرت الممارسة ، يتواءم مع مهمته بشكل مثالي (على الرغم من عدم وجود دقة توقيت في فترات قصيرة). يمسح بشكل موثوق ROM من رقائق في 2.5 دقيقة. في وقت لاحق ، اشتريت ممحاة ZAX Quick-EII بسعر رمزي من أيدي اليابانيين ، حتى أنني لا أعرف ما هي السنة ، بمظهر بداية التسعينيات. يستخدم فلاش زينون ويمسح 8748 في 3 (!) ثوان ، حرفيا. يمكن مشاهدة مقطع فيديو (ليس ملكي) مع عرض للعمل هنا .

كانت المشكلة الرئيسية هي المبرمج. يتوفر دعم عائلة Intel القديمة هذه في المبرمجين الحديثين بتكلفة 300 دولار فقط. على الرغم من أن هناك Willem هواة رخيص نسبيًا يمكنه العمل مع MCS-48 من خلال محول ، ولكنه يحتاج إلى LPT ، وهو ما لا يناسبني على الإطلاق. كان علي أن ألحم نفسي. أنا ، لنفترض ، هواة راديو مبتدئين ، لذلك أمضيت حوالي أسبوع معه ، تخلت عن أحد 8748 الذين وصلوا في ذلك الوقت (على الرغم من أنني مولع بالفكرة أنها كانت في الأصل كذلك). أخذت الدائرة المنشورة هنا كأساس ، فقط تكييفها ل Atmega وقوة 24V أكثر ملاءمة. كل هذا ملحوم على لوح توصيل:



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

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

خرطوشة


عملت معظم الخراطيش على TMS1100 ، لأنه لم تتمكن شركة Signetics ، التي أصدرت ترخيص Intel 8021 من Intel ، من توفير إمدادات شرائح MB المطلوبة. حتى بعض الألعاب التي تمت كتابتها بالفعل لـ 8021 كان لا بد من نقلها إلى TMS1100. هذا ، بالمناسبة ، سمح لنا بالتخلي عن الحزمة الخطرة من بطاريتين ، لأن استهلاك الميكروكونترولر TI كان فقط 0.1 وات مقابل 1 وات لشركة إنتل. لديّ خرطوشة واحدة فقط من بين 6 خراطيش مع 8021 ، هذه هي لعبة Connect Four ، وقد تم أخذها كأساس.

حاولت أن أجعل اللوحة تشبه اللوحة الأصلية قدر الإمكان ، لكن بالطبع اضطررت إلى إجراء تغييرات. أولاً ، حجم الشريحة (DIP-40 مقابل DIP-28) و pinout مختلفة. ثانيًا ، كان علينا تغيير الطوائف في الدائرة التذبذبية التي تحدد تردد الساعة ، لأن دورة الآلة لإصدارات HMOS من الدوائر المصغرة هي 15 دورة ، وبالنسبة لإصدارات MOS التي تم استخدامها في الخراطيش الأصلية ، 30 دورة. لذلك ، للحصول على المصداقية الكاملة ، ستعمل الخرطوشة عند 1.25 ميجاهرتز مقابل 2.5 ميجاهرتز الأصلية ، مع ضمان نفس الأداء.



في الصورة أعلاه ، تم طلب لوحات الدوائر المطبوعة النهائية في الصين ، وبينما كانت تعمل ، قمت برسم لوحة الدوائر وحفرها وتجميع مثل "مجمع التصحيح":


أخيرًا ، جزء الجهاز جاهز ويمكنك البدء في البرمجة.

العرض




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

مخطط الاتصال على النحو التالي:



Pinout H0488:

Vdd - الطاقة (3-8 فولت)
R1-R16 - مخرجات تحكم السلسلة
C1-C16 - مخرجات التحكم في الأعمدة
DATA0-DATA3 - ناقل البيانات
! Data Clk - إدخال ساعة تسجيل البيانات
مزلاج النبض - إشارة حالة Pinout R0-R15 ، C0-C15

معنى الشريحة كما يلي:

من خلال 4 خطوط معلومات ، يتم تعيين الحالة اللازمة لجميع مخرجات الدائرة المصغرة الـ 32 بالتتابع (16 لكل صف وعمود). على سبيل المثال نشير في أجزاء 4 بت حالة المخرجات للصفوف 1-4 ، ثم 5-8 ، 9-12 وأخيرًا لـ 13-16 ، وأيضًا 4 مرات في 4 بتات نشير إلى حالة الأعمدة. يتم تسجيل كل قطعة جديدة من البيانات بواسطة نبض على طول خط DATA CLK. بعد أن أرسلنا جميع البيانات الثمانية ، يقوم نبض على خط نبض المزلاج بتعيين الحالة المشار إليها للنواتج R1-R16 و C1-C16 التي سيتم الاحتفاظ بها حتى النبض التالي على هذا الخط.

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

بالإضافة إلى ذلك ، تقع على عاتقنا مسؤولية تبديل القطبية لإزالة الجهد المستمر لأقطاب LCD ، وإلا فسوف تتدهور الشاشة بسرعة. يحدث تبديل القطبية على الحافة الخلفية للإشارة على نبض المزلاج عند إدخال منخفض! Data Clock. يوصى بتبديل القطبية مع معدل تحديث الشاشة.

يتم توضيح ما سبق من خلال مخطط التوقيت التالي من ورقة البيانات:



كل هذا ، الذي تم تنفيذه في المجمع 8021 (والذي ، بالمناسبة ، يتم تقليله بشكل كبير مقارنة بمجمع بقية العائلة ، وكل ذلك لنفس المصداقية التي استخدمتها فقط التعليمات المدعومة بواسطة 8021) ، قد يبدو شيئًا مثل هذا:

mov R0, #32 ;    . mov r1, #10000000b ;    r1-r2 mov r2, #00000000b ;  . mov r4, #00000010b ;    !DATA CLK. mov r3, #11110000b clr c loop: ;   r1-r16   . mov a, r1 ;   r1 loadNibble ;    R1-R4. mov a, r1 ;  4   r1 rrc a ;      , xch a, r1 ;    . swap a loadNibble ;    R5-R8. mov a, r2 ;   r2 loadNibble ;    R9-R12. mov a, r2 ;  4   r2 rrc a ;      ,  xch a, r2 ;  C,     . swap a loadNibble ;    R13-R16 ;   C1-C16     . mov a, @R0 ;       loadNibble ;       C1-C4. mov a, @R0 swap a ;   4 . loadNibble ;     C4-C8. inc R0 ;     mov a, @R0 ;     , loadNibble ;      4 . mov a, @R0 swap a ;   4 . loadNibble ;     C9-C12. inc R0 ;    inc a ;   R0-R15  C0-C15, outl p1, a ;  Latch Pulse  1. jnc loop ;      . clr a ; outl p1, a ; . inc a ; outl p1, a ; loadNibble macro anl a, r3 ;    . outl p1, a ;   . orl a, r4 outl p1, a ; !DATA CLK. endm 

هذا هو أسرع إصدار من روتين عرض الصورة المخزنة في ذاكرة الوصول العشوائي. يتم تنفيذه في 1152 دورة آلة (والتي في حالتنا ~ 12 μs).

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


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

لوحة المفاتيح




كل شيء أبسط بكثير هنا. يتم تجميع الأزرار في مصفوفة من 4 صفوف و 3 أعمدة. ترتبط الصفوف بالدبابيس P0.4-P0.7 ، والأعمدة متصلة بـ P0.0-P0.2.



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

  mov a, #01111111b ; 0        1, outl p0, a ; ,      . in a, p0 ; , 0       ;      

مجداف




أو ، بالروسية ، فإن عجلة المناورة المثبتة في الجزء السفلي من وحدة التحكم هي مقاوم متغير 10kΩ بمقبض زخرفي ، والذي يمكن تدويره للتحكم في شيء ما في اللعبة. بالطبع ، لم يكن هناك ADC في 8021 أو TMS1100. تم تحديد زاوية الدوران من خلال سرعة شحن المكثف ، والتي تم لحامها بحكمة إلى لوحة وحدة التحكم.



يعمل كل شيء على النحو التالي: بينما تكون الدبابيس P2.2-P2.3 عالية ، يتم تفريغ المكثف والوحدة المنطقية عند إدخال الاختبار T1. بعد أن نضع P2.2 إلى P2.3 على مستوى منخفض ، سيبدأ المكثف في الشحن وبعد مرور بعض الوقت ، اعتمادًا بشكل كبير على مقاومة المقاوم المتغير ، سيصبح انخفاض الجهد عبره بحيث يتم ضبط T1 على 0. يبقى فقط لاكتشاف الوقت حتى ظهور الصفر على T1 ، والذي سيكون متناسبًا مع زاوية دوران المجذاف (يمكن العثور على مزيد من التفاصيل وأكثر إثارة للاهتمام حول هذه المخططات في DI HALT'a ). في الكود ، قد يبدو هذا كالتالي:

  clr a mov r1, a outl p2, a ; 0  P2.2-P2.3 loop: inc r1 ; r1 jt1 loop ;  T1  mov a, #00110000b ; 1  P2.2-P2.3 outl p2, a ;     



الصوت


هنا الأمر بسيط جدًا ، يتم توصيل piezodynamic بخطين للمنفذ P2.0 و P2.1 ، كل ما علينا القيام به هو تناوب الأرجل بالتواتر الصحيح.

ماذا حدث


ونتيجة لذلك ، كتبت مباراتين - Tetris ونوع من Flappy Bird. لتصحيح الأخطاء ، استخدمت Intel D8748H ونسخة من NEC D8749HD تختلف فقط في حجم ROM. لقد استخدمت 8048 بيئة التطوير المتكاملة كمجمع ومصحح. في هذه العملية ، حصلت على تجربة لا تنسى - التدفق المستمر للمتحكم الدقيق من وحدة التحكم إلى الممحاة ، من الممحاة إلى المبرمج ، ومن هناك إلى وحدة التحكم ، وكل هذا مصحوبًا برائحة مستشفى من الهواء فوق البنفسجي المتأين ...

لقد قمت بتدوين البرامج النهائية في Intel P8748H القابلة للبرمجة التي قمت بلحامها على لوحات الدوائر المطبوعة التي وصلت في ذلك الوقت.


مقارنة مع اللوحات الأصلية ، من اليسار إلى اليمين: Block Buster ، خياري ، Connect Four

اضطررت إلى استخدام النسخة الأصلية كحالة ؛ كان لدي واحدة فقط من الخرطوشتين المتاحتين للعبة Block Buster غير صالحة للعمل.



لم يكن الهيكل كافياً للمباراة الثانية:


الخلاصة


تم إنتاج Microvision MB قبل عام 1981 ، وعلى الرغم من أن المبيعات في البداية كانت ناجحة للغاية ، إلا أن عددًا صغيرًا من الألعاب (تم إصدار 13 خرطوشة في المجموع) وعادة ما تسمى مشكلات الجودة بأسباب انخفاض المبيعات. أود أن أضيف إلى ذلك حجمًا كبيرًا للغاية ، خاصةً مقارنة بسلسلة Nintendo Game & Watch التي ظهرت في ذلك الوقت وأصبحت ناجحة.

رموز ومخططات المصدر المنشورة على GitHub

Source: https://habr.com/ru/post/ar416865/


All Articles