PENDAHULUAN
P
|
engendali
mikro (microcontroller) adalah sistem mikroprosesor lengkap yang
terkandung di dalam sebuah chip. Mikrokontroler berbeda dari mikroprosesor
serba guna yang digunakan dalam sebuah personal computer karena sebuah
mikrokontroler umumnya telah berisi komponen pendukung sistem minimal
mikroprosesor, yakni memori dan antarmuka I/O. Untuk mengontrol robot, maka
digunakan mikrokontroler dengan pertimbangan faktor ukuran yang relatif kecil
sehingga cocok untuk pengontrol robot.
Pada
prinsipnya mikrokontroler adalah mikroprosesor yang diprogram dengan bahasa
assembly dan dirancang sebagai pengendali bukan untuk komputasi. Kontroler
adalah rangkaian elektronik berbasis mikroprosesor yang berfungsi sebagai
pengatur seluruh komponen dalam membentuk fungsi kerja.
LATAR BELAKANG
Mikrokontroler,
jika diterjemahkan secara harfiah, berarti pengendali yang berukuran mikro.
Sekilas mikrokontroler hampir sama dengan mikroprosesor. Namun mikrokontroler
memiliki banyak komponen yang terintegrasi di dalamnya, misalnya timer/counter.
Sedangkan pada mikroprosesor, komponen tersebut tidak terintegrasi.
Mikroprosesor umumnya kita jumpai pada komputer dimana tugas dari mikroprosesor
adalah untuk memproses berbagai macam data input maupun output dari
berbagai sumber. Mikrokontroler lebih sesuai untuk tugas-tugas yang lebih
spesifik.
ISI
Antarmuka Joystick PlayStation
AVR Menggunakan CVAVR
S
|
aat ini tampaknya tidak ada orang yang
tidak kenal PlayStation sebagai game console yang paling populer di Indonesia.
Tentunya kebanyakan dari kita sudah sangat terbiasa menggunakan joystick PS,
baik yang analog dan digital. Untuk itu akan menjadi suatu keuntungan
tersendiri jika dapat dibuat robot yang menggunakan joystick PS sebagai
kontroler karena sudah tidak asing lagi, mudah untuk digunakan, terdapat 16
tomboldan terdapat 4 jalur analog. pertama kali mencoba untuk menggunakan
joystick PS ini setelah membaca artikel dari Jon Williams berjudul PlayStation
pada Nuts & Volts of Basic Stamps volume 4 yang juga terdapat pada CD
bawaan dari Parallax. Pada artikel tersebut diterangkan cara untuk mengakses
data dari joystick PS menggunakan mikrokontroler Basic Stamp 2. Waktu itu saya
mengikuti langkah-langkah yang terdapat pada artikel tersebut dan berhasil
menampilkan data tombol yang ditekan pada joystick PS pada PC. Tulisan yang
saya buat ini sebagian besar bersumber dari artikel Jon Williams tersebut,
tentunya dengan penyesuaian dan penjelasan tambahan karena mikrokontroler yang
digunakan berbeda, yaituATMega8535. Bahasa pemrograman yang digunakan adalah
CVAVR, karena nampaknya saat ini pemrograman ini cukup banyak digunakan (di
Indonesia).
Antarmuka
Joystick PlayStation Dengan Mikrokontroler AVR Menggunakan CVAVR 2
Rangkaian yang menghubungkan
joystick PS2 cukupsederhana, hanya memerlukan beberapa resistor, yang terdiri
dari 3 resistor 220Ωyang berfungsi sebagai pengaman dan 1 buah resistor 4k7
sebagai pullup. Bahkan sebetulnya PsxCmd, PsxClock, dan PsxAttn dapat langsung
dihubungkan tanpa resistor sama sekali, namun tidak ada salahnya berjaga-jaga
untuk melindungi jalur I/O keduanya (catatan : biasanya pada pin Basic Stamp
memang sangat dianjurkan menggunakan resistor pembatas arus sebagai pengaman).
Pin PsxDat, serta PsxAck jika digunakan, harus diberi resistor pullup karena
bersifatopen collector. Dari mikrokontroler ATMega 8535 dibutuhkan 4 pin, 3
sebagai output (PB7/SCK, PB5/MOSI, dan PB4) serta 1 pin sebagai input
(PB6/MISO).
Pemilihan pin disesuaikan dengan
jalur SPI yang dapat dilihat pada datasheet masing-masing mikrokontroler.
Kabel abu-abu dihubungkan dengan
catu daya 9V hanya jika motor getar akan diaktifkan. Sebagai catatan, rangkaian
ini sedikit berbeda dengan rangkaian pada artikel Jon Williams, karena di sana
jalur PsxClock harus diinvert untuk menyesuaikan denganperintah
shiftin/shiftout pada Basic Stamp. Pada setiap joystick PS terdapat kontroler
yang bertugas untuk berkomunikasi dengan console PS. Komunikasi yang digunakan
adalah serial sinkron, yaitu data dikirim satu per satu melalui jalur data.
Untuk mengkoordinasikan antara pengirim dan penerima terdapat satu jalur clock.
Hal inilah yang membedakan serial sinkron dengan serial asinkron (UART/RS232)
yang dapat bekerja tanpa jalur clock karena masing-masing pedan penerima
mempunyai clock.
Komunikasi serial terdapat beberapa
macam, yang terkenal adalah
•I2C (Inter Integrated Circuit) atau
juga dikenal dengan 2 wire (TWI = Two Wire Interface)
•SPI (Serial Pheriperal Interface)
atau kadang-kadang disebut 3 Wire Interface.
Yang
digunakan pada joystick PS adalah komunikasi SPI. Awalnya saya sempat mengira
kalau SPI itu hanya digunakan untuk pemrograman mikrokontroler, tapi ternyata
penggunaannya banyak juga, misalnya untuk mengakses shift register74595/74165,
ADC0831, sensor temperatur DS1620, kompas H55B dan masih banyak peranti
lainnya.
Pada beberapa bahasa pemrograman
tingkat tinggi telah tersedia fungsi yang menunjang komunikasi SPI ini,
misalnya shiftin/shiftout pada Pbasic atau Bascom dan spi untuk CVAVR. Fungsi
spi pada CVAVR mempunyai kelebihan dibandingkan dengan fungsi shiftin/shiftout,
karena dapat mengirimkan sekaligus menerima data pada rentang waktu yang sama.
Untuk itulah dengan menggunakan CVAVR tidak perlu dibuat subrutin tambahan
seperti yang terdapat pada artikel Jon Williams. Pertukaran data antara
kontroler joystick PS dan mikrokontroler.
Untuk
mengawali komunikasi dengan joystick PS mikrokontroler megirim byte pertama
berupa perintah 0x01, kemudian byte kedua perintah 0x42 (baca data) sekaligus
menerima tipe joystick (0x41 untuk digital, 0x73 untuk analog) dari kontroler
joystick. Byte ketiga dan seterusnya mikrokontroler menerima data dari
kontroler joystick berturut-turut 0x5A (ready), data digital 1, dan data digital 2. Data digital ini bersifat
active low, jadi jika tidak ada tombol ditekan akan diterima data 0xff
(0b11111111). Jika joystick dalam kondisi operasi analog maka komunikasi
dilanjutkan dengan data analog 1, data analog 2, data analog 3, dan data analog
4, yang saat pada kondisi netral berupa data 0x7f (127) dengan nilai minimal 0
dan nilai maksimal 0xff (255). Saat operasi digital byte 6 – 9 selalu
memberikan data 0xff.
KESIMPULAN
J
|
oystick PS2 adalah sebuah media pengendali robot yang
cukup handal. Dibandingkan dengan PC Keyboard yang kurang fleksibel dan keypad
yang mempunyai jumlah tombol terbatas media ini jauh lebih sesuai. Namun
berbeda dengan PC Keyboard maupun keypad, joystick membutuhkan masukkan perintah
terlebih dahulu untuk mengirimkan datanya.
Pada saat mikrokontroler ingin mengambil data dari
joystick maka mikrokontroler harus memberitahu joystick bahwa datanya akan
diambil dengan memberikan logika 0 pada pin ATT dan mengirimkan data
sebagai perintah mulai atau start command (0×01).
Setelah perintah mulai diterima oleh joystick maka
joystick akan mengirim data yang menunjukkan ID dari joystick ( 0×41 untuk
joystik digital dan 0×73 untuk joystick analog red mode ). Pada saat yang
bersamaan dengan josytick mengirim ID mikrokontroler juga mengirim data ( 0×42
) untuk meminta data dari joystick
Saat data ( 0×42 ) diterima maka joystick akan membalas dengan mengirimkan data ( 0×52 ) sebagai pemberitahuan bahwa data akan segera dikirim.
Setelah itu joystik mengirimkan data 6 x 8 bit yang berisi informasi tombol mana saja yang ditekan ( semua tombol adalah aktif low ).
Saat data ( 0×42 ) diterima maka joystick akan membalas dengan mengirimkan data ( 0×52 ) sebagai pemberitahuan bahwa data akan segera dikirim.
Setelah itu joystik mengirimkan data 6 x 8 bit yang berisi informasi tombol mana saja yang ditekan ( semua tombol adalah aktif low ).
Sekian tugas yang diposting ini untuk membagi ilmu
kepada pengunjung sekalian.
sebelum meninggalkan blog ini harap member masukan
terima kasih.
@ibnew_d .
0 komentar:
Posting Komentar