Задать вопрос
@Vadimm1001

Не удается прочитать/записать регистр с nrf24l01+?

Вот сам код:
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);
	
}

Здесь я записываю 0b11 в регистр по адресу 0x11, потом читаю его, но значение все равно 0.
  • Вопрос задан
  • 70 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы