Exemplo n.º 1
0
/* software spi routine */
uint8_t spi_transfer(uint8_t tx)
{
    uint8_t i = 0;
    uint8_t rx = 0;    

    nrf24_sck_digitalWrite(LOW);

    for(i=0;i<8;i++)
    {

        if(tx & (1<<(7-i)))
        {
            nrf24_mosi_digitalWrite(HIGH);            
        }
        else
        {
            nrf24_mosi_digitalWrite(LOW);
        }

        nrf24_sck_digitalWrite(HIGH);        

        rx = rx << 1;
        if(nrf24_miso_digitalRead())
        {
            rx |= 0x01;
        }

        nrf24_sck_digitalWrite(LOW);                

    }
    

    return rx;
}
Exemplo n.º 2
0
/* software spi routine */
uint8_t spi_transfer(uint8_t tx)
{
    #if defined(__AVR_ATtiny84__)            
        
        USIDR = tx;
        USISR = _BV(USIOIF); // clear flag

        while ( (USISR & _BV(USIOIF)) == 0 ) 
        {
            USICR = (1<<USIWM0)|(1<<USICS1)|(1<<USICLK)|(1<<USITC);
        }

        return USIDR;

    #elif defined (__AVR_ATmega328P__)                

        uint8_t reply;
        SPDR = tx;   
        while(!(SPSR & (1<<SPIF)));
        reply = SPDR;
        return reply;

    #else
        
        uint8_t i = 0;
        uint8_t rx = 0;    

        nrf24_sck_digitalWrite(LOW);

        for(i=0;i<8;i++)
        {

            if(tx & (1<<(7-i)))
            {
                nrf24_mosi_digitalWrite(HIGH);            
            }
            else
            {
                nrf24_mosi_digitalWrite(LOW);
            }

            nrf24_sck_digitalWrite(HIGH);        

            rx = rx << 1;
            if(nrf24_miso_digitalRead())
            {
                rx |= 0x01;
            }

            nrf24_sck_digitalWrite(LOW);                

        }

        return rx;
    
    #endif
}
Exemplo n.º 3
0
uint8_t spi_transfer(
    uint8_t tx )
{
    //uint8_t i = 0;
    uint8_t rx = 0;

    nrf24_sck_digitalWrite(LOW);

    /*for(i=0;i<8;i++)
    {

    	if(tx & (1<<(7-i)))
    		nrf24_mosi_digitalWrite(HIGH);
    	else
    		nrf24_mosi_digitalWrite(LOW);

    	nrf24_sck_digitalWrite(HIGH);

    	rx = rx << 1;
    	if(nrf24_miso_digitalRead())
    		rx |= 0x01;

    	nrf24_sck_digitalWrite(LOW);

    }*/

    nrf24_mosi_digitalWrite(tx & (1 << 7));
    rx |= nrf24_miso_digitalRead() << 7;
    nrf24_mosi_digitalWrite(tx & (1 << 6));
    rx |= nrf24_miso_digitalRead() << 6;
    nrf24_mosi_digitalWrite(tx & (1 << 5));
    rx |= nrf24_miso_digitalRead() << 5;
    nrf24_mosi_digitalWrite(tx & (1 << 4));
    rx |= nrf24_miso_digitalRead() << 4;
    nrf24_mosi_digitalWrite(tx & (1 << 3));
    rx |= nrf24_miso_digitalRead() << 3;
    nrf24_mosi_digitalWrite(tx & (1 << 2));
    rx |= nrf24_miso_digitalRead() << 2;
    nrf24_mosi_digitalWrite(tx & (1 << 1));
    rx |= nrf24_miso_digitalRead() << 1;
    nrf24_mosi_digitalWrite(tx & 1);
    rx |= nrf24_miso_digitalRead();

    return rx;
}