PDA

Просмотр полной версии : Радио-86РК или как "понюхать" систему команд переключателями



tihsasha
11.01.2013, 21:14
Сейчас будет много букв.
Для многих сейчас сборка компьютера состоит из похода в магазин и покупке по комплектующим, а то и целиком.
Многие может и хотели бы разобраться во всём этом досканально, но посмотрев на чипы на платах понимают что это сложно.
Хочется что бы кто то прочитав это начал заниматься программированием на ассемблере или собрал РК86 или еще что то.
У меня было всё примерно так. В 5-м классе (1979 год) я начал собирать всякие усилители, приёмники и прочее. Радиокружка в школе не было. Вернее он открывался и через пару месяцев преподаватель изчезал. Потому, что ходить оставались 2 человека. Я и мой друг одноклассник Игорь. Так было раза 3. К концу школы меня больше интиресовали цифровые схемы. Часы.. Любимый мой журнал был конечно же "Радио". Ждал, ну когда же сегодня придёт почта и пренесут ли свежий номер. Сейчас всё проще, есть Интернет и куча информации. В 1982 году в "Радио" начался цикл статей о КР580ИК80А и о компьютере "Микро-80". Читал я всё это и мало чего понимал. Какие то шины адреса, данных, управления. Заканчивая школу я точно знал куда пойду учиться. Я поступил в Ленинградский радиоаппаратостроительный техникум (ЛРАСТ). И вот когда я сел там первый раз за компьютер, мне стало сразу интиресно - как это всё работает? Конечно же меня поразил Basic.
Это сейчас ребенок на сенсорном телефоне играет и не чему не удивляется, а тогда...
В 1986 году в "Радио" начался цикл статей о "Радио-86РК". Конечно всё это интересовало, но где взять детали, плату.
Сидим мы с моим другом Андреем на скамейке перед техникумом и смотрим свежий номер "Радио" №6 1986. А там на обложке РК-86 рабочий. Я говорю Андрюхе -"И ведь кто то его собирает. Где всё это брать? Да и стоит наверно дорого". Прошло чуть больше полгода. Я собирал тогда усилитель Зуева с многопетлевой Обратной связью из №11 1984г. Мне нужны были светодиоды на лицевую панель.
- "Андрюх, где бы светодиоды купить?".
- "Съезди на толкучку у "Юного техника" в Автово. Там найдешь". Эта "толкучка" дедушка рынку "Юнона" в Питере. И вот эту дату я запомнил на всё жизнь. Было 31 января 1987года. Естестенно суббота. Приехал я на "толкучку". Светодиоды конечно купил. А народ во всю "пёрло" на Радио-86РК. Микросхемы в продаже были все. Цены такие -
КР580ИК80А, КР580ИК55, КР580ИК57, 573РФ2(5) по 10р.
555КП11 по 5р
КР580ВГ75 - 30р.
565ру3 по 30р за 8шт.
печатная плата 20р (правда её мне где то Андрюха доставал, рыночная может дороже была, не помню).
пару микросхем 155-й серии можно было и так найти, поспрашивая у знакомых.

