Всё дело в том, что не устраивает скорость передачи (делится на 2), вот и пришло в голову руками впихивать биты на ножки:
MOSI PB5;
MISO PB6;
SCK PB7.
младший в перёд, защёлка по фронту.
У меня туго с операциями сдвига, компилятор ICC, подскажите плиз кто может.
Код
void transSPI(CMDT command, MyByte8T address,
MyByte8T *buffer, MyByte8T len)
{
MyByte8T dummyRX = 0;
MyByte8T dummyTX = 0xFF;
if (len > 0x80 || len == 0) return;
PORTB &= ~BIT(3);
SPDR = command | (len & 0x7F);
while(!(SPSR &(1 << SPIF)));
dummyRX = SPDR;
SPDR = address;
while(!(SPSR &(1 << SPIF)));
dummyRX = SPDR;
switch(command)
{
case READ_CMD:
while(len-- > 0)
{
SPDR = dummyTX;
while(!(SPSR &(1 << SPIF)));
*buffer++ = SPDR;
}
break;
case WRITE_CMD:
while(len-- > 0)
{
SPDR = *buffer++;
while(!(SPSR &(1 << SPIF)));
dummyRX = SPDR;
}
}
PORTB |= 1<<PORTD3;
}