Yang harus dipersiapkan :
- 1 unit komputer
- Software CodeVision-AVR
Langkah-langkah :
- Buka CodeVision anda
- Gunakan CodeWizard untuk setting I/O anda sesuai dengan kebutuhan anda.
- Lalu pilih menu File->Generate, save, and Exit.
- 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
- 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;
// 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;
- 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;
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;
}
- Setelah anda memanggil fungsi readPSX() maka variabel byte4, byte5, byte6, byte7, byte8, dan byte9 akan berisi data dengan rincian sebagai berikut :
- 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.