проблема обнаружилась вот в чем- записал в W5100 по адресу 0x000F число 172, теперь его считываю в коде
Код
WIZ_SPIInit(); //инициализация в AVR
iinchip_init();
Delay (20 MS);
IINCHIP_WRITE (0x000F, 172);
for (;;) {
putHEX (IINCHIP_READ (0x000F));
putString (" \r\n");
Delay (2000 MS);
}
Код
uint8_t IINCHIP_READ(uint16_t addr)
{
uint8_t temp = 0;
off (WIZ_SCS);
temp = SPI_Exchg (0x0f);
temp = SPI_Exchg ((addr & 0xFF00) >> 8);
temp = SPI_Exchg (addr & 0x00FF);
temp = SPI_Exchg (0xff);
Delay(2 MKS ); // небольшая задержка при поднятии CS на 2 мкс (32 МГц)- чтобы не сразу за CLK поднимался
on (WIZ_SCS);
return temp;
}
параллельно включил логич. анализатор- есть у меня на Rigol он. И смотрю последний- 4-й байт, заодно в консольку закидываю значение. То, что в консолку пишет- то и я вижу на ЛА.
и пишет мне
AC
AC
AC
98
58
AC
..
и ЛА показывает, что MISO не AC принимает. Принимает хрень. Как только подключил щуп осцилла, чтобы реальность посмотреть, так и ни одного сбоя нет и и фронты ровные и всегда AC выводит. Стоит убрать- опять через раз-два пишет хрень.
А почему так?
инициализация
Код
PORTB = (0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(1<<1)|(0<<0); // все ноги в 0
DDRB =(1<<7)|(1<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0); // все ноги на вывод
PB4- это MISO
делал его и входом и выходом- один хрен.
http://s2.ipicture.ru/uploads/20130908/TAwtma4I.jpgвот что на ЛА происходит- считал число 172.
а вот что дает даташит на W5100
http://clip2net.com/s/5Ik5Nhи на проекте STM32 тоже биты CPOL, CPHA были 0 и 0.
тут наверное, пошел плату спиртом мыть )))