Jumat, 16 September 2011

Interfacing Joystick PlayStation (AVR) Bag 2 (Software)

Setelah anda membaca bagianyang pertama (persiapan hardware), sekarang mari kita lihat bagaimana cara membuat program di uC untuk membaca data dan mengirimkan perintah dari/ke JoyStick PlayStation.
Yang harus dipersiapkan :
  1. 1 unit komputer
  2. Software CodeVision-AVR
Langkah-langkah :
  1. Buka CodeVision anda
  2. Gunakan CodeWizard untuk setting I/O anda sesuai dengan kebutuhan anda.
  3. Lalu pilih menu File->Generate, save, and Exit.
  4. Tambahkan baris berikut ke dalam source code anda :


#include <spi.h>
#define psxatn PORTC.4 // Sesuaikan dengan desain Hardware anda
unsigned char byte4, byte5, byte6, byte7, byte8, byte9; // Deklarasikan sebagai variabel global
  1. Tambahkan baris inisialisasi awal SPI berikut pada fungsi main anda (void main())
// SPI initialization
// SPI Type: Master
// SPI Clock Rate: 62,500 kHz
// SxPI Clock Phase: Cycle Half
// SPI Clock Polarity: High
// SPI Data Order: LSB First
SPCR=0x7E;

SPSR=0×00;
  1. Buat fungsi berikut untuk membaca (pooling) data dari PSX:
void readPSX(){
psxatn = 0;
spi(0×01);
spi(0×42);
spi(0×00);
byte4 = spi(0×00);
byte5 = spi(0×00);
byte6 = spi(0×00);
byte7 = spi(0×00);

byte8 = spi(0×00);
byte9 = spi(0×00);
psxatn = 1;
}
  1. Setelah anda memanggil fungsi readPSX() maka variabel byte4, byte5, byte6, byte7, byte8, dan byte9 akan berisi data dengan rincian sebagai berikut :
  1. Perlu diingat bahwa pada saat idle pin psxatn dalam keadaan high. Untuk menandai bahwa komunikasi akan dimulai maka pin ini harus diberi logika low, kemudian akan terjadi pertukaran data seperti di atas. Untuk mengakhiri high kan kembali pin psxatn.
Terima kasih, selamat mencoba.

Interfacing Joystick PlayStation (AVR) Bag 1 (Hardware)

PlayStation adalah salah satu konsol game yang sudah sangat memasyarakat. Sehingga kebanyakan dari kita tentunya sudah sangat lincah dalam menggunakan JoyStick nya. Dan ternyata Stick PS ini tidak hanya bisa digunakan untuk bermain game di konsol PS saja. Kita dapat menggunakannya sebagai kontroler untuk berbagai macam alat, dan tentu saja dengan bantuan Mikrokontroler (uC).
Anda tidak perlu membongkar Stick PS untuk dapat menggunakannya sebagai kontroler. Karena setelah diselidiki ternyata JoyStick  ini menggunakan komunikasi Serial (SPI).
Kali ini saya mengajak anda untuk sedikit mengexplorasi bagaimana cara interfacing Stick PS dengan menggunakan Mikrokontroler AVR. Pada bagian ini hanya akan dibahas rancangan hardware-nya.
Yang harus dipersiapkan :
  1. Stick PS (tidak harus baru, tapi harus masih berfungsi)
  2. Konektor Stick PS (Bisa dibeli di tempat service konsol PS)
  3. Rangkaian Mikrokontroler AVR yang berfungsi
Pertama-tama mari kita lihat PinOut (susunan kabel / pin) dari JoyStick PS.

PSX PinOuts
Pin yang digunakan adalah :
  1. Kabel Cokelat (DAT) digunakan untuk transfer bit-bit data dari Stick ke uC (DAT).
  2. Kabel Oranye ( CMD) digunakan untuk transfer bit-bit perintah (Command) dari uC ke Stick (CMD).
  3. Kabel Hitam (GND) => Ground
  4. Kabel Merah (VCC) => Power untuk JoyStick. Jika yang digunakan adalah Stick asli Sony supply tegangan 3.3V. Jika yang digunakan adalah Stick biasa supply tegangan mulai dari 3.3 V – 5.0 V
  5. Kabel Kuning (ATT) => digunakan untuk memberitahu Stick apakah akan ditransfer data atau tidak. Jika diberi logika 1 (Satu) berarti idle, jika diberi logika 0 (Nol) berarti uC akan mentranser data.
  6. Kabel Biru (CLK) => digunakan untuk input clock dari uC yang dibutuhkan untuk transfer data.
Sekarang mari kita lihat bagaimana cara menghubungkan pin-pin tersebut ke uC.

R220 Ohm yang digunakan pada rangkaian hanyalah sebagai pengaman saja, boleh juga tidak dipakai.  R 4K7 Ohm digunakan untuk Pull up data (wajib). Nah, sekarang pertanyaannya : Haruskah konfigurasi pin seperti itu ???? Jawabannya adalah IYA kecuali pin ATT (boleh pin I/O mana saja), karena kita akan menggunakan library bawaan CodeVision AVR yaitu spi.h yang akan kita bahas pada bagian selanjutnya.
Untuk itu selesailah hardware untuk Interfacing JoyStick PlayStation.

Sampai jumpa di bagian berikutnya.

Selamat belajar ^o^