Собрать это можно было например на степендию. Она была 34р (повышенная) и родители оставляли её мне (большущее им спасибо). Приехал я домой с "толкучки" достал все журналы про РК-86 и стал "въезжать". Первое что я купил была печатная плата. Шло время, покупались и впаивались детали. Про прошивку 573РФ5 надо особо рассказать. Их как извесно в РК 2 шт (573РФ1 уже в то время все меняли на 573РФ2 или 5). В одной программа Монитор, в другой знакогенератор. Желательно ещё и 3-я для теста. Среди друзей и знакомых я был первопроходцем в сборке РК. Советы можно было получить читая журнал "Радио". Для программирования 573РФ5 был собран ручной программатор из №10 1986г. 11 бит адреса и 8 бит данных устанавливались переключателями П2К. Для записи нужно было щелкнуть кнопку. Чистая 573РФ5 содержит во всех 2048 8-ми битных адресах '1'. Программирование сводится к записи '0' в нужные места. Смотришь таблицу прошивки в журнале, нажимаешь на переключателях адрес, данные и щелкаешь кнопку "запись". Если запишешь '0' туда, где должна быть '1', печально - берешь ультрафиолетовую лампу, светишь в окошко 573РФ5 при этом она вся очищается и по всем адресам прописываются '1'. И всё сначала. Так я и ошибся разок. Ну и где взять ультрафиолет? Ах да Солнце светит. Положил я 573рф5 на Солнце и подождал пару часов. Нефига. Как было так и есть всё. Это к тому, что как то на форуме видел "Окошко на ПЗУ у тебя не заклеено. От вспышки фотоаппарата стереться может". Да, сейчас. Нашел я ультрафиолет у знакомого работающего в ЛИТМО (Ленинградский институт точной механики и оптики). Ну программатор я усовершенствовал перед новой попыткой записи. Выкинул переключатели адреса и поставил триггеров 155тм2. Они теперь формировали 11 бит адреса. Еще был взят люминисцентный индикатор ИВ-28 и на нем я сделал индикацию адреса и данных в шеснадцатиричном виде. Вот теперь было всё ок. Прошил и монитор и знакогенератор. В дальнейшем я разработал свой програматор, который подключался к 580ИК55 РК86 и всем друзьям и знакомым "шил" 573РФ5 в течении секунд 40. Ну это было потом.
К октябрю 1987 года у меня было собрано всё. Не хватало только 30 рублей на 8шт 565ру3. Как мне повезло. Да повезло. К плате был подключен пошагиватель, который позволял посмотреть логическим пробником что творится на шинах адреса, данных и управления во время выполнения команд из ПЗУ монитора. Там стояла 573рф5, прошитая тестом из №7 1986. Тогда до меня всё дошло окончательно. Купил я наконец 565ру3 8шт. О да, ещё же и подключение к телевизору было...
Был у меня тогда к комнате черно-белый "Крым" на лампах!!! Нашел я на схеме сетку лампы входа видеоусилителя и подключил туда разъём.
Ещё одна дата которую я ни когда не забуду - 2 ноября 1987 года. Мученье над изображением шли уже пару дней. Я видел на экране вроде строки с буквами, которые я набираю на клавиатуре. Только строки эти были какими то сильно размазанными. Нет, это было не из за строчной развёртки. Я нашел у знакомого осциллограф (здоровый не описуемо). Тыкаюсь я осциллографом в разные точки на плате формирующие видео, а дружок Игорь на диване сидит и смотрит.
Вдруг Игорь как закричит - "Надпись РАДИО-86РК чистая!!!". В это время я держал щуп осцила на триггере D13.1 по схеме РК (не помню на какой ноге). Замена 155тм2 решила проблему. В ночь на 3-е ноября я почти не спал. Утром надо было ехать на учебу, а я набирал с журнала первую игрушку - "Питон". Пошаговая отладка РК научила меня программировать в кодах. И ассемблер стал моим любимым языком. Сейчас программирую для микроконтроллеров AVR только на нём.
Потом пошел бум на "Sinclair". Много было вариантов собрано и продано. Как то он мне не очень по душе был. В 1990 году начался в журнале цикл статей про "Орион". Конечно был собран. Программ на него было не очень много в то время. Больше всего мне тогда хотелось собрать IBM совместимый комп. В 1990 году на "толкучке" появились печатные платы и схемы Правец-16. Ностальгия по этому компу такая же как и по РК86. Блин, хоть на слепыше собрать сейчас. У меня остались от него схемы, прошивки, кому интиресно заведу отдельную тему. Собирал их несколько шт. Также занимался запуском плат спаянных народом. Попросили ребята (Игорь и Оскар) продающие платы. "У тебя же комп работает. Занялся бы запуском плат. А то люди покупают платы, впаивают детали и всё. Думают что сразу заработает. Подходят к нам, просят помочь запустить" - это мне было сказано, сам бы не решился заняться. В тоже время на рынке была мода собирать компьютер "Поиск". Я его делать не стал. На него нельзя было поставить стандартную плату от IBM - у него разъемы шины были другие. Также в нем не было контроллера ПДП. Что явно где то могло вылезти боком. Потом появились платы IBM Turbo-XT. Работал на частоте 10мгц. Это в 2,1 раза быстрее чем Правец-16. Их тоже собирал. Только там была 1556ХП6. Прошивка ее "осталась за кадром".

В настоящее время хотелось собрать что то чтобы объяснить-показать, как работает процессор. Конечно любимый и родной именно КР580ВМ80А. Сделать стенд для изучения проца без вывода на монитор не интиресно. Вот если бы стенд превратить потом (подключением платы) в РК86 и показать что и на самодельном компьютере работают игрушки и языки программирования. Так была разработана и собрана процессорная плата и пульт управления. Пультом можно захватить шины ВМ80 и записать-прочитать память. Можно смотреть в систему команд ВМ80А и написать на бумажке простую программу из десятка байт. Занести это в ОЗУ. Отдать управление шинами процессору и в пошаговом режиме на светодиодах посмотреть, что творит проц. А для не знающих творит он много интересного.

.... когда написал всё что хотел получил сообщение
Вы ввели слишком длинный текст (13976 символов). Пожалуйста, сократите его до 10000 символов ...

Продолжение следует...

tihsasha
11.01.2013, 21:15
... продолжу

Заносим с адреса 0000: 3E 55 32 С0 77 3E AA
На ассемблере будет так


MVI A, 55h ; Занести 55h в аккумулятор
STA 77C0h ; записать из аккумулятора по адресу 77С0h
MVI A, 0AAh ; Занести 0AAh в аккумулятор


Процессор на шинах будет творить следующее


шина
адрес данные управление
0000 3E -MEMRD (чтение из памяти)
0001 55 -MEMRD (чтение из памяти)
0002 32 -MEMRD (чтение из памяти)
0003 C0 -MEMRD (чтение из памяти)
0004 77 -MEMRD (чтение из памяти)
77C0 55 -MEMWR (запись в память) Во блин, куда это проц полез. Сказал я себе в 1987году.
0005 3E -MEMRD (чтение из памяти)
0006 AA -MEMRD (чтение из памяти)


Ещё интиресно посмотреть как проц себя ведёт когда мы обращаемся к подпрограммам.
Заносим с адреса 0000: 31 FF 74 21 12 17 CD 0A 00 76 E5 21 99 88 00 E1 C9

На ассемблере будет так


0000 31 FF 74 LXI SP, 74FFH ; НАСТРОИТЬ УКАЗАТЕЛЬ СТЕКА
0003 21 12 17 LXI H, 1712h ; посестить в HL пару значение 1712h
0006 CD 0A 00 CALL DELAY ; ВЫЗОВ ПОДПРОГРАММЫ Delay
0009 76 HLT ; останов

000A E5 DELAY: PUSH H ; СОХРАНИТЬ В СТЕКЕ ЗНАЧЕНИЕ РЕГИСТРОВОЙ ПАРЫ HL
000B 21 99 88 LXI 8899h ; ТУТ САМА ПОДПРОГРАММА. И она "портит" регистрвую пару HL,
000E 00 NOP ; НО МЫ СЕЙЧАС больше НИЧЕГО НЕ ДЕЛАЕМ
000F E1 POP H ; ВОССТАНОВИТЬ HL пару
0010 C9 RET ; ВОЗВРАТ ИЗ ПОДПРОГРАММЫ


Процессор на шинах будет творить следующее


шина
адрес данные управление
0000 31 -MEMRD (чтение из памяти)
0001 FF -MEMRD (чтение из памяти)
0002 74 -MEMRD (чтение из памяти)
0003 21 -MEMRD (чтение из памяти)
0004 12 -MEMRD (чтение из памяти)
0005 17 -MEMRD (чтение из памяти)
0006 CD -MEMRD (чтение из памяти)
0007 0A -MEMRD (чтение из памяти)
0008 00 -MEMRD (чтение из памяти)
74FE 00 -MEMWR (запись в память) ; ЭТО ПРОЦЕССОР СОХРАНИЛ В СТЕКЕ АДРЕС КУДА ОН ДОЛЖЕН
74FD 09 -MEMWR (запись в память) ; ВЕРНУТЬСЯ ИЗ ПОДПРОГРАММЫ. АДРЕС 0009
000A E5 -MEMRD (чтение из памяти)
74FC 17 -MEMWR (запись в память) ; ЭТО ПРОЦЕССОР СОХРАНИЛ В СТЕКЕ ЗНАЧЕНИЕ HL ПАРЫ.
74FB 12 -MEMWR (запись в память) ; в HL ПАРЕ ЗНАЧЕНИЕ 1712h
000B 21 -MEMRD (чтение из памяти)
000C 99 -MEMRD (чтение из памяти)
000D 88 -MEMRD (чтение из памяти)
000E 00 -MEMRD (чтение из памяти)
000F E1 -MEMRD (чтение из памяти)
74FB 12 -MEMRD (чтение из памяти) ; ЭТО ПРОЦЕССОР ВОССТАНОВИЛ ИЗ СТЕКА
74FC 17 -MEMRD (чтение из памяти) ; ЗНАЧЕНИЕ HL ПАРЫ 1712h
0010 C9 -MEMRD (чтение из памяти)
74FD 09 -MEMRD (чтение из памяти) ; ЭТО ПРОЦЕССОР ВОССТАНОВИЛ ИЗ СТЕКА
74FE 00 -MEMRD (чтение из памяти) ; АДРЕС СЛЕДУЮЩЕЙ КОМАНДЫ ПОСЛЕ ВЫЗОВА ПОДПРОГРАММЫ. АДРЕС 0009
0009 76 -MEMRD (чтение из памяти)


Вот так.

На процессорной плате стоит ПЗУ 8кБ и занимает стандартные адреса РК E000-FFFFh. Да, да с E000. Именно так разбито адресное пространство 555ИД7 в РК. Значит по адресу 0000 в ПЗУ я пишу команду безусловного перехода на адрес F800h. Остальное место (6кБ) остается под наши дополнения. Об этом чуть позже.
Для подключения к VGA монитору я изменил в мониторе настройку контроллера дисплея 580ВГ75 (идею взял отсюда http://www.zx-pk.ru/showthread.php?t=13148). Все программы РК-86 работают нормально. ОЗУ поставил статическое на 32кБ.
Сначала в схеме у меня стоял системный контроллер 580ВК28 - для буферирования шины данных и дешифрации сигналов чтение/запись памяти и чтение/запись портов. В РК-86 как известно обращение ко всем контроллерам идёт как к ячейкам памяти, а не портам. Ну я то делал пульт на котором есть светодиоды обращения к портам (команды IN, OUT). Короче не получилось жить вместе 580ВК28 и 580ВТ57. ПДП нормально не стартовал. Я поставил ПДП 1810ВТ37, написал прогу инициализации 1810ВТ37 и 580ВГ75, прошил в ПЗУ и изображение на мониторе появилось - ПДП заработало. Но инициализация ВТ37 длиннее, чем ВТ57. Пришлось выкинуть системный контроллер и заменить его на 555АП6 и 555ЛП8. На плате так и осталась пустая панель под 580ВК28.

Для превращения в полноценный РК-86 была разработана плата на которой стояли контроллер ПДП (580ВТ57), контроллер дисплея (580ВГ75) со своей "обвязкой", порты 580ВВ55. Клавиатуру решил подключить от PC PS/2. Контроллер PS/2-клавиатуры был взят из http://www.zx-pk.ru/showthread.php?t=9294
Надо было ещё откуда то и программы загружать. Придумал ROM-диск. Флеш память использовал PA28F400 512КБ. Ну просто была микросхема. Как я ее "прошивал" отдельная история.

Схемы я рисую в программе Orcad v9.2 Печатные платы разрабатываю в SprintLayOut. Выложить всё сюда я не смог. Больно много и размеры ... Всё в архиве можно скачать отсюда http://narod.ru/disk/65375399001.09480564b1f8e3d0e949e641bda9682d/RK86.rar.html
Там схемы, платы, фотографии, прошивки. Кстати там в прошивке Монитора 4 раза одно и тоже записано. После эксперементов осталось.

Что творю сейчас. Ну надо как то связать РК и РС. Придумал схему на 580ВВ51. Сделал дополнительные 2 директивы для ввода и вывода по COM (место то в ПЗУ 6кБ свободно). Прога со стороны PC написана на Delphi. И уже собирался печатную плату травить, как передумал. Хочу сделать так. Берем SD диск и форматируем на РС в FAT16. Пишем нужные нам файлы на SD. Вставляем в РК. Читаем с SD и запускаем. Переписать назад с РК на PC не обдумывал. Мне вроде не надо.
Может что то забыл написать. Спрашивайте.

goodboy
11.01.2013, 23:26
строки "пляшут" в примерах на асме. В редакторе всё нормально смотрелось.
надо применять тэг `code` (в расширенном режиме символ #)

DATAsoft
11.01.2013, 23:51
Ну надо как то связать РК и РС
Они уже и так связаны аудиокабелем.:)
Берем SD диск и форматируем на РС в FAT16. Пишем нужные нам файлы на SD. Вставляем в РК. Читаем с SD и запускаем.
Это уже не РК...

tihsasha
12.01.2013, 00:04
Они уже и так связаны аудиокабелем.

У меня не связаны ;) Не хочу я программить Sound Blaster на PC.

----- Это уже не РК...

Почему? ROM-диск подключали, дисковод подключали, принтер подключали, ВИ53 и ВВ51 тоже. Вроде РК был. Время идет. Пора SD подключить. А вот собирать РК на 100-ногих чипах это уже не РК. ИМХО.

DATAsoft
12.01.2013, 01:05
tihsasha, тогда возьми эмуль. Вот тебе и РК-86!
И паять ничего не надо...

---------- Post added at 01:05 ---------- Previous post was at 01:03 ----------

Считаю, что те самые "компы", либо есть в оригинале, либо это уже не они!

twm
12.01.2013, 01:31
Считаю, что те самые "компы", либо есть в оригинале, либо это уже не они!

Commodore 64ый с эмулем дисковода на флешке не перестаёт быть коммодором, ведь так? Иметь под рукой удобную замену плёнке/гмд - кажется, никогда не было преступлением.

Классические машинки обрастают удобствами - это же отлично. Такое имхо. Лишь бы новые устройства не прорастали зоопарком несовместимых вариантов с одной и той же целью.

tihsasha
12.01.2013, 09:38
tihsasha, тогда возьми эмуль. Вот тебе и РК-86!
И паять ничего не надо...

Совсем не понята душа электронщика :v2_ohmy:
Я в "железе" привык на всё смотреть. Когда то я увидел многими любимый
Proteus. Ну надо попробовать. Взял пару своих проектов на микроконтроллерах, работающих продолжительное время и попробовал. Так вот они в Proteus или совсем не работали или очень криво. В железе оно всегда лучше. Далее я на эту тему спорить не буду. Каждому своё.

tihsasha
18.01.2013, 13:29
Чтение файлов с SD карты приближается. Осталось припаять провода и сделать добавку к программе монитора.

Atari
18.01.2013, 15:03
Commodore 64ый с эмулем дисковода на флешке не перестаёт быть коммодором, ведь так?
в програмно аппаратную структуру самого комода вносятся изменения? нет, ведь так?

twm
18.01.2013, 19:40
Atari,


Схоластика.

Удобство новой периферии ни на йоту не меняет идеологию классической "застывшей" платформы - такое имхо. Навязывать же человеку, 'покусившемуся на каноны', эмулятор - как-то ультимативно, лол.

tihsasha
22.01.2013, 15:28
но вот автор что-то молчит подозрительно....

Как будет что то интиресное - выложу. Пока мучаю обмен с SD. Я работал с ней раньше. Тут пока ответа от ее нет. В ответ шлет 0FFh. Занимаюсь в свободное время, поэтому и долго. Да и отладчика для ВМ80 на PC типа AVRstudio нет не фига.

---------- Post added at 14:28 ---------- Previous post was at 14:27 ----------

Ну вот от SD ответ получен.

sergey2b
25.01.2013, 20:46
tihsasha а можно пожалуйста посмотреть вашу схему

tihsasha
26.01.2013, 12:33
tihsasha а можно пожалуйста посмотреть вашу схему

Если схема всего, кроме подключения SD карты, то во 2-м посте ссылка http://narod.ru/disk/65375399001.094.../RK86.rar.html А если именно подключение SD интиресует, то буду дома и выложу (вечером). Сейчас у меня с SD нормально читаются сектора. "Курю" FAT16 для РК. Еще думаю как вообще это будет жить. Наверно так. В мониторе добавится директива, при вводе которой будет читатся SD и выводится список программ. Можно будет выбрать нужную и запустить. Еще из прикола - я взял SD карту 2Gb (самое то для РК86 :biggrin:). Её бы в 87 году с PDF файлом иметь :D. Вот облом то оказаться в 87 году с SD картой, но без доки на неё :eek: . Моё подключение к SD карте во вложении. С резистором R12 надо быть осторожным. Как оказалось РК86 НЕ ЛЮБИТ ПРИТЯЖКИ ШИНЫ ДАННЫХ К +5В. Когда я первоначально всю шину данных притянул к +5В через 10К (при этом у меня ещё и буфер 555АП6 стоит), были проблемы с ПДП. Я ставил контроллер ПДП КР1810ВТ37 (i8237) с соответствующим изменением инициализации ПДП - проблема исчезла. Так я выяснил, что кр580ВТ57 по выходному току не тащит эти притяжки.
Короче R12 придётся подобрать, чтобы и открытый коллектор 555ЛП8 был к +5 притянут ('1' нормальная была) и 580ВТ57 нормально работала (до '0' шину "опускала" ). Если всё, что хочу с SD сделаю к своему варианту РК86, выложу как сделать всё это на стандартном РК86. Придётся пяток микросхем добавить и ПЗУ увеличить. Ну или вторую РФ5(2) для монитора поставить, как я ещё в 1988 году делал, что бы у дружка РК86 с помощью дополнительных директив магнитофоном управлял.

sergey2b
29.01.2013, 21:31
tihsasha большое спасибо за схему
скажите пожалуйста чем ваш вариант лучше чем делать работу с sd на микроконтроллере
скажите пожалуйста а в чем вы схему рисовали

tihsasha
29.01.2013, 22:08
чем ваш вариант лучше чем делать работу с sd на микроконтроллере

Можно было на микроконтроллере сделать. Хотя смысла не вижу. Зачем он тут нужен. Я старался сделать стенд для изучения железа школьниками. Поэтому и схему отладки не стал на МК делать. Можно было и индикаторы семисегментники для отображения адреса-данных поставить. Только фигу - пусть молодёжь привыкает двоичный код на светодиодах в шестнадцатиричный переводить. Я и клавиатуру хочу родную кнопочную сделать, чтобы сразу МК в PS/2 переходнике не пугал сложностью.


скажите пожалуйста а в чем вы схему рисовали
Я ведь в самом начале писал, что схемы рисую в Orcad9.2, платы развожу в SprintLayOut 5.0 Выложеная схема скриншот с Orcad, он ведь не у всех стоит.

---------- Post added at 21:08 ---------- Previous post was at 20:49 ----------

Пришлось делать подпрограммы 32-битной арифметики для ВМ80. Адреса то однако 32-битные у SD. Полазил по сети, готовых не нашел. Уже работают.

sergey2b
29.01.2013, 23:05
скажите пожалуйста вы используйте trial Orcad9.2 или какую то другую версию

tihsasha
07.02.2013, 13:12
Про чтение программ с SD карты.
Сначала я эксперементировал с mikro-SD картой размером в 2Gb.
Всё шло нормально. Потом я увидел, что с FAT развлекуха будет не "по полной программе". На SD карте размером в 2Gb кластер занимает минимально 32кБ. Т.е. любая программа для РК-86 туда влезет.
В итоге таблица FAT будет забита одними FFFFh (признак конца файла). Поэтому, для развлекухи по полной, нашел карту mikro-SD размером 64мБ. Эту карту можно отформатировать с размером кластера 1кБ.
SD карта должна быть отформатирована на РС в FAT16.
Нормально понимаются программы формата *.RKR и *.GAM
Все программы должны быть расположены в корневом каталоге. Их может быть 485 шт. Для РК-86 столько просто нет.

Что сделано сейчас. При вводе директивы 'K' на экран выводятся все файлы корневого каталога.
Сортировку я не делал. Хотя при желании можно.
Выбор файла для запуска осуществляется четырьмя стрелками курсора. Страницы можно листать кнопками "+" и "-". По нажатию "Enter" ещё не сделана загрузка и запуск выбранного файла. Но скоро будет.

На фотке слева длинное имя файла "BASMIKRON.RKR" обрезалось прямо как на РС под DOS :biggrin:

tihsasha
21.02.2013, 14:59
При формировании процессором сигналов обмена с SD, скорость получилась примерно 512 байт в секунду (что примерно в 12 раз медленнее, чем ROM-диск). Всем извесная программа "Клад" длинной 13145 байт грузится 25 сек. Работает:v2_dizzy_bye: Да, это с выдачей на экран отладочной информации при загрузке. Выводятся адреса секторов SD.
Но надо ещё чуть доделать.

Mifody
22.02.2013, 10:48
Пока ваши разработки применимы только для вашей версии РК? Вы сделаете потом порт для стандартной РКшки? С инструкцией, как это всё замутить на стандартной РК?

tihsasha
22.02.2013, 13:12
Вы сделаете потом порт для стандартной РКшки? С инструкцией, как это всё замутить на стандартной РК?

Я про это в 17-м посте писал. Доделаю и про стандартный прикину. Тем более, что у меня и стандартный РК-86 есть.

Alex-DJ
01.03.2013, 00:19
А чем открыть файлы Monitor.rom и Znakogen.rom ?

Vladimir_S
01.03.2013, 02:36
А чем открыть файлы Monitor.rom и Znakogen.rom ?
Ну вообще то смотря где они находятся.Если на РС, то любым HEX редактором.

Alex-DJ
01.03.2013, 23:34
А прошивки тест-программы ни у кого нет случайно?

АлександрПП
02.03.2013, 00:17
Пожалуйста.

tihsasha
09.03.2013, 21:25
Не понял я как ответить на личное сообщение. Кнопки "ответить" не видно. Отвечу Alex-DJ здесь.

--------
Правильно ли я понял что если подавать на вход 2 последовательных
данных в виде нулей и единиц тактированными частотой тактового ---- генератора поданной на 5 вывод,они будут записываться в карту? если это так,то как включается запись и как она выключается,тоесть чтоб записать а потом только считывать.
--------

Сначала в SD_Card посылается команда из которой карта понимает, что от нее хотят. В сети полно информации
на русском
http://www.piclist.ru/S-64MMC-PIC-RUS/S-64MMC-PIC-RUS.html
http://www.gaw.ru/html.cgi/txt/app/memory/mmc.htm

на английском
http://elm-chan.org/docs/mmc/mmc_e.html
http://alumni.cs.ucr.edu/~amitra/sdcard/ProdManualSDCardv1.9.pdf

Alex-DJ
10.03.2013, 02:10
tihsasha, спасибо что ткнули носом в эти ссылки...Но из всего опять непонятки есть.Везде даются наборы команд для общения с картой,но нигде нет их побайтовой расшифровки.
Например CMD0 это GO_IDLE_STATE ........... А как это выглядит в битах и байтах.Подмогните плиз,уж очень хочется в этом разобраться.

http://savepic.org/2932435m.jpg (http://savepic.org/2932435.htm)

tnt23
10.03.2013, 09:38
Alex-DJ, классика: http://elm-chan.org/docs/mmc/mmc_e.html

Alex-DJ
10.03.2013, 12:35
Alex-DJ, классика: http://elm-chan.org/docs/mmc/mmc_e.html
я эту таблицу:
http://savepic.org/2932435m.jpg (http://savepic.org/2932435.htm)
как раз оттуда и взял...Мне нужно эти команды в битах и байтах....Там же нет этого.

b2m
10.03.2013, 13:33
/* Definitions for MMC/SDC command */
#define CMD0 (0x40+0) /* GO_IDLE_STATE */
#define CMD1 (0x40+1) /* SEND_OP_COND (MMC) */
#define CMD8 (0x40+8) /* SEND_IF_COND */
#define CMD9 (0x40+9) /* SEND_CSD */
#define CMD10 (0x40+10) /* SEND_CID */
#define CMD12 (0x40+12) /* STOP_TRANSMISSION */
#define CMD16 (0x40+16) /* SET_BLOCKLEN */
#define CMD17 (0x40+17) /* READ_SINGLE_BLOCK */
#define CMD18 (0x40+18) /* READ_MULTIPLE_BLOCK */
#define CMD23 (0x40+23) /* SET_BLOCK_COUNT (MMC) */
#define CMD24 (0x40+24) /* WRITE_BLOCK */
#define CMD25 (0x40+25) /* WRITE_MULTIPLE_BLOCK */
#define CMD55 (0x40+55) /* APP_CMD */
#define CMD58 (0x40+58) /* READ_OCR */
#define ACMD13 (0x40+13) /* SD_STATUS (SDC) */
#define ACMD23 (0x40+23) /* SET_WR_BLK_ERASE_COUNT (SDC) */
#define ACMD41 (0x40+41) /* SEND_OP_COND (SDC) */

Перед ACMDxx нужно сначала дать команду APP_CMD.
Как видно из определений, код команды соответствует её имени + 0x40.

Обрати внимание также на power sequence (http://elm-chan.org/docs/mmc/sdinit.png надо с того сайта (http://elm-chan.org/docs/mmc/mmc_e.html) кликать, так не показывается, ссылка в абзаце Initialization Procedure for SPI Mode)

Alex-DJ
10.03.2013, 13:41
Блин,наверное я или тупею или старею....Извините за занудство....но опять не понял...Взять например #define CMD0 (0x40+0) /* GO_IDLE_STATE */
Это 0x40+0 я так понял и есть код,но как его превратить в вид или такой 00001111 или такой 0F ?

b2m
10.03.2013, 13:49
0x40+0 = 0x40 это и есть шестнадцатиричное число 40, двоичное 01000000, биты выдаются начиная с самого левого.

Alex-DJ
10.03.2013, 13:58
))))))) Точно старею....А что значит в команде CMD10 (0x40+10) +10 ?
Скажу что я хочу на первое время...подключить карточку без всяких контроллеров,с кнопками и светодиодами,и всё пощупать в ручном пошаговом режиме...как она записывает байт и как она потом его считывает.Может на просторах интернета есть такое,может кто уже пробовал делать такой стенд с пошаговым выполнением комманд,используя что то типа как в РК86 пошагиватель.С микроконтроллерами я пока не дружу,поэтому начал с простейшего...Буду благодарен за ваши ответы.

Vladimir_S
10.03.2013, 14:06
используя что то типа как в РК86
Вот и используй РК86, только не в режиме пошагивателя, а в программном пошаговом режиме.Будет очень наглядно. Да и всем наверное интересно будет.Мне так очень.

Alex-DJ
10.03.2013, 14:17
у меня нету РК86....и у меня цель обвесить карточку кнопками и светодиодами и пощупать.

Vladimir_S
10.03.2013, 14:28
у меня нету РК86....и у меня цель обвесить карточку кнопками и светодиодами и пощупать.
Я не имел в виду именно РК. Можно даже на LPT подвесить.

С микроконтроллерами я пока не дружу
Или вот тебе и повод подружиться.

Alex-DJ
10.03.2013, 14:31
нужно знать какую битовую последовательность в карту посылать а меня с этим сейчас туго,вот и разбираюсь )

Vladimir_S
10.03.2013, 14:36
Однако тоже надо. Правда пока одни вопросы. Например.
#define CMD10 (0x40+10) /* SEND_CID */
Это 0х50 или 0х5А?

b2m
10.03.2013, 14:38
А что значит в команде CMD10 (0x40+10) +10 ?
Ээ... команда номер десять :)

---------- Post added at 15:38 ---------- Previous post was at 15:36 ----------


#define CMD10 (0x40+10) /* SEND_CID */
Это 0х50 или 0х5А?
Ну это же кусок кода на С, т.е. будет 0х4А :)

Vladimir_S
10.03.2013, 14:40
Это 0х50 или 0х5А?
Поторопился, конечно 0х4А.

Alex-DJ
10.03.2013, 14:43
Vladimir_S, оказывается я не один такой пытатель карт )))))))) А то валяется несколько карт по 256 мегабайт...надо же их изучить изнутри )

А теперь объясните как вы из 0x40+10 получили 0х4А ?

Vladimir_S
10.03.2013, 14:54
А теперь объясните как вы из 0x40+10 получили 0х4А ?
Десятичная 10 это шестнадцатеричная А.
Заразили черти - пойду завтра карту искать. Какую лучше?

Alex-DJ
10.03.2013, 15:07
Vladimir_S, ха ха ха,давайте.......будем вместе ковырять ) Уменя карта Silicon Power 256 MB

