Answer the question
In order to leave comments, you need to log in
Can't read/write register with nrf24l01+?
Here is the code itself:
unsigned char r_register(unsigned char a)//чтение байта из озу. a-адрес байта
{
ClearBit(PORTB,CSN);//Прижимаем вывод CSN(SS) МК к земле, тем самым сообщаем о начале обмена данных.
SPDR=a;
while(BitIsClear(SPSR,SPIF));//ожидаем когда освободится SPI для последующей записи байта
SPDR=NOP;
while(BitIsClear(SPSR,SPIF));
SetBit(PORTB,CSN);//Вывод CSN(SS) МК к питанию, обмен данных завершен.
return SPDR;
}//uint8_t a=r_register(CONFIG);
void w_register(unsigned char a,unsigned char b)//а-адрес регистра, b-что пишем в регистр.
{
a=a | W_REGISTER;//накладываем маску
ClearBit(PORTB,CSN);
SPDR=a;
while(BitIsClear(SPSR,SPIF));
SPDR=b;
while(BitIsClear(SPSR,SPIF));
a=SPDR;//это для сброса флага SPIF
SetBit(PORTB,CSN);
}//W_REGISTER (CONFIG,0b00000110);
int main(void)
{
lcd_init();
DDRB=0b101101;
SPCR = (0<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(0<<CPOL)|(0<<CPHA)|(0<<SPR1)|(0<<SPR0);
SPSR = (0<<SPIF)|(0<<WCOL);
w_register(0x11,0b11);
lcd_dat(r_register(0x11));
while(1);
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question