جدول المحتويات:

6502 كمبيوتر صغير (مع Arduino MEGA) الجزء 3: 7 خطوات
6502 كمبيوتر صغير (مع Arduino MEGA) الجزء 3: 7 خطوات

فيديو: 6502 كمبيوتر صغير (مع Arduino MEGA) الجزء 3: 7 خطوات

فيديو: 6502 كمبيوتر صغير (مع Arduino MEGA) الجزء 3: 7 خطوات
فيديو: Getting started with AVR and Linux command line tools 2024, شهر نوفمبر
Anonim
6502 كمبيوتر صغير (مع Arduino MEGA) الجزء 3
6502 كمبيوتر صغير (مع Arduino MEGA) الجزء 3

المضي قدمًا ، لقد أضفت الآن Octal Latch و 8 مصابيح LED مستطيلة ومجموعة مقاومة 220 أوم إلى اللوحة الرئيسية. يوجد أيضًا رابط بين الدبوس المشترك للصفيف والأرض ، بحيث يمكن إيقاف تشغيل مصابيح LED. تم استبدال بوابة 74HC00 NAND بـ 78LS08 AND بوابة ، كما تم تغيير الأسلاك إلى البوابة. بوابة AND تعني أن 6522 يقع الآن عند 6000 دولار بدلاً من E000 دولار.

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

لقد استخدمت 20 دبوسًا 74HC373 للمزلاج لأن لدي بعضًا منه. كان هذا جيدًا عندما يكون على اللوح ، لكن 74HC573 متوافق مع الناقل وكان سيوفر الكثير من الأسلاك. يمكن أيضًا اعتبار UCN5801A وهو عبارة عن 22 دبوس IC في الدائرة ، لكن الأسلاك ستكون مختلفة قليلاً.

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

الدائرة المعدلة أعلاه (مع 74HC573).

الخطوة 1: البرامج التوضيحية

برامج مظاهرة
برامج مظاهرة

يتم تضمين برنامجين توضيحيين بسيطين في شاشة 6502 وكودهم المفكك هنا.

يقوم هذا البرنامج بتحميل 1 في السجل 6502 A ويخزنه في المزلاج. ثم يضيف 1 إلى السجل A ويخزن ذلك في المزلاج. ثم يقفز عائدًا إلى 1005 دولارات وتتكرر العملية إلى الأبد.

* = 1000

1000 A9 01 LDA # $ 01 1002 8D 00 41 STA $ 4100 1005 69 01 ADC # $ 01 1007 8D 00 41 STA $ 4100 100A 4C 05 10 JMP 1005100D. END

يقوم هذا البرنامج أولاً بتعيين DDR للمنفذ 6522 B للإخراج. ثم يخزن 55 دولارًا (B01010101) في المنفذ بالإضافة إلى المزلاج. ثم يدور السجل A خطوة واحدة يمينًا ويحمل الآن AA دولارًا (B10101010). يتم تخزين هذا مرة أخرى في المنفذ B والمزلاج. يعود البرنامج إلى 1005 دولارات ويستمر إلى الأبد.

* = 1000

1000 A9 FF LDA # $ FF 1002 8D 02 60 STA 6002 1005 A9 55 LDA # 55 1007 38 SEC 1008 8D 00 60 STA 6000100B 8D 00 41 STA $ 4100 100E 6A ROR A 100F 8D 00 60 STA 6000 1012 8D 00 41 STA 4100 1015 4C 05 10 جمب 1005 دولار أمريكي 1018. END

قد تلاحظ العيون الحادة بينك أن مصابيح LED الملونة تظهر نمطًا مختلفًا عن تلك الخضراء. هذا لأن الرصاص المشترك متصل بـ 5 فولت على الألوان الملونة والمشترك على الأخضر متصل بالأرض.

قم بتغيير سطر التعليمات البرمجية هذا إلى program2 أو program3.

setDataPins (program3 [offset]) ،

يعتبر المجمع 6502 و Disassembler أدوات مفيدة للمساعدة في ترميز البرامج الخاصة بك.

الخطوة 2: إضافة ذاكرة EEPROM

مضيفا EEPROM
مضيفا EEPROM
مضيفا EEPROM
مضيفا EEPROM
مضيفا EEPROM
مضيفا EEPROM

بالنسبة للوحة EEPROM ، استخدمت لوحة شريطية مقاس 950 × 650 مم ودبابيس رأس ذكر مقاس 19 مم لتمكين اللوحة من مسح اللوحة الموجودة تحتها. يتم توصيل هذه اللوحة بلوحة 6502 أدناه. EEPROM هو ATMEL 28C256 يحتوي على 28 دبوسًا ويحتوي على ذاكرة 32 كيلو × 8 بت. هذا أكثر من كافٍ للبرامج الصغيرة المستخدمة في الوقت الحاضر.

