Итак, я пишу пример кода SPI для BitRang для AVR (так что я лучше понимаю, как использовать SPI и ценю аппаратное обеспечение SPI), и я немного запутался в некоторых вещах.
Из того, что я прочитал на SPI, вы сначала вытесняете LSB из master .... но я не уверен, как это сделать?По сути, я хочу отключить LSB и установить новое 8-битное двоичное значение на предыдущее, но с отключенным LSB
(я делаю это в цикле, беру неподписанный символ и затем хочу отправитьLSB каждая петля).
Это то, что у меня есть до сих пор:
unsigned char transmit_byte(unsigned char data_byte)
{
int i;
char ret_data;
enable_SPI(); /* Set up correct Data Direction Ports */
_delay_ms(100);
ss_low(); /* Set SS Low */
_delay_ms(100);
/* SCLK Currently holding low, MOSI is low, SS is low */
for (i = 0; i <= 7; i++)
{
if (0x80 & SPI_PORT)
{
mosi_high();
}
else
{
mosi_low();
}
/* MOSI Value is latched in */
_delay_ms(10); // Probably unnecessary
//something here?
}
}
Буду ли я просто сдвигать его?0 и установите новую символьную переменную, но это после каждой итерации.