avr-psx-nrf-remote/lib/psx.h
2016-02-13 22:16:16 +03:00

68 lines
1.5 KiB
C

#ifndef PSX_lib_h
#define PSX_lib_h
#include <avr/io.h>
#include <stdbool.h>
#define PSX_DATA_PORT PORTD
#define PSX_SCK_PORT PORTD
#define PSX_DC_PORT PORTD
#define PSX_CS_PORT PORTD
#define PSX_DATA_PINREG PIND
#define PSX_DATA_DDR DDRD
#define PSX_SCK_DDR DDRD
#define PSX_DC_DDR DDRD
#define PSX_CS_DDR DDRD
#define PSX_SCK_PIN 4
#define PSX_DC_PIN 7
#define PSX_CS_PIN 5
#define PSX_DATA_PIN 6
// задержка тактов SPI, us
#define CTRL_CLK 10
// кнопкм
#define PSB_SELECT 0x0001
#define PSB_L3 0x0002
#define PSB_R3 0x0004
#define PSB_START 0x0008
#define PSB_PAD_UP 0x0010
#define PSB_PAD_RIGHT 0x0020
#define PSB_PAD_DOWN 0x0040
#define PSB_PAD_LEFT 0x0080
#define PSB_L2 0x0100
#define PSB_R2 0x0200
#define PSB_L1 0x0400
#define PSB_R1 0x0800
#define PSB_TRIANGLE 0x1000
#define PSB_CIRCLE 0x2000
#define PSB_CROSS 0x4000
#define PSB_SQUARE 0x8000
// джойстики
#define PSS_RX 5
#define PSS_RY 6
#define PSS_LX 7
#define PSS_LY 8
// инициализация геймпада
void psx_init(bool analog);
// получить состояние всех кнопок
uint16_t psx_buttons();
// получить состояниие кнопки (PSB_x)
uint8_t psx_button(uint16_t);
// получить состояниие оси джойстика (PSS_x)
uint8_t psx_stick(unsigned int);
// обновить состояние кнопок
void psx_read_gamepad();
#endif