Не совсем понял как у вас передатчик по SPI работает.
вот часть кода пересылки по SPI. МК ведет себя как ведущее устройство.
Код
void SPIWriteData(unsigned char data)
{
unsigned char i;
for(i=0;i<8;i++) {
SPI_CLK_low;
if (data & 0x80) SPI_DATA_high; else SPI_DATA_low;
data <<= 1;
SPI_CLK_high;
}
NOP();
SPI_CLK_low;
}
для удобства вставил в хеадер
Код
//SPI генератор
#define SPI_CLK_high PORTC |= BIT(PC6)
#define SPI_CLK_low PORTC &= ~BIT(PC6)
#define SPI_DATA_high PORTC |= BIT(PC7)
#define SPI_DATA_low PORTC &= ~BIT(PC7)
при вызове функции следите за типом данных, к примеру кусок кода:
Код
data = (unsigned char)(long_data);
SPIWriteData(data);