В принципе код есть - точная копия из ДШ. Но при прогоне в PROTEUS, между байтами получается промежуток, как понял из ДШ после передачи одного байта генератор SPI останавливается и из-за этого получаются промежутки, или это глюк PROTEUS?
Код
unsigned char i=0;
unsigned char mass_data [7] = { 0x0A, 0xff, 0x3A, 0xAf, 0xdd, 0xA0, 0xcf };// mass_data - массив с данными вместо 52 56бит(пока)
void SPI_MasterTransmit(char cData)
{
/* Start transmission */
SPDR = cData;
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)))
;
while (1)
{
while(i<7)
{
PORTB=0x10;// PORTB.4 - вывод SS - chip select
SPI_MasterTransmit( mass_data [i] );
i++;
}
PORTB=0;
}
unsigned char mass_data [7] = { 0x0A, 0xff, 0x3A, 0xAf, 0xdd, 0xA0, 0xcf };// mass_data - массив с данными вместо 52 56бит(пока)
void SPI_MasterTransmit(char cData)
{
/* Start transmission */
SPDR = cData;
/* Wait for transmission complete */
while(!(SPSR & (1<<SPIF)))
;
while (1)
{
while(i<7)
{
PORTB=0x10;// PORTB.4 - вывод SS - chip select
SPI_MasterTransmit( mass_data [i] );
i++;
}
PORTB=0;
}
Можно ли это сделать аппаратно, проблема еще в том что кол-во бит не кратно восьми, или лучше все это делать программно.