Форум РадиоКот https://radiokot.ru/forum/ |
|
помогите понять 93с46 на сетевухе. https://radiokot.ru/forum/viewtopic.php?f=2&t=458 |
Страница 1 из 1 |
Автор: | Spider [ Пт янв 20, 2006 21:59:02 ] |
Заголовок сообщения: | помогите понять 93с46 на сетевухе. |
Есть сетевуха ISA NE2000 на чипе UM9008F, нашёл её описание в DM9008F.pdf где-то в гугле, на этой сетевухе напаян ЕЕПРОМ 94C46. У самой сетевухи есть команда работы с еепром "на прямую" иначе никак. Есть команда с параметром, биты параметра есть НОГИ самой 93c46, т.е. одной записью в этот регистр я изменяю значения на ногах 93с46. Теперь лезу в даташит 93c46 и ищу как же с него читать. нахожу чт-то типа: 110{address[7]}{data[8]}. Ну в даташите вроде описано как и чё. Тока у меня не получается ![]() У неё есть Select, Clock, DataIn и DataOut. Чтобы что-то прочитать я должен: - Выставить S в 1 на всю протяжённость операции. - Менять значение C с каждым "шагом". - Передать туда 110 по O - передать 7 бит смещения (128 байт) по тому же О - после передачи 7ого бита адреса прочиать 0 с I не меняя C - прочитать с I 8 бит как значение по данному смещению опять же меняя C. В каком положении должен быть O? - опустить S в ноль. Всё. И так 127 раз с увеличением смещения. Это верно? |
Автор: | Serega [ Пт янв 20, 2006 22:24:02 ] |
Заголовок сообщения: | |
Так. Во-первых, я так понимаю, что Клок должен меняться два раза при каждой операции. То есть: в момент выставления данных С=0, выставили данные, подождпли, делаем С=1. Подождали, делаем С=0, меняем данные. Потом я не очень понимаю, почему мы читаем вход а подаем на выход? |
Автор: | Spider [ Пт янв 20, 2006 22:58:36 ] |
Заголовок сообщения: | |
С млей строны это оут ![]() ![]() |
Автор: | Spider [ Сб янв 21, 2006 08:27:09 ] |
Заголовок сообщения: | |
никто не в курсе почему в таблице параметров в даташите есть ещё 2 столбика с адресом и датой? |
Автор: | Spider [ Сб янв 21, 2006 08:45:23 ] |
Заголовок сообщения: | Не получается блин! |
Ничего не выходит. Всё время 0 получаю. unsigned char cr; Код: for (unsigned char c = 0; c < 128; c++) {
cr= 0x88; //Выставляем SLECKT И прочее cr |= _BV(1); WriteRTL(CONFIGD,cr); cr = (cr & ~_BV(2)) | ((~ (cr & _BV(2)) ) & _BV(2)); //Инвентируем CLOCK WriteRTL(CONFIGD,cr); cr = (cr & ~_BV(2)) | ((~ (cr & _BV(2)) ) & _BV(2)); //Инвентируем CLOCK WriteRTL(CONFIGD,cr); cr = (cr & ~_BV(2)) | ((~ (cr & _BV(2)) ) & _BV(2)); //Инвентируем CLOCK WriteRTL(CONFIGD,cr); cr = (cr & ~_BV(2)) | ((~ (cr & _BV(2)) ) & _BV(2)) & ~_BV(1); //Инвентируем CLOCK и снимаем DATAOUT WriteRTL(CONFIGD,cr); cr = (cr & ~_BV(2)) | ((~ (cr & _BV(2)) ) & _BV(2)); //Инвентируем CLOCK WriteRTL(CONFIGD,cr); for (int a = 0; a < 7; a++) { cr = (cr & ~_BV(2)) | ((~ (cr & _BV(2)) ) & _BV(2)); //Инвентируем CLOCK //Так сложно для отладки if (c & _BV(a)) { cr |= _BV(1); printf("1"); } else { cr &= ~_BV(1); printf("0"); } WriteRTL(CONFIGD,cr); cr = (cr & ~_BV(2)) | ((~ (cr & _BV(2)) ) & _BV(2)); //Инвентируем CLOCK WriteRTL(CONFIGD,cr); } printf(" "); unsigned char s=0x0; s |= (ReadRTL(CONFIGD) & 1); for (int a = 0; a < 8; a++) { cr = (cr & ~_BV(2)) | ((~ (cr & _BV(2)) ) & _BV(2)) & ~_BV(1) & ~_BV(0); //Инвентируем CLOCK и снимаем DATA_IN WriteRTL(CONFIGD,cr); cr = (cr & ~_BV(2)) | ((~ (cr & _BV(2)) ) & _BV(2)); //Инвентируем CLOCK WriteRTL(CONFIGD,cr); if (ReadRTL(CONFIGD) & 1) { s |= _BV(a+1); printf("1"); } else { printf("0"); }; } printf (" BYTE: 0x%x\n",s); cr = (cr & ~_BV(2)) | ((~ (cr & _BV(2)) ) & _BV(2)) & ~_BV(3) & ~_BV(1) & ~_BV(0); //Инвентируем CLOCK и снимаем DATA_IN WriteRTL(CONFIGD,cr); cr = (cr & ~_BV(2)) | ((~ (cr & _BV(2)) ) & _BV(2)); //Инвентируем CLOCK WriteRTL(CONFIGD,cr); //Завершаем операцию WriteRTL(CONFIGD,0); } на выходе получается что-то вроде : Цитата: 0011111 00000000 BYTE: 0x0
1011111 00000000 BYTE: 0x0 0111111 00000000 BYTE: 0x0 1111111 00000000 BYTE: 0x0 Хочу заметить, что DATA_IN и DATA_OUT это с моей стороны, со стороны 93c46 они наоборот. Для меня OUT для 93c46 - IN. |
Автор: | Spider [ Сб янв 21, 2006 09:18:04 ] |
Заголовок сообщения: | |
"93C46 работает в режиме 16-и битной адресации если ножка 7 (ORG) не подключена к лог. нулю." Как это понимать. Если она в воздухе весит это как? |
Автор: | PoWeR [ Сб янв 21, 2006 10:26:47 ] |
Заголовок сообщения: | |
Spider писал(а): "93C46 работает в режиме 16-и битной адресации если ножка 7 (ORG) не подключена к лог. нулю."
Как это понимать. Если она в воздухе весит это как? Подозреваю это надо понимать так: если не лог 0, значит лог 1, значит работаем в 16 бит. адресации. Если висит в воздухе - значит лог 1 на ней нет - значит в 16 бит. адресации не работаем. Но возможно что я не прав. |
Автор: | Serega [ Сб янв 21, 2006 13:30:55 ] |
Заголовок сообщения: | |
Не, просто когда нога висит в воздухе, вообще нельзя быть уверенным, какой на ней уровень. Может быть как 1 так и 0. Зависит от расположения звезд, направления ветра и политической обстановки на ближнем Кавказе. ![]() |
Автор: | Spider [ Сб янв 21, 2006 15:28:53 ] |
Заголовок сообщения: | |
Итак. Значит надо её куда-то прислюнить? Если на хемлю это 0, а если на питание 1? Я правильно понял? |
Автор: | Serega [ Сб янв 21, 2006 15:29:56 ] |
Заголовок сообщения: | |
Прална мыслите, товарищ ![]() |
Автор: | Spider [ Сб янв 21, 2006 16:48:28 ] |
Заголовок сообщения: | |
Странно. Ну дык на сетевухе оно никуда не прислюнено. Значит работает ![]() |
Автор: | Spider [ Сб янв 21, 2006 19:08:23 ] |
Заголовок сообщения: | |
Господа! Вынул я 93с46 из кроватки на сетевухе и воткнул туда 3 диода (GND->DataOut,Clock,Select) "играясь" с комангдами сесетевухи (CONFIGD) удаётся зажигать и тушить диоды. Всё клёва, т.е. команды до микрухи пои доходят (надо пологать) Теперь немного о 4ой ноге, та что DataIn (со стороны сетевухи), что бы я туда ни писал она всегда 0 (и правильно, ведь от туда тока читать). Теперь мне моя логика подсказывает, что если я замкну на эту ногу +5V (выставлю туда лог. 1) и буду читать значения с регистра CONFIGD, то должен получать 1 в младшем бите. Ну как сказать... НЕ ПОЛУЧАЮ! Получаю только то что последним туда записал ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |