[uquote="oleg110592",url="/forum/viewtopic.php?p=3844792#p3844792"][uquote="khamai",url="/forum/viewtopic.php?p=3844684#p3844684"]Команды GET_... это макросы[/uquote]
а STREQ, ADDEQ? Вроде команд таких нету:
http://infocenter.arm.com/help/index.js ... DIGAC.html
На всякий:
Флаг TXE автоматически устанавливается при записи в регистр данных - SPI_DR, и сбрасывается когда значение из регистра данных уходит в сдвиговый регистр. Флаг BSY устанавливается в "1", когда сдвиговый регистр не пуст, т.е. идет передача на линию.
На С приблизительно так:
Код: Выделить всё
SPI2->DR=(value);
while (!(SPI2->SR & SPI_I2S_FLAG_TXE) || (SPI2->SR & SPI_I2S_FLAG_BSY));
[/uquote]
Вы с assembler на ARM поверхностно наверное знакомы? (не в обиду сказано, я и сам недавно начал по книге, но что-то уже понял

)
На асме для армов есть корень команды, всякие суффиксы, гибкие операнды и тд и тп.
STR - команда записи (корень), а за счёт суффикса EQ (equal) выполняется команда только если результат сравнения (CMP) "положительный", иначе они пропускаются.
Это получается псевдокоманда, компилятор кейла создает блоки If-Then автоматически.
По поводу проверки BSY это я только для теста сделал. Пускай новые данные пишутся после передачи данных... Да хоть как-нибудь пускай это заработает)) Даже если неверное значение будет передаваться, с этим разберемся.
А вот с записью в регистр SPI_DR ума не приложу, в чём проблема...