Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
commodore.gen.trGenel KategoriProjePS2 Dualshock to C64 Mod
Sayfa: [1] 2 3 4   Aşağı git
Yazdır
Gönderen Konu: PS2 Dualshock to C64 Mod  (Okunma Sayısı 2936 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
ksercan5
Üye
***
Mesaj Sayısı: 179


80ler candır... Commodore fan since ‘86


Üyelik Bilgileri WWW
« : Mart 23, 2020, 20:44:55 ÖS »

Merhaba,
Evde oturmak zorunda kaldığımız şu günlerde kendimi retro projelerine verdim. PS2 Dualshock kontrolcüyü C64 de kullanmak istiyorum. Aşağıdaki linkte bunun için yazılmış bir Arduino kütüphanesi var.

http://www.billporter.info/2010/06/05/playstation-2-controller-arduino-library-v1-0/

Örnek kod ve açıklamalar ile aşağıdaki gibi bir prototip oluşturdum. Çalıştığını gördükten sonra Arduino pro mini kullanmak istiyorum. Son durum şöyle:

PS2 den arduinoya giden kısım tamam. Cihaz çalışıyor ve serial monitor'da tüm tuşları kontrol ediyorum. Ama C64'e bağladığımda klavye ile çakışma oluyor. Bazı tuşlar joystick takılınca çalışmıyor. Arduino dosyası da ektedir. Üstatlarımdan yardım rica ederim. Saygılar ve sağlıklı günler dilerim. 



* Ps2_to_C64_bb.jpg (602.83 KB, 2475x1182 - Görüntüleme: 113 kez.)
* C64_Joystick_Project_V0_1.zip (2.56 KB - Yükleme: 19 kez.)
Logged

A500 - Rev6 - 1Mb RAM - Sent as gift
A500 - Rev5 - 1Mb RAM - GOTEK - Restoration in progress
C64C - Multikernel cart - TapeCartSD - Pi1541
C64C - Restored
seco.gen.tr
yavuzg
Genel Yönetici
*****
Mesaj Sayısı: 5.251



Üyelik Bilgileri
« Yanıtla #1 : Mart 23, 2020, 21:01:26 ÖS »

O şemadan DB9 bağlantılarının tam olarak hangi Arduino pine gittiği çok belli değil. Arduino GND DB9'un pin 8'ine gitmeli ancak o şemada sanki pin 9'a bağlanmış gibi. Eğer öyleyse yanlış. Umarım öyle değildir zira SID çipine zarar verme ihtimali var ki orası analog pin ve direk SID çipine gider
Logged

ksercan5
Üye
***
Mesaj Sayısı: 179


80ler candır... Commodore fan since ‘86


Üyelik Bilgileri WWW
« Yanıtla #2 : Mart 23, 2020, 21:04:14 ÖS »

O şemadan DB9 bağlantılarının tam olarak hangi Arduino pine gittiği çok belli değil. Arduino GND DB9'un pin 8'ine gitmeli ancak o şemada sanki pin 9'a bağlanmış gibi. Eğer öyleyse yanlış. Umarım öyle değildir zira SID çipine zarar verme ihtimali var ki orası analog pin ve direk SID çipine gider

Evet ben de anlaşılmayabileceğini tahmin ettim. DB9 pin 8 gnd'a, pin 6'da arduino D7 ye bağlı. DB9 da 5,7 ve 9 boşta. 7'yi daha sonra arduinoyu beslemek için kullanmak istiyorum.
Logged

A500 - Rev6 - 1Mb RAM - Sent as gift
A500 - Rev5 - 1Mb RAM - GOTEK - Restoration in progress
C64C - Multikernel cart - TapeCartSD - Pi1541
C64C - Restored
seco.gen.tr
yavuzg
Genel Yönetici
*****
Mesaj Sayısı: 5.251



Üyelik Bilgileri
« Yanıtla #3 : Mart 23, 2020, 21:32:43 ÖS »

DB9'a doğru yerden bakarak sayıyorsun değil mi? Yani C64 port'una dışarıdan bakarken en sol üst köşedeki pin 1 dir.

Bağlantılarının gerçek fotoğraflarını gösterirsen hatayı daha kolay buluruz.

Bu arada illaki bir hata vardır zira anlattıklarına bakılırsa digital pinlerle klavyenin bir alakası yoktur yani Arduino kodu bile sorunlu olsa klavye problemi yaşamaman lazım. Ancak analog hatlara (pin 5, pin 9) potansiyometre dışında bir sinyal bağladıysan analogları kontrol eden multiplexer sapıtıyor olabilir ki bu multiplexer CIA'a bağlı ve hangi portun okunması gerektiğini ayarlarken arada klavye matrisini de tarar...

Bu arada Arduino'yu DB9'dan gelen +5V ile beslememelisin. O pin'in maksimum besleme akımı 100mA. Fazla akım çekersen C64'e zarar verirsin.
Logged

AmigaEsref
Genel Yönetici
*****
Mesaj Sayısı: 5.277


love is better than


Üyelik Bilgileri WWW
« Yanıtla #4 : Mart 23, 2020, 21:38:30 ÖS »

Bu amiga ama sanırım c64 ile aynı şema belki işinize yarar.

https://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=18064.0;attach=35255;image
Logged

AMIGA 500 | GOTEK | 1 MB RAM | 1.3 ROM | HDMI-520
AMIGA 1200 | 8GB CF  | 3.1 ROM | 8 MB RAM | HDMI-520
COMMODORE 64 | IRQHack64 | KissCart64 | Pi1541 | 64K CUPCAKE-CART | 1084 S
ksercan5
Üye
***
Mesaj Sayısı: 179


80ler candır... Commodore fan since ‘86


Üyelik Bilgileri WWW
« Yanıtla #5 : Mart 23, 2020, 21:39:02 ÖS »

Evet pinler doğru, zaten joystick kontrol programını yükleyip joysticki bağlayınca tüm yönlerin ve fire tuşunun çalıştığını görüyorum. Ama klavyede sorunlar oluyor ayrıca ekranda da ufak bir parazit görüyorum bağlayınca. Fotoğraf koyamıyorum çünkü jumper kablolar çok karışık. Birşey anlaşılmıyor uzaktan bakınca

Arduino pro mini kullancağım, max 200mA çeker diyor, o zaman dışarıdan beslemek lazım sanırım
Logged

A500 - Rev6 - 1Mb RAM - Sent as gift
A500 - Rev5 - 1Mb RAM - GOTEK - Restoration in progress
C64C - Multikernel cart - TapeCartSD - Pi1541
C64C - Restored
seco.gen.tr
ksercan5
Üye
***
Mesaj Sayısı: 179


80ler candır... Commodore fan since ‘86


Üyelik Bilgileri WWW
« Yanıtla #6 : Mart 23, 2020, 21:40:19 ÖS »

Bu amiga ama sanırım c64 ile aynı şema belki işinize yarar.

https://www.commodore.gen.tr/forum/index.php?action=dlattach;topic=18064.0;attach=35255;image

Aynen sadece fire2 yerine pot var c64'de farklı olarak.
Logged

A500 - Rev6 - 1Mb RAM - Sent as gift
A500 - Rev5 - 1Mb RAM - GOTEK - Restoration in progress
C64C - Multikernel cart - TapeCartSD - Pi1541
C64C - Restored
seco.gen.tr
AmigaEsref
Genel Yönetici
*****
Mesaj Sayısı: 5.277


love is better than


Üyelik Bilgileri WWW
« Yanıtla #7 : Mart 23, 2020, 21:46:35 ÖS »

Evet pinler doğru, zaten joystick kontrol programını yükleyip joysticki bağlayınca tüm yönlerin ve fire tuşunun çalıştığını görüyorum. Ama klavyede sorunlar oluyor ayrıca ekranda da ufak bir parazit görüyorum bağlayınca. Fotoğraf koyamıyorum çünkü jumper kablolar çok karışık. Birşey anlaşılmıyor uzaktan bakınca

Arduino pro mini kullancağım, max 200mA çeker diyor, o zaman dışarıdan beslemek lazım sanırım
Kalem pil çözer gibi abi o işi. Devre işlerini ustalar daha iyi bilir. Belki 7. pinden voltajı alıp, GND üzerinden besleme sağlanabilir. Atıyorum bu konu hakkında bilgim olmadığı için

Belki bir işe yarar buda dursun;(Farklı marka kalem pillerin mA cinsinden verdikleri değerler)
https://store.donanimhaber.com/85/b9/35/85b935bac99e6413c047a36f0d408467.JPG?utm_campaign=DonanimHaber&utm_medium=referral&utm_source=DonanimHaber
« Son Düzenleme: Mart 23, 2020, 21:50:21 ÖS Gönderen: AmigaEsref » Logged

AMIGA 500 | GOTEK | 1 MB RAM | 1.3 ROM | HDMI-520
AMIGA 1200 | 8GB CF  | 3.1 ROM | 8 MB RAM | HDMI-520
COMMODORE 64 | IRQHack64 | KissCart64 | Pi1541 | 64K CUPCAKE-CART | 1084 S
ksercan5
Üye
***
Mesaj Sayısı: 179


80ler candır... Commodore fan since ‘86


Üyelik Bilgileri WWW
« Yanıtla #8 : Mart 23, 2020, 21:48:05 ÖS »

Evet pinler doğru, zaten joystick kontrol programını yükleyip joysticki bağlayınca tüm yönlerin ve fire tuşunun çalıştığını görüyorum. Ama klavyede sorunlar oluyor ayrıca ekranda da ufak bir parazit görüyorum bağlayınca. Fotoğraf koyamıyorum çünkü jumper kablolar çok karışık. Birşey anlaşılmıyor uzaktan bakınca

Arduino pro mini kullancağım, max 200mA çeker diyor, o zaman dışarıdan beslemek lazım sanırım
Kalem pil çözer gibi abi o işi. Devre işlerini ustalar daha iyi bilir. Belki 7. pinden voltajı alıp, GND üzerinden besleme sağlanabilir. Atıyorum bu konu hakkında bilgim olmadığı için

Besleme kalsın sadece sıkıntı değil üstat, bir şekilde elektrik veririm ona ben

Aslında anladığım kadarı ile pinler ile gnd arasında bağlantı kurulduğunda joystick görev yapıyor, ben de ps2 deki tuşa basılıp basılmadığını arduino ile kontrol edip basılmış ise ilgili pini LOW yapıyorum, basılmamış ise HIGH'da kalıyor. Mantık hatası mı yapıyorum acaba?
« Son Düzenleme: Mart 23, 2020, 21:50:18 ÖS Gönderen: ksercan5 » Logged

A500 - Rev6 - 1Mb RAM - Sent as gift
A500 - Rev5 - 1Mb RAM - GOTEK - Restoration in progress
C64C - Multikernel cart - TapeCartSD - Pi1541
C64C - Restored
seco.gen.tr
fort_apocalypse
Uzman
*****
Mesaj Sayısı: 1.616


Oturalım evimizde, hastalık yayılmasın.


Üyelik Bilgileri WWW
« Yanıtla #9 : Mart 23, 2020, 22:07:25 ÖS »

Kuplaj yapmayı denediniz mi? Mesela 2 adet 74HC4066 ile DB9'un GND ve kontrol pinleri arasındaki anahtarlamayı arduinodan izole edebilirsiniz. Ben Amiga elektronik booter devrede bu şekilde anahtarlama yapmıştım.

Not: 74HC4066, 4066 entegreden daha kararlı çalıştığı için 74HC4066 tercih etmiştim, belki 4066 da işinizi görebilir. "586220 Diagnostic harvest" devrede de 2 adet 4066 mevcut. Bir çipte 4 anahtar mevcut, 5. anahtar için 2 adet gerekecek.


* pin-assignment-of-74hc4066.jpg (43.64 KB, 1000x819 - Görüntüleme: 64 kez.)
« Son Düzenleme: Mart 23, 2020, 22:14:00 ÖS Gönderen: fort_apocalypse » Logged

Oturalım evimizde, hastalık yayılmasın....
ksercan5
Üye
***
Mesaj Sayısı: 179


80ler candır... Commodore fan since ‘86


Üyelik Bilgileri WWW
« Yanıtla #10 : Mart 23, 2020, 22:16:52 ÖS »

Kuplaj yapmayı denediniz mi? Mesela 2 adet 74HC4066 ile DB9'un GND ve kontrol pinleri arasındaki anahtarlamayı arduinodan izole edebilirsiniz. Ben Amiga elektronik booter devrede bu şekilde anahtarlama yapmıştım.

Not: 74HC4066, 4066 entegreden daha kararlı çalıştığı için 74HC4066 tercih etmiştim, belki 4066 da işinizi görebilir. "586220 Diagnostic harvest" devrede de 2 adet 4066 mevcut. Bir çipte 4 anahtar mevcut, 5. anahtar için 2 adet gerekecek.

Sinan hocam ben de böyle bir şey düşünüyordum ama elektronik bilgim iyi olmadığı için tabi varlığından haberdar değildim. Bence bu işi çözer gibi. Teşekkür ediyorum.  Kahkaha
Logged

A500 - Rev6 - 1Mb RAM - Sent as gift
A500 - Rev5 - 1Mb RAM - GOTEK - Restoration in progress
C64C - Multikernel cart - TapeCartSD - Pi1541
C64C - Restored
seco.gen.tr
fort_apocalypse
Uzman
*****
Mesaj Sayısı: 1.616


Oturalım evimizde, hastalık yayılmasın.


Üyelik Bilgileri WWW
« Yanıtla #11 : Mart 23, 2020, 22:22:15 ÖS »

Rica ederim, bir şey değil.
Logged

Oturalım evimizde, hastalık yayılmasın....
yavuzg
Genel Yönetici
*****
Mesaj Sayısı: 5.251



Üyelik Bilgileri
« Yanıtla #12 : Mart 23, 2020, 22:49:01 ÖS »

İlgili PSX butonu basılınca DB9'a giden lgili arduino pin'lerini LOW yapmak doğru. Ancak PSX butonuna basılmayınca DB9'a ne gidiyor? HIGH mı? Eğer öyleyse farklı bir +5V kaynağından sinyal göndermeniz C64 CIA çipi ve Arduino arasında voltaj farkı yaratıp sorun çıkartır.

Bunun yerine ya fort_apocalypse'in önerdiği gibi solid-state röle entegresini kullanabilirsiniz ya da bunu yazılımda çözebilirsiniz.

Eğer ilgili pin'i HIGH yapmak yerine yönünü Input'a çevirirseniz pin High-Z durumuna geçer. Yani hiçbir voltaj vermeden yüksek empedans moduna geçer. Yani açık devre olur. Bu sayede Arduino ve C64'ü izole etmiş olursunuz.

Bu genelde voltaj uyumu olmayan iki devre arasında kullanılan bir yöntemdir (örn. 3.3V sistem - 5V Arduino/AVR vs arasında).  

Örnek:

if (ps2x.ButtonPressed(PSB_PAD_DOWN)) {
      Serial.println("Pad Down pressed");
      pinMode(5, OUTPUT);      
      digitalWrite(5, LOW);
    }

...


if (ps2x.ButtonReleased(PSB_PAD_DOWN)) {
      Serial.println("Pad Down Released");
      pinMode(5, INPUT);      
    }
Logged

yavuzg
Genel Yönetici
*****
Mesaj Sayısı: 5.251



Üyelik Bilgileri
« Yanıtla #13 : Mart 23, 2020, 23:01:46 ÖS »

Bir de kodun baş tarafındaki pin 3,4,5,6 ve 7'yi OUTPUT'a set eden pinmode'ları kaldırın ya da INPUT'a çevirin.
Logged

ksercan5
Üye
***
Mesaj Sayısı: 179


80ler candır... Commodore fan since ‘86


Üyelik Bilgileri WWW
« Yanıtla #14 : Mart 23, 2020, 23:19:03 ÖS »

Tamam hocam, deneyip paylaşırım sonucu, teşekkür ederim
Logged

A500 - Rev6 - 1Mb RAM - Sent as gift
A500 - Rev5 - 1Mb RAM - GOTEK - Restoration in progress
C64C - Multikernel cart - TapeCartSD - Pi1541
C64C - Restored
seco.gen.tr
Sayfa: [1] 2 3 4   Yukarı git
Yazdır
Gitmek istediğiniz yer: