Добрый день!.помогите запустить еепромку.
Суть проблемы в том что пишу в буфер данные допустим
-> 0b 1111 1111 а при считывание с еепромки получаю 0b 0111 1111 <-
-> 0b 0111 1111 чтение 0b 1011 1111
-> 0b 0011 1111 чтение 0b 1001 1111
-> 0b 0001 1111 чтение 0b 1000 1111
в общем она берет стирает старший бит данных и переносит его в 7-мой бит .
в чем может быть проблема ??
код по даташу ниже будут картинки .
Код:
int i;
unsigned char temp = 0x80; //(1<<7); SPIF
PORT_SPI=(1<<DD_SS); //PORTB
DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS); //DDRB
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
//запись в буфер
PORTB &= ~(1<<4); //SS=0
SPDR = 0x84; //опкод записи в буфер 1
while (!(SPSR & temp));
SPDR =0; //не имеет значения
while (!(SPSR & temp));
SPDR =0; // не имеет значения
while (!(SPSR & temp));
SPDR =0; // адрес в буфере
while (!(SPSR & temp));
SPDR =0b00001111; //данные
while (!(SPSR & temp));
PORTB |= (1<<4); //SS=1
//чтение из буфера
PORTB &= ~(1<<4); // SS=0
SPDR = 0x54; //опкод чтение из буфера 1
while (!(SPSR & temp));
SPDR =0; // не имеет значения
while (!(SPSR & temp));
SPDR =0; // не имеет значения
while (!(SPSR & temp));
SPDR =0; // не имеет значения
while (!(SPSR & temp));
SPDR =0; // адрес в буфере
while (!(SPSR & temp));
SPDR =0x00; // не имеет значения
while (!(SPSR & temp));
i=SPDR; //чтение
PORTB |= (1<<4); // SS=1