<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=189419&amp;view=findpost&amp;p=1596433</guid>
        <pubDate>Sat, 09 Jun 2007 10:38:29 +0000</pubDate>
        <title>проблемы с получением доступа к EEPROM у чипа i82546 (эзернет)</title>
        <link>https://forum.sources.ru/index.php?showtopic=189419&amp;view=findpost&amp;p=1596433</link>
        <description><![CDATA[ЫукпШ: Попробуй вставить задержки между операциями in/out. Сделай<br> программу помедленнее.]]></description>
        <author>ЫукпШ</author>
        <category>Hardware (аппаратные средства)</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=189419&amp;view=findpost&amp;p=1592534</guid>
        <pubDate>Wed, 06 Jun 2007 18:21:58 +0000</pubDate>
        <title>проблемы с получением доступа к EEPROM у чипа i82546 (эзернет)</title>
        <link>https://forum.sources.ru/index.php?showtopic=189419&amp;view=findpost&amp;p=1592534</link>
        <description><![CDATA[Arisu: блин. пишу же что конкретно ЭТО не SPI ещё.  это уровнем выше.   как писать в микруху я знаю )) делал уже. НО вот это дренной контроллер, который выступает в роли SPI Master - не даёт доступа к микрухе слэйву.<br><br>У контроллера есть регистр для запроса доступа к микрухе (ну типа что бы знать использует он её сам сейчас или нет) .. это бит REQ<br>И если контроллеру микруха сейчас нафег не сдалась, то он возвращает 1б в регистр GNT.<br><br>но ничерта он туда 1 не возвращает )) а пока он этого не сделает - я не имею доступа к контактам SPI (Di, Do, Sk, Cs)]]></description>
        <author>Arisu</author>
        <category>Hardware (аппаратные средства)</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=189419&amp;view=findpost&amp;p=1592273</guid>
        <pubDate>Wed, 06 Jun 2007 14:06:11 +0000</pubDate>
        <title>проблемы с получением доступа к EEPROM у чипа i82546 (эзернет)</title>
        <link>https://forum.sources.ru/index.php?showtopic=189419&amp;view=findpost&amp;p=1592273</link>
        <description><![CDATA[kolobok0: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=189419&view=findpost&p=1591453'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Arisu &#064; <time class="tag-quote__quoted-time" datetime="2007-06-06T07:20:09+00:00">06.06.07, 07:20</time></span><div class='quote '>Мучаю этот нещасный интеловский изернет (82546GB) с его епромом выносным.<br>
<br>
Столкнулся с непоняткой: по какой-то причине чип (контроллер интеловский) не даёт разрешение на работу с его епромом. Хотя я всё делаю по инструкции. (интеловский контроллер выступает в роли Master(SPI) )<br>
....</div></div><br>
если я Вас правильно понял конечно же...<br>
Что говорит даташит на данную милкосхему ? Обчно в даташитах есть примеры работы с переферией. Обычно в епром пишут запретив прерывания, и посылая строгую магическую последовательность (зависит от самого производителя)... Дабы защититься от самопроизвольной записи при сбоях...<br>
<br>
с уважением<br>
(круглый)]]></description>
        <author>kolobok0</author>
        <category>Hardware (аппаратные средства)</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=189419&amp;view=findpost&amp;p=1591453</guid>
        <pubDate>Wed, 06 Jun 2007 07:20:09 +0000</pubDate>
        <title>проблемы с получением доступа к EEPROM у чипа i82546 (эзернет)</title>
        <link>https://forum.sources.ru/index.php?showtopic=189419&amp;view=findpost&amp;p=1591453</link>
        <description><![CDATA[Arisu: Мучаю этот нещасный интеловский изернет (82546GB) с его епромом выносным.<br>
<br>
Столкнулся с непоняткой: по какой-то причине чип (контроллер интеловский) не даёт разрешение на работу с его епромом. Хотя я всё делаю по инструкции. (интеловский контроллер выступает в роли Master(SPI) )<br>
<br>
Вот в даташите написано:<br>
<br>
To directly access the eeprom, software should follow these steps:<br>
1. Write a 1b to the EEPROM request bit (EECD.REQ)<br>
2. Read the EEPROM grant bit (EECD.GNT) until it becomes 1b. It remains 0b as long as the hardware is accessing the EEPROM.<br>
3. можете читать и писать теперь<br>
<br>
Вот мой код:<br>
<br>
(<br>
в регистре EECD:<br>
6 бит это REQ, <br>
7 бит это GNT,<br>
5-4 биты это FWE (доступ на запись)<br>
)<br>
<br>
(<br>
функции InDword и OutDword соответственно в порты пишут и читают.<br>
)<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">/* ----------------------------------------------------------------- */</div><div class="code_line">void GntEEPROMAcces( DWORD *EECDAddr ) </div><div class="code_line">{</div><div class="code_line">DWORD Reg;</div><div class="code_line">&nbsp;</div><div class="code_line">/* reset REQ, GNT and FWE */</div><div class="code_line">FreeEEPROMAccess( EECDAddr ); //(тут просто нолики в эти биты записываются для надёжности)</div><div class="code_line">&nbsp;</div><div class="code_line">/* 1b to REQ */</div><div class="code_line">Reg = InDword( *EECDAddr );</div><div class="code_line">Reg = Reg | 0x40; </div><div class="code_line">OutDword( Reg, *EECDAddr );</div><div class="code_line">&nbsp;</div><div class="code_line">/* waiting 1b from GNT */</div><div class="code_line">while ( 1 ) {</div><div class="code_line">Reg = InDword( *EECDAddr );</div><div class="code_line">if ( Reg &amp; 0x80 ) break;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">/* 10b to FWE */</div><div class="code_line">Reg = InDword( *EECDAddr );</div><div class="code_line">Reg = Reg &amp; 0xFFFFFFCF; </div><div class="code_line">Reg = Reg &amp; 0x20; </div><div class="code_line">OutDword( Reg, *EECDAddr ); </div><div class="code_line">&nbsp;</div><div class="code_line">return;</div><div class="code_line">} /* --------------------------------------------------------------- */</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Вот и весь урюк в том, что вот вот этой еденицы в GNT я могу ждать хоть до завтрашнего утра.. не ставит он её и всё тут.<br>
<br>
ЗЫ<br>
на всякий:<br>
EECD это 32 битный регистр и ввод/вывод у него тоже 32-битный.<br>
ЗЫ2<br>
SPI тут не причём&#33; до него дело ещё не дошло&#33; я пока общаюсь только с Master чипом]]></description>
        <author>Arisu</author>
        <category>Hardware (аппаратные средства)</category>
      </item>
	
      </channel>
      </rss>
	