---------- Post added at 15:07 ---------- Previous post was at 15:00 ----------

значит так получается,чтоб получить команду 0x40+10 в нормальном к употреблению виде,нужно сложить арифметически 0x40 с 10 преобразованной в шестнадцатеричный вид.ТАК? Получается 4A.
Но зачем столько сложностей то,мозг сломать можно...Нельзя было все команды в шестнадцатиричном коде давать?
Есть ли где такая таблица команд готовая,чтоб не заниматься сложением с преобразованием? Мои поиски пока не увенчались успехом.

Vladimir_S
10.03.2013, 15:16
будем вместе ковырять
Да я не против.Только наверное тема не та? Но если ковырять, то у меня много вопросов к здешним спецам. Например к vinxru. Вот первый - есть ли толковая информация на русском?

---------- Post added at 14:09 ---------- Previous post was at 14:07 ----------


Но зачем столько сложностей то,мозг сломать можно...

b2m, ведь сказал - это на С.

---------- Post added at 14:16 ---------- Previous post was at 14:09 ----------


Есть ли где такая таблица команд готовая,чтоб не заниматься сложением с преобразованием? Мои поиски пока не увенчались успехом.
У тебя ведь в компе есть калькулятор.Вид - инженерный. он тебе сам преобразует.

Alex-DJ
10.03.2013, 15:24
Vladimir_S, Разве вид инженерный а не программист?

Vladimir_S
10.03.2013, 15:28
Vladimir_S, Разве вид инженерный а не программист?
У меня просто нет такого вида - программист.

Alex-DJ
10.03.2013, 15:35
http://savepic.org/2902773m.jpg (http://savepic.org/2902773.htm)

А может откроем новую тему про пощупать карту кнопочками,а нафлудили мы тут )))))) А эту часть сообщений про карту SD попросим модеров перенести туда.

Vladimir_S
10.03.2013, 16:11
Уже спрашивал.

Да я не против.Только наверное тема не та?

---------- Post added at 14:59 ---------- Previous post was at 14:38 ----------


/* Definitions for MMC/SDC command */
#define CMD0 (0x40+0) /* GO_IDLE_STATE */
#define CMD1 (0x40+1) /* SEND_OP_COND (MMC) */
#define CMD8 (0x40+8) /* SEND_IF_COND */
#define CMD9 (0x40+9) /* SEND_CSD */
#define CMD10 (0x40+10) /* SEND_CID */
#define CMD12 (0x40+12) /* STOP_TRANSMISSION */
#define CMD16 (0x40+16) /* SET_BLOCKLEN */
#define CMD17 (0x40+17) /* READ_SINGLE_BLOCK */
#define CMD18 (0x40+18) /* READ_MULTIPLE_BLOCK */
#define CMD23 (0x40+23) /* SET_BLOCK_COUNT (MMC) */
#define CMD24 (0x40+24) /* WRITE_BLOCK */
#define CMD25 (0x40+25) /* WRITE_MULTIPLE_BLOCK */
#define CMD55 (0x40+55) /* APP_CMD */
#define CMD58 (0x40+58) /* READ_OCR */
#define ACMD13 (0x40+13) /* SD_STATUS (SDC) */
#define ACMD23 (0x40+23) /* SET_WR_BLK_ERASE_COUNT (SDC) */
#define ACMD41 (0x40+41) /* SEND_OP_COND (SDC) */
А ели на человеческом языке?

Vladimir_S
10.03.2013, 16:18
Vladimir_S, ваше вложение не отображается почему то
Да это не вложение, это так, просто учусь. И еще прошу, не надо на вы. Мы здесь не на светском рауте.

Alex-DJ
10.03.2013, 16:21
Да это не вложение, это так, просто учусь. И еще прошу, не надо на вы. Мы здесь не на светском рауте.
а что там было?

Vladimir_S
10.03.2013, 16:30
а что там было?
В PIC MicroC есть встроенная библиотека работы с SD картами. Вот я и хотел картинку подключения скопировать.Да что то не знаю как.

Alex-DJ
10.03.2013, 16:42
Внизу где пишутся сообщения надо перейти в расширенный режим сообщений,а там есть упраление вложениями,потом надо выбрать и закачать картинку с компа.

---------- Post added at 16:42 ---------- Previous post was at 16:35 ----------

http://savepic.org/2937354m.jpg (http://savepic.org/2937354.htm)

или можно загрузить сюда http://savepic.net/ а потом взять третью ссылку и вставить сюда в сообщение.

Vladimir_S
10.03.2013, 16:58
Alex-DJ, Не в этом проблема, в MicroC есть встроенный русифицированный help, с картинками подключения к контроллеру.Я копирую картинку, а вот вставить ее куда нибудь не получается. То есть нажимаю на правую кнопку мыши, вылазит контекстное меню, где всего два пункта - копировать и свойства. В свойствах пишет что это GIF, копирую, при копировании пишет вставить, а ничего не вставляется.

Alex-DJ
10.03.2013, 17:05
Alex-DJ, Не в этом проблема, в MicroC есть встроенный русифицированный help, с картинками подключения к контроллеру.Я копирую картинку, а вот вставить ее куда нибудь не получается. То есть нажимаю на правую кнопку мыши, вылазит контекстное меню, где всего два пункта - копировать и свойства. В свойствах пишет что это GIF, копирую, при копировании пишет вставить, а ничего не вставляется.
смотри личку

b2m
10.03.2013, 21:25
А ели на человеческом языке?
Например, чтобы получить код команды CMD30 (в том списке нет), нужно 30 перевести в шестнадцатиричный вид, это 1Eh, и добавить шестнадцатиричную 40h, получим 5Eh.

Alex-DJ
10.03.2013, 22:45
Ну вот,уже кое что прояснилось ... Спасибо !!! Но пока карту ковырять не начал,времени не хватает...Но уверен будут ещё вопросы.
А вот более полный набор команд:


/** MMC/SD card SPI mode commands **/
#define CMD0 0x40 // software reset
#define CMD1 0x41 // brings card out of idle state
#define CMD2 0x42 // not used in SPI mode
#define CMD3 0x43 // not used in SPI mode
#define CMD4 0x44 // not used in SPI mode
#define CMD5 0x45 // Reserved
#define CMD6 0x46 // Reserved
#define CMD7 0x47 // not used in SPI mode
#define CMD8 0x48 // Reserved
#define CMD9 0x49 // ask card to send card speficic data (CSD)
#define CMD10 0x4A // ask card to send card identification (CID)
#define CMD11 0x4B // not used in SPI mode
#define CMD12 0x4C // stop transmission on multiple block read
#define CMD13 0x4D // ask the card to send it's status register
#define CMD14 0x4E // Reserved
#define CMD15 0x4F // not used in SPI mode
#define CMD16 0x50 // sets the block length used by the memory card
#define CMD17 0x51 // read single block
#define CMD18 0x52 // read multiple block
#define CMD19 0x53 // Reserved
#define CMD20 0x54 // not used in SPI mode
#define CMD21 0x55 // Reserved
#define CMD22 0x56 // Reserved
#define CMD23 0x57 // Reserved
#define CMD24 0x58 // writes a single block
#define CMD25 0x59 // writes multiple blocks
#define CMD26 0x5A // not used in SPI mode
#define CMD27 0x5B // change the bits in CSD
#define CMD28 0x5C // sets the write protection bit
#define CMD29 0x5D // clears the write protection bit
#define CMD30 0x5E // checks the write protection bit
#define CMD31 0x5F // Reserved
#define CMD32 0x60 // Sets the address of the first sector of the erase group
#define CMD33 0x61 // Sets the address of the last sector of the erase group
#define CMD34 0x62 // removes a sector from the selected group
#define CMD35 0x63 // Sets the address of the first group
#define CMD36 0x64 // Sets the address of the last erase group
#define CMD37 0x65 // removes a group from the selected section
#define CMD38 0x66 // erase all selected groups
#define CMD39 0x67 // not used in SPI mode
#define CMD40 0x68 // not used in SPI mode
#define CMD41 0x69 // Reserved
#define CMD42 0x6A // locks a block
// CMD43 ... CMD57 are Reserved
#define CMD58 0x7A // reads the OCR register
#define CMD59 0x7B // turns CRC off
// CMD60 ... CMD63 are not used in SPI mode

Vladimir_S
10.03.2013, 23:39
b2m, я имел в виду типа brings card out of idle state, а есть ли по русски? А в шестнадцатеричной системе я иногда даже думаю.

HardWareMan
11.03.2013, 06:39
"Разбудить" карту. Или "активировать". Там есть такая особенность.

tihsasha
11.03.2013, 07:11
Уже 30 постов идёт флуд. Специально же отослал человека к источникам информации. И вообще, для разбора работы с SD достаточно её PDF.

Vladimir_S
11.03.2013, 09:55
http://s019.radikal.ru/i630/1303/26/01cc59a19ea0.jpg
С утра побегал, теперь можно учить матчасть.

b2m
11.03.2013, 11:26
я имел в виду типа brings card out of idle state, а есть ли по русски?
По-русски: установить DI и /CS в еденицу, выдать 74 или более клоков, после чего можно подать команды CMD0 и ACMD41, при этом контрольная сумма должна быть правильная. После инициализации контрольная сумма не проверяется. Инициализация проводится на низкой частоте (от 100 до 400 КГц).

HardWareMan
11.03.2013, 11:37
Воспользуйтесь вполне внятным мануалом, написанным 5 лет назад Романычем.

Vladimir_S
11.03.2013, 14:17
Пока ничего не понял. Тягостно осознавать собственную тупость.Тут однако кнопочками и светодиодиками не обойдешься.

demetrius2003
28.03.2014, 05:55
Господа! У кого сохранился файл RK86.rar который в начале темы во втором посте? С "Народа" его уже удалили. А что-то посмотреть хочется очень!

tihsasha
28.03.2014, 07:26
Перезалил сюда http://yadi.sk/d/PQRkKDOzLLjB4

demetrius2003
28.03.2014, 09:04
Спасибо! Сохранил!

artyr_n
28.03.2014, 12:34
tihsasha а есть какие то подвижки с проектом?

tihsasha
28.03.2014, 14:58
есть какие то подвижки с проектом?
Делалось это чтобы показать школьникам на кружке работу 580ВМ80.
Попутно подключил SD карту. Больше я этим проэктом не занимаюсь.

artyr_n
28.03.2014, 16:11
Попутно подключил SD карту.
А исходниками не поделитесь?

tihsasha
28.03.2014, 18:01
А исходниками не поделитесь?
Существуют разные SD карты и у них разные команды инициализации. Например у меня есть 64mb, 128mb, 2Gb. С картой 128mb у меня так ничего и не получилось.
Так чтобы меня никто потом не пинал - "А у меня не работает". Я не буду это выкладывать. Что я хотел, я получил. Меня устраиват. Я не стал доделывать чтение всей цепочки FAT, когда увидел скорость. С картой 2Gb любая программа РК влезает в один кластер. В корневом каталоге читаем начальный кластер нужной программы и читаем ее полностью.