реклама на сайте
подробности

 
 
> глючит W5100- не стабильно пингуется, под мегу8
Метценгерштейн
сообщение Sep 7 2013, 11:26
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Имел до этого опыт работы с W5100 и STM32, все работало как надо. Перевел проект под AVR, работает не стабильно. То пинговалось, теперь даже этого не делает. Схему перепроверил, подключил логич. анализатор на MISO MOSI SCK, что вывожу в SPI, то вижу на ЛА. Уровни фронтов осциллом нормальные. В общем, тупик полный....
Кого бы попросить посмотреть в проект, схему, и может у кого есть проект под АВР и W5100 под ИАР, прислать мне его, попробую скомпилить.

проект + схема.
http://files.mail.ru/1401C586534949B29DDEC889D6847676
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
Метценгерштейн
сообщение Sep 8 2013, 16:07
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



проблема обнаружилась вот в чем- записал в 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.
тут наверное, пошел плату спиртом мыть )))
Go to the top of the page
 
+Quote Post
LexsLavrov
сообщение Sep 8 2013, 19:47
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 9-06-11
Из: Санкт-Петербург
Пользователь №: 65 588



Очевидно подключение осцилла делает ногу MISO не болтающейся в воздухе, а все-таки с какой-то емкостью на землю.
Нога меги MISO сконфигурирована как вход?

а, вижу... Ну мож пулап такой-нить присандалить, или пуллдаун. Хотя у меня все работало четко без пуллов.
Go to the top of the page
 
+Quote Post
vesago
сообщение Sep 9 2013, 07:52
Сообщение #4


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Код
void SPI_Init(void)
{
  SPI_PORT |= (1<<SCK)|(1<<MOSI)|(1<<MISO);
//  PORT_SPI &= ~(1<<SCK);

  SPI_DDR |= (1<<SCK)|(1<<MOSI);
  SPI_DDR &= ~(1<<MISO);

  SPSR = (1<<SPI2X);
  SPCR = (1<<SPE)|(1<<MSTR);  //Mode 0
}
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Sep 9 2013, 19:13
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



промыл плату- все нормально стало- где-то залипон висел.

ловим дальше глюки...

странно ведет себя, если ставлю ф-ю
Код
recv (0, recv_IP, RX_dataSize);

приводит к ресету процессора и выполнение заново main();

питание и ресет не дергаются.
Go to the top of the page
 
+Quote Post
Метценгерштейн
сообщение Sep 13 2013, 18:37
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



кто замечал, что при вызове ф-ии
sendto ();

в ней при выполнении
Код
IINCHIP_WRITE(Sn_CR(s),Sn_CR_SEND);

происходит прерывание?

в даташите не нашел, что должно быть так.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01407 секунд с 7
ELECTRONIX ©2004-2016