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

 
 
5 страниц V  « < 2 3 4 5 >  
Reply to this topicStart new topic
> Olimex/Startetkit LPC23/4 + RMII KS8721BL, Баги в схеме :(
sasamy
сообщение Jul 5 2011, 14:45
Сообщение #46


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(haker_fox @ Jul 2 2011, 12:36) *
За исходник - спасибо! Поизучаю!


Какой-то индусокод. Представьте что адрес не 1 или 2 а 31 - сколько эта херня будет циклы накручивать с задержками ? Лучше нормальные открытые проекты изучайте.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 18:25
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 17:45) *
Какой-то индусокод. Представьте что адрес не 1 или 2 а 31 - сколько эта херня будет циклы накручивать с задержками ?

Если не умеете считать, то порядка 128ms на адрес. Один раз при инициализации. Зато будет найден любой. При необходимости экономить время и использовании 31 адреса все может быть постфактум скорректировано в конкретном рабочем исходнике. Именно такой подход к делу для ДЕМО кода является нормальным в отличии от забивания конкретного адреса, причем без комментариев, что это адрес.
QUOTE
Лучше нормальные открытые проекты изучайте.

Нормальных открытых нет. Один с относительно нормальным уровнем драйвера я уже в этом топике поминал.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 18:56
Сообщение #48


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 5 2011, 22:25) *
Если не умеете считать, то порядка 128ms на адрес. Один раз при инициализации. Зато будет найден любой. При необходимости экономить время и использовании 31 адреса все может быть постфактум скорректировано в конкретном рабочем исходнике. Именно такой подход к делу для ДЕМО кода является нормальным в отличии от забивания конкретного адреса, причем без комментариев, что это адрес.


Я как раз умею считать - для 31 адреса задержка составит 3 секунды - это нормально по-вашему ? Смысл не в том что вы ищете живой адрес а в том как вы это делаете - можно было в цикле заслать сброс по всем адресам без задержек, а потом опрашивать начианая с первого и если он не ответил, то для следующих задержки уже не нужны. В итоге задержка практически не будет зависеть от адреса а для 31 сократится в 30 (!) раз.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 19:30
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 21:56) *
можно было в цикле заслать сброс по всем адресам без задержек, а потом....

В результате получим много большую задержку для начального ОЖИДАЕМОГО адреса и более замысловатый код и более сложный для правки с целью получить из этого демо рабочий вариант.
Единственно, что, пожалуй следует изменить, это явно дефинировать ожидаемый адрес. Где-то так:
CODE
#define DEFAULT_PHY_ADDR (1)
  
    for( phy_addr = DEFAULT_PHY_ADDR;; )
      {   // Put PHY in reset mode
        write_PHY( PHY_REG_BMCR, BMCR_RESET );
        // Wait for hardware reset to end
        for( int i = 0; i < 128; i++ )
        {   vSmartDelay_ms( 1 );
            if( !(read_PHY( PHY_REG_BMCR ) & BMCR_RESET) )
            {    // Reset complete
                goto phy_found;
              }
        }
        phy_addr = ( phy_addr + 1 ) & 0x1F;
        if( phy_addr == DEFAULT_PHY_ADDR )
                           {    printst( "PHY:Missing " );
                                 return( 1 );
        }
        
    }

Достаточно изменить DEFAULT_PHY_ADDR на желаемый и получаем максимально быстрый рабочий вариант, который тем не менее обеспечит поиск при запуске демки или каких-то монтажных ошибок


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 20:16
Сообщение #50


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 5 2011, 23:30) *
В результате получим много большую задержку для начального ОЖИДАЕМОГО адреса и более замысловатый код и более сложный для правки с целью получить из этого демо рабочий вариант.


Вы о чем вообще ? вот ваш подправленый код

Код
    for (phy_addr = 1; phy_addr <= 31; phy_addr++)
        // Put PHY in reset mode
        write_PHY(PHY_REG_BMCR, BMCR_RESET);

    phy_addr = 1;

    for (int i = 0; i < 128; i++) {  
        if (!(read_PHY( PHY_REG_BMCR ) & BMCR_RESET))
            // Reset complete
            goto phy_found;
        vSmartDelay_ms(1);
    }
    
    for (phy_addr = 2; phy_addr <= 31; phy_addr++) {
        if (!(read_PHY(PHY_REG_BMCR) & BMCR_RESET))
            goto phy_found;
    }
    
    printst("PHY:Missing ");
    return (1);
      
phy_found:


Цитата
for( phy_addr = DEFAULT_PHY_ADDR;; )


Это вообще цирк - зачем тогда поиск адреса нужен sm.gif

Сообщение отредактировал sasamy - Jul 5 2011, 20:21
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 20:20
Сообщение #51


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 23:16) *
Вы о чем вообще ?

О том, что написал.
QUOTE
вот ваш подправленый код

Я понял Вашу мысль и достаточно четко на мой взгляд написал, почему меня такая правка НЕ устраивает. Подправленный код тоже привел. Ознакомьтесь для начала.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 20:24
Сообщение #52


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 6 2011, 00:20) *
О том, что написал.

Я понял Вашу мысль и достаточно четко на мой взгляд написал, почему меня такая правка НЕ устраивает. Подправленный код тоже привел. Ознакомьтесь для начала.


Я немного опоздал с ответом - в общем это очередная индусятина - собственно то что вы ставили во главу сначала (а это перебрать и найти ЛЮБОЙ адрес даже если ошибка в физике) вдруг отошло на второй план и появился костыль который гробит всю идею на корню
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 20:35
Сообщение #53


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 23:24) *
в общем это очередная индусятина

