Цитата:
Сообщение от Admin
Вот вырезал из библиотеки фунуфию чтения и отправки данных
Там же есть функция отправки данных, как раз для тебя на ASM-е
Вот этот код реально работает быстрее, но
я его закоментирова, так как не все устройства успевают переходить в режим готовности
PHP код:
__asm__ volatile
(
".spi_not_ready: out %[spdr], %[spi_data]" "\n\t" //отправляем пользовательские данные в SPI
"in __tmp_reg__,%[spsr]" "\n\t" //Читаем регистр SPSR
"sbrs __tmp_reg__, %[spif]" "\n\t" //и проверяем флаг SPIF
"rjmp .spi_not_ready" "\n\t" //если данные не отправлены повторяем процедуру
::
[spsr] "I" (_SFR_IO_ADDR(SPSR)),
[spif] "I" (SPIF),
[spdr] "I" (_SFR_IO_ADDR(SPDR)),
[spi_data] "r" (SPI_data)
);
|
Может её оформить как "uint8_t TransferSPI(uint8_t SPI_data)" ?
А как на счет включения в либу выше приведенных макросов для автоподстановки номера pin'а (D##x##_) ?