Вообщем, для начала код программы который не работает, а потом пойдут вопросы.
CODE
#include <mega8535.h>
//#include <spi.h>
#include <delay.h>
#define C1 0x20
#define C0 0x10
#define P1 0x02
#define P0 0x01


unsigned int SPI_trasm(unsigned int res)
{
SPDR = res;
while((SPSR&(1<<SPIF))==1);
return SPDR;
}

void RES_Init(void)
{
SPI_trasm(C0|P0);
}

interrupt [SPI_STC] void spi_isr(void)
{
unsigned char data;
data=SPDR;
// Place your code here

}
void main(void)
{
unsigned char i;
PORTB = 0;
DDRB=(1<<7)|(0<<6)|(1<<5)|(1<<4);
PORTD = (0<<1)|(1<<0);
DDRD = (0<<1)|(0<<0);
ACSR=0x80;

SPCR=(1<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(0<<CPOL)|(0<<CPHA)|(1<<SPR1)|(1<<SPR0);
SPSR=(0<<SPI2X);

TWCR=0x00;

#asm
in r30,spsr
in r30,spdr
#endasm

#asm("sei")

RES_Init();
while(1)
{
//PORTB = (1<<4);
if ((PIND&(1<<PIND0))==0)
{{while ((PIND&(1<<PIND0))==0) i=3;
}
if (i ==3)
{SPDR=1;i=0;} }

}
}




Что то я немогу проинициализировать байты команд, состоящая из 8 бит:

поток данных должне инициализироваться таким образом:

Кто имеет опыт работы с SPI поделитесь прошу. Функция RES_Init() не работает, а точнее выход SS не стоит на уровне лог.1, постоянное лог.0. Почему? Как правельно проинициализировать? я понимаю что фнукция неинициализирует и остальные 8бит-значение сопротивление (0-256). Пока для меня это не важно, необходимо чтоб SS правильно вставал в положения, то есть при записи данных SS вставал в лог.0. как на графике.
а вот осциллограммы на протеусе.

и кстати как Вы заметили на MOSI вылазит не понятный короткий имульс. Что я тоже непойму.
Вообщем научите общаться с данным интерфейсом SPI.