Загрузить исходник host.c

#define NRF24_IO_PORT PORTC
#define NRF24_IO_PINREG PINC
#define NRF24_IO_DDR DDRC

#include <avr/io.h>
#include <util/delay.h>
#include "lib/nrf24.h"
#include "lib/psx.h"

//      ATMega8        nrf24
//     ________      _________
//    |    PC0 |----| CE      |
//    |    PC1 |----| CSN     |
//    |    PC2 |----| SCK     |
//    |    PC3 |----| MOSI    |
//    |    PC4 |----| MISO    |
//    |        |    |_________|
//    |        |
//    |        |      Геймпад
//    |        |     _________
//    |    PD4 |----| SCK     |
//    |    PD5 |----| CS      |
//    |    PD6 |----| DATA    |
//    |    PD7 |----| DC      |
//    |________|    |_________|


uint8_t data_array[2];
uint8_t tx_address[5] = {0xE7, 0xE7, 0xE7, 0xE7, 0xE7};
uint8_t rx_address[5] = {0xD7, 0xD7, 0xD7, 0xD7, 0xD7};


int main() {

    nrf24_init();

    nrf24_config(2, 2); // канал 2, размер пакета 2

    nrf24_tx_address(tx_address);
    nrf24_rx_address(rx_address);

    psx_init(false);

    while (1) {

        psx_read_gamepad(); // чтение геймпада

        data_array[0] = 0xFE; // проверочное значение

        // вверх       - левое  шасси вперёд
        // вниз        - левое  шасси назад
        // треугольник - правое шасси вперёд
        // крест       - правое шасси назад
        data_array[1] = (psx_button(PSB_PAD_UP) << 1) | (psx_button(PSB_PAD_DOWN) << 2)
                        | (psx_button(PSB_TRIANGLE) << 3) | (psx_button(PSB_CROSS) << 4); // запихиваем кнопки

        nrf24_send(data_array); // отправляем данные
        while (!nrf24_isSending());

        _delay_ms(20);

    }
}