لم أقم بعمل رسم تخطيطي للدائرة لهذه اللوحة ، ولكن من السهل جدًا توصيلها بلوحة 6502 أدناه. رقائق EEPROM هذه ليست صديقة للحافلات ، لذا يجب توصيلها بمسامير فردية ، وبالتالي كل "السباغيتي الخضراء والبيضاء". لقد قمت بحل مشكلة التجسير على اللوحة السابقة عن طريق توصيل خطوط البيانات معًا على الجانب السفلي من اللوحة.

تتصل دبابيس العنوان الـ 14 الخاصة بـ EEPROM بالدبابيس المناسبة على الجانب الأيسر (الأسلاك الخضراء) ودبابيس الإدخال / الإخراج إلى دبابيس البيانات الموجودة على اليمين (الأسلاك البيضاء). يتم توصيل السن 27 (WE) بالدبوس 28 (5 فولت) ، والدبوس 22 (OE) متصل بالأرض والدبوس 20 (CE) متصل ببوابة NAND. اللوحة الرئيسية. هذا يعني أنه عندما يرتفع هذا الدبوس ، تعطي بوابة NAND إشارة منخفضة إلى دبوس CE الخاص بـ EEPROM مما يجعلها نشطة. مع هذا الإعداد ، فهذا يعني أنه لا يمكن قراءة EEPROM إلا بواسطة 6502.

نظرًا لأن EEPROM يعيش في أعلى 32 كيلو بايت على خريطة الذاكرة ، فهذا يعني أن $ FFFC و $ FFFD يمكنهما الاحتفاظ بعنوان البداية لـ 6502 بعد إعادة تعيينه. نظرًا لأن عناوين 6522 تتراوح بين 6000 دولار و 600 دولار أمريكي والمزلاج بسعر 4100 دولار ، فإنه يوقف أي تعارض في الذاكرة.

يمكن أيضًا كتابة متجه NMI ($ FFFA و $ FFFB) ومتجه BRK / IRQ ($ FFFE anf $ FFFF) بنفس الطريقة.

الخطوة 3: برمجة EEPROM

برمجة EEPROM
برمجة EEPROM
برمجة EEPROM
برمجة EEPROM

لتخزين برنامج على EEPROM ، يحتاج إلى مبرمج. لقد صنعت واحدة من لوحة شريطية ، و Arduino Pro Mini ، وزوجين من 74HC595 ومقبس ZIF. في الأصل ، تم تصميم المبرمج لـ AT28C16 الذي يحتوي على عدد أقل من سطور العنوان مقارنةً بـ AT28C256 ، لذا كان لا بد من تعديله.

يوضح الرسم البياني للدائرة كيفية توصيل كل من هاتين EEPROMs. ليس من الواضح من الصورة أن شريحتين 595 مقلوبتين وليس كما هو موضح في الرسم التخطيطي. تصطف الدبابيس 1 إلى 7 من 595/1 مع A1 إلى A7 من EEPROM بغض النظر عن المستخدم. هذا يوفر 7 أسلاك توصيل. تبدو اللوحة الآن ضيقة بعض الشيء وهذا لأنني استخدمت في الأصل مقبس DIL ذو 24 سنًا والذي تم استبداله الآن بمقبس ZIF 28 دبوسًا أكبر بكثير.

تم تضمين برنامج يعمل مع لوحتي. سيعمل البرنامج مع أي Arduino و 595s في دائرة كما هو موضح. لقد اخترت 5v Pro Mini لأنه صغير الحجم ورخيص بما يكفي لتركه في الإعداد.

الخطوة 4: برامج EEPROM

برامج إيبروم
برامج إيبروم

هناك ثلاثة برامج بسيطة في مبرمج EEPROM. لاستخدامها ، ما عليك سوى إلغاء التعليق على السطر الذي تريد استخدامه.

// قراءة من المنفذ A من 6522

// بيانات بايت const = {0xA9 ، 0x00 ، 0x8D ، 0x03 ، 0x60 ، 0xAD ، 0x01 ، 0x60 ، 0x4C ، 0x05 ، 0x90 ، 0x00} ؛

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

// eraseEEPROM (422، 930، 0x41) ؛ // استخدم لمحو EEPROM بالكامل أو جزء منه - البداية ، النهاية ، البايت