бла, бла, бла....
QUOTE
собственно то что вы ставили во главу сначала (а это перебрать и найти ЛЮБОЙ адрес даже если ошибка в физике) вдруг отошло на второй план

Было и есть на переднем плане. Во главе угла нормально без лишних рассылок ресетов и прочих ЛИШНИХ телодвижений инициализировать PHY. Если вдруг PHY не нашелся на том адресе, на котором должен быть, то тогда искать. Это НЕ штатный режим и время не имеет значения. Значение-же, для той-же демки имеет понятность и минимально-достаточное количество действий при инициализации. Дивная посылка кучи НЕНУЖНЫХ ресетов может в демке разве только сбить с толку читающего и замаскировать ту самую необходимо-достаточную процедуру инициализации PHY. Кстати, о времени, vSmartDelay_ms() это при работающем шедулере и не при вызове из Idle не задержка, а переключение на другую задачу. До кучи у меня нет зависимости от наличия в функции write_PHY() ожидания окончания транзакции. Отсутствие такого ожидания тоже встречалось в халявных демках sad.gif.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 20:41
Сообщение #54


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(zltigo @ Jul 6 2011, 00:35) *
бла, бла, бла....


Честно говоря - мне нечего добавить. Учить Вас с таким самомнением бесполезно и поздно, тем более что-то доказывать - я даже не расчитывал что вы согласитесь что код у вас говенный sm.gif

Сообщение отредактировал sasamy - Jul 5 2011, 20:43
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 5 2011, 20:46
Сообщение #55


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (sasamy @ Jul 5 2011, 23:41) *
...согласитесь что код у вас говенный sm.gif

Возможно со временем Вам дано будет его понять.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 5 2011, 21:20
Сообщение #56


Гуру
******

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



Цитата(sasamy @ Jul 6 2011, 00:41) *
...даже не расчитывал что вы согласитесь что код у вас говенный sm.gif

Ваше "исправление" смотрится гораздо более убого "очередной индусятины", ибо не предполагает удобную смену дефолтного адреса, коли уж на то пошло.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 21:34
Сообщение #57


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(aaarrr @ Jul 6 2011, 01:20) *
Ваше "исправление" смотрится гораздо более убого "очередной индусятины", ибо не предполагает удобную смену дефолтного адреса, коли уж на то пошло.


Еще один. Для нервнодышащих, вот исходное сообщение
http://electronix.ru/forum/index.php?showt...st&p=947034
покажите мне - какой там дефолтный адрес. Если он так нужен - пожалуйста, смысл ведь не в этом.
Код
#define DEFAULT_PHY_ADDR (1)

    for (phy_addr = 1; phy_addr <= 31; phy_addr++)
        // Put PHY in reset mode
        write_PHY(PHY_REG_BMCR, BMCR_RESET);

    phy_addr = DEFAULT_PHY_ADDR;

    for (int i = 0; i < 128; i++) {  
        if (!(read_PHY( PHY_REG_BMCR ) & BMCR_RESET))
            // Reset complete
            goto phy_found;
        vSmartDelay_ms(1);
    }
    
    for (phy_addr = 1; phy_addr <= 31; phy_addr++) {
        if ((phy_addr != DEFAULT_PHY_ADDR) &&  (!(read_PHY(PHY_REG_BMCR) & BMCR_RESET)))
            goto phy_found;
    }
    
    printst("PHY:Missing ");
    return (1);
      
phy_found:
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 5 2011, 21:43
Сообщение #58


Гуру
******

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



Цитата(sasamy @ Jul 6 2011, 01:34) *
Еще один. Для нервнодышащих, вот исходное сообщение
http://electronix.ru/forum/index.php?showt...st&p=947034
покажите мне - какой там дефолтный адрес. Если он так нужен - пожалуйста, смысл ведь не в этом.

Я разве сказал, что мне нравится исходный код? Спешу разуверить: отнюдь не нравится. Например, я не вижу причины без нужды дергать software reset.
Но ситуацию это не меняет - ваше исправление менее убого исходного варианта, но явно хуже аналогичного от автора. Индусятина-с.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jul 5 2011, 21:54
Сообщение #59


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(aaarrr @ Jul 6 2011, 01:43) *
Я разве сказал, что мне нравится исходный код?


Не знаю - я ответил на конкретное предложение про дефолтный адрес невесть откуда взявшийся.

Цитата
я не вижу причины без нужды дергать software reset.


Ну и не дергайте

Цитата
Но ситуацию это не меняет - ваше исправление менее убого исходного варианта, но явно хуже аналогичного от автора. Индусятина-с.


Собственно исправление автора еще более убого чем начальный вариант - он теряет смысл, потому что весь диапазон адресов не будет проверен. А вы если делаете громкие заявления - не поленитесь привести свой код, иначе они звучат как пшик индуса sm.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 5 2011, 21:56
Сообщение #60


Гуру
******

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



Цитата(sasamy @ Jul 6 2011, 01:54) *
Собственно исправление автора еще более убого чем начальный вариант - он теряет смысл, потому что весь диапазон адресов не будет проверен. А вы если делаете громкие заявления - не поленитесь привести свой код, иначе они звучат как пшик индуса sm.gif

А как бэ посмотреть это самое исправление внимательно не имеете желания? Пшикнуть нетерпится?
Go to the top of the page
 
+Quote Post

5 страниц V  « < 2 3 4 5 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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