Цитата(toweroff @ Sep 6 2016, 17:22)

вообще, чтобы что-то получить по SPI, нужно сначала записать в SPI
и только потом смотреть всякие флаги
запись осуществляется в функции spi_write(&AVR32_SPI0, data_buff), которая чуть выше по основному коду:
Код
spi_status_t spi_write(volatile avr32_spi_t *spi, uint16_t data)
{
uint32_t timeout = SPI_TIMEOUT;
while (!(spi->sr & AVR32_SPI_SR_TDRE_MASK)) {
if (!timeout--) {
return SPI_ERROR_TIMEOUT;
//return 0xFFFF;
}
}
spi->tdr = data << AVR32_SPI_TDR_TD_OFFSET;
return SPI_OK;
}
после переноса в регистр tdr МК начинает передавать сообщение. после чего идет проверка завершения передачи битом командного регистра отвечающего за то что буфер TX пуст
Код
while((AVR32_SPI0.cr & AVR32_SPI_SR_TXEMPTY_MASK) != 0) {};
а после чего пытаюсь читать. он не вываливается в эту ошибку он просто берет из приемного буфера от 0 то FF.
Цитата(69ka @ Sep 6 2016, 08:51)

плата отрабатывает верно (необходимые светодиоды светятся)
Цитата(toweroff @ Sep 6 2016, 17:22)

Код
if (!timeout--) {
return SPI_ERROR_TIMEOUT;
return 0xFFFF;
}
круто
это осталось от проверки что бы увидеть, тут он выходит в ошибку или нет, просто забыл закомментировать.
Сообщение отредактировал 69ka - Sep 7 2016, 06:19