جدول المحتويات:
- الخطوة 1: البرامج التوضيحية
- الخطوة 2: إضافة ذاكرة EEPROM
- الخطوة 3: برمجة EEPROM
- الخطوة 4: برامج EEPROM
- الخطوة 5: تشغيل 6502 من EEPROM
- الخطوة 6: إشارة الوقت الخارجية
- الخطوة 7: الخاتمة
فيديو: 6502 كمبيوتر صغير (مع Arduino MEGA) الجزء 3: 7 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:38
المضي قدمًا ، لقد أضفت الآن 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 ، استخدمت لوحة شريطية مقاس 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 ، يحتاج إلى مبرمج. لقد صنعت واحدة من لوحة شريطية ، و 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
يمكن الآن إدخال 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 ، إلا أنه لا يزال مفيدًا لتصحيح رمز الجهاز. كما يعلم أي شخص ، يحتوي كود الآلة دائمًا على أخطاء!
موصى به:
كمبيوتر لوحي صغير للرسومات بقيمة 2 دولار: 4 خطوات
جهاز لوحي رسومات صغير بقيمة 2 دولار: TOUCHPAD HACK - كيفية تحويل لوحة اللمس إلى جهاز لوحي رسومات صغير مفيد مع بعض العناصر اليومية البسيطة للحصول على فيديو كامل ، يرجى زيارة الموقع: //www.metacafe.com/watch/777196/2_mini_graphics_tablet
6502 و 6522 الكمبيوتر الأدنى (مع Arduino MEGA) الجزء 2: 4 خطوات
6502 و 6522 Minimal Computer (مع Arduino MEGA) الجزء 2: متابعة من Instructable السابق ، لقد قمت الآن بوضع 6502 على لوحة شريطية وأضفت محول واجهة متعدد الاستخدامات 6522 (VIA). مرة أخرى ، أستخدم إصدار WDC من 6522 ، حيث إنه مطابق تمامًا لـ 6502. لا يقتصر الأمر على استخدام هذه الإصدارات الجديدة
6502 كمبيوتر صغير (مع Arduino MEGA) الجزء 1: 7 خطوات
6502 Minimal Computer (مع Arduino MEGA) الجزء 1: ظهر المعالج الدقيق 6502 لأول مرة في عام 1975 وصممه فريق صغير بقيادة Chuck Peddle لـ MOS Technology. في ذلك الوقت ، تم استخدامه في وحدات تحكم الفيديو وأجهزة الكمبيوتر المنزلية بما في ذلك Atari و Apple II و Nintendo Entertainment System و BBC Micr
كمبيوتر محمول خشبي صغير: 7 خطوات (مع صور)
كمبيوتر محمول خشبي صغير: كنت في MakersCentral في إنجلترا مؤخرًا وزرت كشك pimoroni @ واشتريت 4 & quot؛ شاشة تعمل باللمس لـ Raspberry pi تسمى HyperPixel 4.0. إنها 800x480px 4 & quot؛ شاشة متعددة اللمس. التفكير في مشروع لاستخدامه بسرعة
كمبيوتر جيب صغير ورخيص الثمن يمكن برمجته في أي مكان: 5 خطوات
كمبيوتر جيب صغير ورخيص يمكن برمجته في أي مكان: يمكنك تحويل CardKB إلى كمبيوتر جيب! كمبيوتر جيب كامل لـ CardKB باستخدام شاشة ArduinoBaisc و CardKB و I2C OLED. نظرًا لأن BASIC تستخدم ArduinoBasic (https://github.com/robinhedwards/ArduinoBASIC) ، فهي تدعم جميع الوظائف العادية تقريبًا مثل