pasando el argumento 3 de 'spi_tx_multibyte' descarta el calificador 'volátil' del puntero tipo de objetivo [habilitado de forma predeterminada]

0

He escrito un código de controlador SPI simple para enviar y recibir un solo byte. Ahora estoy tratando de escribir un controlador que pueda transmitir / recibir múltiples bytes en una transacción. Estoy planeando usar esto con el módulo de radio nRF24L01 que tiene una FIFO-s de 32 bytes, por lo que necesito poder escribir y leer múltiples bytes.

He escrito el siguiente código (no incluye la inicialización de AVR en modo maestro SPI):

//Function to send and receive multiple bytes of data
uint16_t * spi_tx_multibyte(unsigned char cmd_or_adr, int n, uint16_t *data_ptr_array) //first byte is the register address or command byte, the following is data byte
{

    PORTB &= ~SS_MASK;  // bring SS pin low to signal start of SPI transaction

    //send a command or address byte first
    SPDR = cmd_or_adr;                      //write byte into SPI transmit register
    while(!(SPSR & (1<<SPIF) ));       //Wait until SPI transmission complete

    int i;  //for loop variable

    //send data bytes
    for (i=0;i<n;i++)
    {
        SPDR = data_ptr_array[i];               //write the value of the variable where pointer points to into SPI transmit register
        while(!(SPSR & (1<<SPIF) ));       //Wait until transmission complete
        data_ptr_array[i] = SPDR;               //write received bytes into variable where pointer array points to
    }

    PORTB |= SS_MASK;                      //Bring SS pin back high after transaction has completed

    return data_ptr_array;              // return the received values in array of pointers
}

Código principal (ejemplo de uso):

int main(void)
{
    volatile uint16_t data_ptr_array[]= {0xFF,0xFF,0xFF,0xFF,0xFF};  // array values

    spi_init_master();  //initialize SPI as master

    while(1)
    {
       spi_tx_multibyte(0xA0,5,data_ptr_array);  //write into nRF TX FIFO
    }
}

Cuando compilo obtengo la siguiente advertencia:

  

Advertencia 1 que pasa el argumento 3 de 'spi_tx_multibyte' descarta 'volatile'   calificador del puntero tipo de destino [habilitado de forma predeterminada]

     

La advertencia 3 que pasa el argumento 3 de 'spi_tx_multibyte' descarta 'volatile'   calificador del puntero tipo de destino [habilitado de forma predeterminada]

He buscado en la pila y en Google, pero todavía no pude entender lo que significa esta advertencia.

    
pregunta rongard

0 respuestas

Lea otras preguntas en las etiquetas