Serial.println ("برمجة EEPROM") ؛ المبلغ = program_numeric_data (0x1000) ؛ الكتابة EEPROM (0x7ffc ، 0x00) ؛ // تعيين FFFC $ لـ 6502 writeEEPROM (0x7ffd ، 0x90) ؛ // تعيين $ FFFD لـ 6502 // writeEEPROM (0x1000 ، 0xA9) ؛ // اكتب 1 بايت من البيانات Serial.println ("تم") ؛ مخطط السلسلة = "مكتوب" + مقدار (سلسلة) + "بايت" ؛ Serial.println (مخطط) ؛ Serial.println ("قراءة EEPROM") ؛ محتويات الطباعة (0x0000 ، 0x112f) ؛ // تعيين النطاق لعرض محتويات الطباعة (0x7ff0 ، 0x7fff) ؛ // يقرأ آخر 16 بايت على EEPROM

خرج موجز من البرنامج أعلاه.

الخطوة 5: تشغيل 6502 من EEPROM

تشغيل 6502 من EEPROM
تشغيل 6502 من EEPROM
تشغيل 6502 من EEPROM
تشغيل 6502 من EEPROM
تشغيل 6502 من EEPROM
تشغيل 6502 من EEPROM

يمكن الآن إدخال EEPROM المبرمج في اللوح الخاص به وهذا ظهر على ظهره على اللوحة الرئيسية 6502 التي تعود إلى MEGA. توضح صور الرؤية الجانبية والعلوية أعلاه كيف تتناسب جميعها معًا.

يمكن لـ 6502 الآن قراءة متجه البداية من $ FFFC و $ FFFD (وهو 9000 دولار) ثم الانتقال إلى البرنامج المخزن هناك. لا يزال MEGA يوفر إشارة الساعة ويحتاج برنامجه إلى التغيير لتوفير إشارة الساعة فقط ومراقبة 6502. يتم توفير برنامج معدل للقيام بذلك.

تظهر الصورة قيد التشغيل هذا البرنامج قيد التشغيل.

9000 LDA # $ 00 A9 00

9002 دولار STA 6003 8D 03 60 9005 LDA # $ FF A9 FF 9007 STA 6002 8D 02 60900A LDA 6001 إعلان 01 60900D STA 6000 8D 00 60 9010 EOR # $ FF 49 FF 9012 STA 4100 8D 00 41 9015 JMP 900A 4C 0A 90

يتم توصيل المفاتيح بالمنفذ A ويعرض البرنامج القيمة التي يقرأها على المنفذ B و 74HC373 (المحجوب حاليًا). المفاتيح متصلة بالأرض ومصابيح LED موصولة بجهد 5 فولت. يصحح EOR # $ FF مشكلة المزلاج والمنفذ B الذي يعرض أنماطًا مختلفة عن طريق قلب البتات قبل الكتابة إلى المزلاج.

الخطوة 6: إشارة الوقت الخارجية

إشارة الوقت الخارجية
إشارة الوقت الخارجية

إذا تم تطبيق إشارة الساعة على الدبوس الموجود أعلى اللوحة ، فيمكن الآن تشغيل 6502 بشكل مستقل عن MEGA. بالطبع يحتاج أيضًا إلى مصدر طاقة. لقد جربت ساعات مختلفة وقمت بتشغيل 6502 بسرعة 1 ميجاهرتز باستخدام مذبذب بلوري. لا يمكن لـ MEGA مواكبة السرعات الأعلى ، لذا يجب إزالتها.

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

ما زلت أبحث عن طرق مختلفة للحصول على إشارة الساعة.

الخطوة 7: الخاتمة

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

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

لمزيد من تطوير هذا الكمبيوتر ، أعتزم وضع 2k من SRAM بسعر 0000 دولار إلى 2047 دولارًا وإضافة مذبذب 1 ميجاهرتز. من المحتمل أن تضيف شيئًا مثل CD4040 (عداد / مقسم ثنائي تموج ثنائي المرحلة 12) حتى أتمكن من الاستفادة من سرعات مختلفة على مدار الساعة.

قد يضيف أيضًا شاشة LCD لإعطاء مخرجات نصية بدلاً من مجرد الأضواء الوامضة. سيحتاج مبرمج EEPROM أيضًا إلى التعديل للتعامل مع البرامج الأكبر اللازمة لتشغيل شاشة LCD.

على الرغم من أن MEGA أصبح غير ضروري لتشغيل 6502 ، إلا أنه لا يزال مفيدًا لتصحيح رمز الجهاز. كما يعلم أي شخص ، يحتوي كود الآلة دائمًا على أخطاء!

موصى به: