Метценгерштейн 0 6 сентября, 2013 Опубликовано 6 сентября, 2013 · Жалоба Снова я иду дальше, и наступаю на очередные грабли ;) Поэтому, обращаюсь к вам за помощью) подключаю по SPI мегу 8 к Wiznet 5100. вот две ф-ии, инициализацию сразу вызываю, а сам байт передаю во второй ф-ии void WIZ_SPIInit() { SPCR = (0<<SPIE) | (1<<SPE) | (0<<DORD) | (1<<MSTR) | (0<< CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0); SPSR = (0<<SPI2X); // проинициализировал SPI в меге } uint8_t SPI_Exchg(uint8_t out) { // эту ф-ю вызываю для передачи и приема данных в SPI SPDR = out; while(!(SPSR &(1 << SPIF))); // ждем пока флаг окончания передачи встанет return SPDR; } сама w5100 ведет себя не стабильно- то откликается, то нет. В общем, подглючивает. подключил уже логич. анализатор на 3 ноги (MISO MOSI SCK), пытаюсь хотя бы просто послать байт в SPI, и смотрю его ЛА for (;;) { uint8_t g = 37; SPI_Exchg (g); Delay (1000000); } // тест SPI ЛА даже не дергается ??? Разве не должно на выходе MOSI, да и SCK быть дерготни? Когда прошиваю проц, то вижу импульсы, а потом через паузу шлю число в SPI - и глухо ??? На какие гарбли я на этот раз встал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 6 сентября, 2013 Опубликовано 6 сентября, 2013 · Жалоба На какие гарбли я на этот раз встал? Трудно сказать (вы бы проект выкладывали, а то гадай что у вас забыто). Порты SS, MOSI и SCK настроены как выходы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Метценгерштейн 0 6 сентября, 2013 Опубликовано 6 сентября, 2013 · Жалоба http://files.mail.ru/3908264C4C254F048F8D47C221CB6F83 вот проект под IAR, если не затруднит, гляньте пож-ста. ноги были как выходы настроены, но уже изменил на вход MISO- тоже не помогло. А вообще, должно же просто в воздух выводиться значение по SPI? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rx3apf 0 6 сентября, 2013 Опубликовано 6 сентября, 2013 · Жалоба Однозначно должно выводиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smalcom 0 6 сентября, 2013 Опубликовано 6 сентября, 2013 · Жалоба нога /SS должна быть настроена на выход. это так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Метценгерштейн 0 6 сентября, 2013 Опубликовано 6 сентября, 2013 · Жалоба #define WIZ_SCS PORTC, 3, H PORTC = (0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0); DDRC =(1<<7)|(1<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0); т.е. да добавил вывод в консольку for (;;) { putString ("for \r\n"); uint8_t g = 37; SPI_Exchg (g); Delay (100000); } // тест SPI -удалить потом так вот- вывело один раз for и все... т.е. где-то потерялось в ф-ии SPI. пошел банально тестером контакты прозванивать... прозвонил- все верно. я стою осциллом на 3-х ногах SPI тупанул- забыл инициализацию вызвать WIZ_SPIInit (); теперь шлет байт на выход. только w5100 по-прежнему глючит (( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey-Ufa 0 27 октября, 2013 Опубликовано 27 октября, 2013 · Жалоба Если вы не используете свой SPI в режиме SLAVE, то SS должен быть сконфигурирован, как выход. Если SS вход, то в режиме MASTER необходимо обеспечить ему постоянно лог.1 Если SS-вход, подтяжка на плюс не установлена, то имеем на SS плавающий потенциал со всеми вытекающими. Отсюда глюки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться