Home › Forum › FORUM ELETTRONICA › RICHIESTE CIRCUITI e PUBLICAZIONI › nrf24l01 e libreria SPI MiKroC › Rispondi a: nrf24l01 e libreria SPI MiKroC
22 Aprile 2017 alle 22:31
#2831
ne555
Amministratore del forum
Ciao :) nel codice che tu hai visto vengono usati i seguente sottofunzioni:
void nRF24L01_write(unsigned char d) //sottoprogramma che simula una scrittura spi
unsigned char s = 0;
for(s = 0; s < 8; s++) //questo for serve a trasmettere sul pin mosi bit per bit il dato d
{
if((d & 0x80) != 0)
{
MOSI_pin = 1; //se il bit scandito è 1 trasmetto 1
}
else
{
MOSI_pin = 0; //altrimenti 0
}
d <<= 1; //shifto d per inviare il prossimo bit
SCK_pin = 1; //creo un clock
delay_us(8);
SCK_pin = 0;
delay_us(8);
}
}
e quello per la lettura:
unsigned char nRF24L01_read() //questo sottoprogramma simula una comunicazione SPI
{
unsigned char s = 0; //variabile per esegguire 8 esecuzioni
unsigned char msg = 0;
for(s = 0; s < 8; s++){ //esegue 8 volte
msg <<= 1; //shifto msg
SCK_pin = 1; //attivo il clock
delay_us(8); //aspetto 8us (f spi 62Kbps)
if(MISO_pin != 0) //se in=0
{
msg |= 1; //azzero il bit di msg
}
SCK_pin = 0; //disattivo il clock
delay_us(8);
}
return msg; //ritorno il valore letto
}
non credo servi fare un articola a parte, però è utile il tuo consiglio. In partica
basta inizializzare la comunicazione spi nel main con la seguente stringa
utilizzando un cristallo di quarzo da 4MHz:
SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
e sostituire alle due sottofunzioni viste prima le seguente sottofunzioni:
void nRF24L01_write(unsigned char d) //sottoprogramma scrittura spi
SPI1_Write(d);
}
unsigned char nRF24L01_read() //questo sottoprogramma lettura SPI
{
msg =
take = SPI_Read(buffer);
return msg; //ritorno il valore letto
}
Probabilmente va inizializzato il char "buffer" all'inizio del codice.
Se hai il circuito già montato su breadboard e testato con il codice da me
presentato potresti provare la modifica qui suggerita usando la
libreria spi e vedere se tutto funziona