Трое суток идут ожесточенные бои с шиной SPI и EEPROM M25P10.
Что только не делал:
Разные конфиги.
Занижал клок до t=20мс.
Разные EEPROM.
Все бесполезно. Не может такого быть. Чувствую что где то косяк, причем детский косяк.
Не могут все SPI EEPROM в протеусе глючить!
Микроконтроллер благополучно отсылает бит RDSR (и не только), но память игнорит и молчит зараза.
На i2c переходить не хочется, но походу придется.
Было замечено, что если отправить бит который память не знает(0b11111111) она начинает ругаться. Мол "ункнован команд" и все дела.
Есть хоть идея у кого???
#define SDO_PIN TRISC5
#define SDI_PIN TRISC4
#define SCK_PIN TRISC3
#define SS_PIN TRISA5
int main(int argc, char** argv){
T0IE=0;
GIE=0;
TRISB=0;
PORTB=0;
TRISA=1;
PORTA=0;
TRISC=0;
PORTC=0;
while(1==1)
{ RB4=0;
init_spi();
spi_send(0b00000101);
PORTB=SSPSTAT;
}
spi_send(unsigned char byte) { //отправка
SSPBUF = byte; //
DelayUs(100);
SSPBUF = 0b00000000;//
DelayUs(100);
byte = SSPBUF; //
DelayUs(100);
return byte;
}
void init_spi() //настройка
{
SSPEN=1;
SDI_PIN =1;
SDO_PIN =0;
SCK_PIN =0;
SS_PIN =1;
SMP=0;
CKE=0;
CKP=0;
SSPM3=0;
SSPM2=0;
SSPM1=1;
SSPM0=0;
}
Я где то касячнул!!!