Вообще, начиная с версии 1.2 платы дисплей крепится в ней винтами и подпаивается гибкими проводками, так что тут можно любой дисплей ставить
Вид для печати
Вообще, начиная с версии 1.2 платы дисплей крепится в ней винтами и подпаивается гибкими проводками, так что тут можно любой дисплей ставить
Вопросик еще один: а без часиков платка должна запускаться?
Да, без часов должна запускаться
Спасибо большое!
Вчера прошивал usbasp программатором, после проверки записи по какому-то адресу ошибка выстреливала постоянно, и, как логично предположить, плата не запускалась.
Сегодня прошил usbtiny программатором - все прошилось и заработало! Субъективно, скорость программирования на usbtiny в разы меньше, чем на usbasp.
Вот набор команд для avrdude, может кому пригодится:
avrdude -c usbtiny -p m128 -Uefuse:w:0xFF:m -Uhfuse:w:0xC1:m -Ulfuse:w:0xBF:m -Ulock:w:0x3F:m
avrdude -c usbtiny -p m128 -Uflash:w:zx-tape-loader_8563_hwv-1_2.hex -Ulock:w:0x3F:m
[свернуть]
Еще вопросы:
1) подсветка экрана почему-то выключается, когда нажимаю на любую кнопку. UPD: подсветка (вероятно на моем экземпляре экранчика) просто инверсная? Когда в настройках сделал ей Off - она постоянно включена :)
2) есть ли прошивка 1.1.3 для платы v1.2 + pcf8563 с разной контрастностью ? на моем экранчике все очень темно и на темном фоне.
3) будет ли когда-нибудь прошивка в открытом доступе, дабы не мучать автора подобными вопросами ? :)
Вот-вот-вот, знакомая беда.. Впервые пытался зашить 128ю мегу китайским usbasp-ом, у которого предварительно менял прошивку на официальную, с сайта usbasp-а (изначально китайский программатор был запрограммирован какой-то другой прошивкой). Запрограммировать именно мегу128 никак не получалось. После чего, заказал новый usbasp (а спустя полгода и ещё один), не перепрошивал их, и с обоими всё работает.
2) забыл об этом написать, но контрастность можно настроить. Выключаем питание магнитофона, затем зажимаем одновременно клавиши влево, вправо и центральную после чего включаем питание (продолжая удерживать клавиши). Если услышали мелодию, то удачно попали в меню настройки контрастности.
Навигация там следующая:
- вверх/вниз: точная регулировка контрастности
- центр: грубая регулировка контрастности с шагом в 10
- вправо: сохранить контрастность и выйти
И есть звуки, по которым можно ориентироваться, если совсем ничего не видно.
Ну и если на экране хоть что-то видно, то контраст всегда можно изменить в настройках
1) раз такое дело, то добавлю в будущем еще и выбор типа подсветки - нормальный/инверсный в инженерное меню настройки контраста
3) как показывает опыт, выкладывание исходников в общий доступ в данном случае может привести разве что к появлению немного видоизменённых клонов девайса и будет на руку только разным барыгам :) Разбираться в коде и дорабатывать прошивку в рамках опенсорса всё равно никто не станет. За примерами далеко ходить не надо - есть известная конструкция магнитофона на atmega16 с открытыми исходниками, за несколько лет её существования не встречал её открытых доработок. Но зато, в продаже его можно видеть на разных сайтах.
Пока у самого есть желание заниматься прошивкой, публиковать исходники не планирую. Если/когда это дело надоест, наверное, выложу на гитхаб )
Все получилось! Спасибо! Этот момент однозначно в доку или в readme нужно :)
Я не уверен, что это с экраном беда.
Проверил еще раз, оторвал от экрана провод подсветки, сажаю на GND - нет подсветки, сажаю на VCC - есть подсветка.
Из чего делаю вывод, что в моем экране подсветка ведет себя, как и полагается.
Но вот другой вопрос - в прошивке что-ли бяка какая-то с инверсным выходом сигнала подсветки? Или мне китайцы атмегу какую-нибудь бракованную подсунули ? :)
Добро :)
Ну, github репозитарий можно завести не только ради исходников прошивки, но и ради бинарников прошивки + схемы в eagle + gerber'ов + картинок.
Просто юзать его как средство дистрибуции материалов к устройству :)
- - - Добавлено - - -
Еще вопрос: какая максимальная длина имени файла, поддерживаемая прошивкой ?
Были замечены такие глюки:
1) ABU SIMBEL PROFANATION (SYNDICATE).TAP - не запускается
2) ARKANOID (KIRILL PANYUSHKIN).TAP - не запускается
3) EXOLON (BILL GILBERT).TAP - запускается
4) EXOLON (-).TAP - запускается
из чего можно сделать вывод, что после какой-то критической длины имени файла все ломается.
Какие-то огрызки имени файла, который не удалось запустить, потом видно в меню уровнем выше.
То же самое с wav-иками:
1) EXOLON.wav - запускается
2) Exolon(1987)(HewsonConsultants).wav - не запускается
Ага. Странно, что никто из собирающих до сих пор не задал этот вопрос :)
Выяснилось, что есть экраны с разным типом подсветки - моя включается именно низким уровнем, похоже. Т.е., и с экраном, и с МК всё в порядке, надо будет только опцию в прошивку добавить.
Максимальная длина имени файла - 16 символов. Больше, мне кажется, нет смысла делать, т.к. на экране всё равно не уместится. А памяти у МК не так много.
Еще есть пара мелочей в английской версии интерфейса:
1) пункт SAVE в главном меню логичнее переименовать на RECORD, либо пункт PLAY на LOAD
2) в настройках пункт Highlight вероятно будет уместнее заменить на Backlight (вроде по количеству букв совпадает, так что должно влезть) :)
Согласен, сделаю, спасибо :)
А тем временем... попытка застеклить проект :)
andykarpov, платки сам делал или у кого то купил? лишней нет ?
Trol73, спасибо за отличную разработку!
Тащусь прям от ZX магнитофона :)
Очень хотелось бы новую версию прошивки, в которой можно было бы программно (в настройках?) выставлять уровень выходного сигнала, и, возможно, входного.
С моим Harlequin rev G. сигнал очень высокий получается, и ловлю постоянно R Tape Loading Error...
Заменил резистор R8 на 2.2к - вроде бы стало получше :)
А вот с Tape In никак не могу разобраться - не ловит ничего :(
Уровень выходного сигнала от Harlequin при этом где-то 470 мВ - не знаю, это мало или много.
Буду рад любой помощи.
- - - Добавлено - - -
И еще - можно ли уточнить номиналы C9 и C12 - там не опечатка ? 1.5мкФ и 10мкФ соотв. ?
- - - Добавлено - - -
ЗЫ: С TapeIn разобрался - подобрал R5 до 2.2k. Все работает отлично!
Уровень входного сигнала программно совершенно точно никак не получится регулировать - он работает как цифровой.
По уровню выходного - выход развёл, на всякий случай на пин МК с ШИМ-ом, так что, в теории, можно было бы попробовать им рулить.. Но насколько это будет успешным - и не начнёт ли компьютер ловить помехи от ШИМа - пока не представляю.
Как вариант, я бы попробовал добавить делитель напряжения прямо в аудиокабель для Арлекина.
Изначально аналоговую часть делал глядя на варианты схемы из этой темы, но они у меня не заработали. В итоге пришёл к тому, что сейчас есть. Откуда взялось 1.5мкФ уже не вспомню - либо из той схемы, либо просто вписал результат расчётов.. Либо, скорее всего, когда экспериментировал на макетке, поставил туда выводной 1.5uF и потом, когда заработало, срисовал этот номинал в схему. На самом деле ставлю тут 1.0 uF.
А 10uF - тут всё верно.
А новая версия 1.3 научилась писать с ориона 128 без BAW?
Версия 1.3 - это только версия печатной платы.
Пока никак не могу запустить РК86 чтобы добавить поддержку его форматов
86РК наконец запустил, в связи с чем добавил поддержку воспроизведения файлов RK, RKR и GAM. Пока, возможно, ещё сыровато, но уже вполне работает.
Свежие прошивки на гугл-диске, ссылку добавил в первое сообщение.
Файлы прошивок с суффиксом "invert_lcd" - версия для дисплеев, у которых подсветка включается логическим нулём (т.е., включение светодиодов с общим анодом, как было во всех предыдущих прошивках).
Файлы без этого суффикса - для дисплеев, у которых подсветка включается единицей (т.е., светодиоды включены с общим катодом).
Ещё сделал компиляцию проекта под макось, исполняемый файл так же на гугл-диске. Нормально воспроизводить файлы с компа не получится, т.к. тайминги не соблюдаются, но интерфейс полностью рабочий (и для разработки очень удобно - теперь можно тестировать многие вещи не заливая прошивку на девайс и имея нормальные логи).
И ещё одно обновление. В версии 1.1.5 исправлен баг навигации по файлам и добавлено меню конфигурации для воспроизведения RKR - можно настроить скорость и количество нулей, посылаемых перед блоком данных
Спасибо за классный девайс. Сделал на самопальной платке. Прошивка последняя. Есть пару замечаний:
1.Вывод Write Protect работает наоборот.
2.Дата модификации файла изменяется даже просто при его чтении.
3.Вход в подкаталоги и запуск воспроизведения логичнее было-бы средней кнопкой, а не кнопкой вправо.
В остальном все отлично. Пришлось только подобрать смещение на VT1 по максимуму на коллекторе.
P.S. Почему-то не регулируется контрастность?... Она отличная, но не меняется...
Спасибо за этот багрепорт, сам бы я долго не догадался проверить дату модификации. 1 и 2 - серьёзные баги, буду править.
По поводу средней кнопки - в первой версии девайса её не было. Поэтому, воспроизведение включалось правой кнопкой. Когда появилось сохранение и экранная клавиатура, добавилась средняя кнопка. На неё хочу повесить как бы контекстное меню, где можно посмотреть информацию о файле, удалить/переименовать его и т.п. Но сейчас там пока только имя файла. Вопрос, насколько логичнее было бы выводить это меню по правой кнопке, а не по центральной, если менять их местами...
То, что контрастность не регулируется - это хорошо. Это значит, что дисплей не требует настройки контрастности и одинаково хорошо показывает всегда, бывают и такие.
Спасибо автору, за магнитофон!
Действительно нужная вещь (или как сейчас принято - девайс)! Собрал, прошил, заработал (Veni, vidi, vici)! Использовать для таких целей смартфон, или звук от компьютера, для меня все равно что, купить холодильник и переехать ближе к ГРЭС, что бы питать этот холодильник напрямую от этой ГРЭС :)
Некоторые детали поставил те, что были в наличии: С9 - 1мкф, С12 - 4,7мкф, VT1 и VT2 - BC847 (VT1 без изменений в обвязке). R12 - 33 ом.
Пробовал на Ленинград-3, Пентагон-128, и пишет и читает. Есть Арлекин, но на нем нет TL712, так что попробовать не могу. Те TL712, что купил на Али, сгорели мгновенно :)
Прошивка v1.1.3. Что есть уже новая, заметил недавно, надо будет перепрошить.
Вопрос по версии под макось: при запуске не находит библиотеку /usr/local/opt/portaudio/lib/libportaudio.2.dylib.
Попробовал поставить ее из homebrew репозитария, поставилось, только не уверен в правильной версии.
Бинарь запускается, на секунду показывается окошко и все схлопывается по Segmentation fault. Вот кусок лога:
UPD: ага, создал руками директорию sdcard, все завелось :)Код:./zx-tape-loader
RESIZE FILE (0)
Current working dir: /Users/andy/Downloads/tape-simulator/macosx
dir0=/Users/andy/Downloads/tape-simulator/macosx
dir1=/Users/andy/Downloads/tape-simulator/macosx
dir2=/Users/andy/Downloads/tape-simulator/macosx
cd = /Users/andy/Downloads/tape-simulator/macosx/sdcard/
open dir /Users/andy/Downloads/tape-simulator/macosx/sdcard/
Segmentation fault: 11
интересная штука, а что с помощью ее можно делать ?
Да, действительно, надо будет подправить креш без sdcard. И заодно под линукс скомпилировать :)
Основной смысл этого эмулятора - возможность писать прошивку без заливки её каждый раз на девайс, что облегчает жизнь мне. Ну и заодно даёт представление о магнитофоне и его интерфейсе тем, кто не видел аппарат в живую :)
Исходники открыть не планируется?
Пока не планируется
Trol73, а как на счет работы с Радио 86РК и ПК"Специалист" ?
А заодно и для Вектора, Корветов, Ириши, Океана, Apple-1 и БК в плане возможности файлы этих машинок проигрывать на магнитофонный вход. Выбор типа ретромашины можно заложить в расширение файла после последней " ."
Для спека это к примеру .tap, а для РК86 - .rk86.
Так сделано это уже, месяца три тому назад:
Воспроизведение RKR работает, запись на очереди. Хотя, в BAW можно сохранять уже сейчас.Цитата:
Сообщение от Trol73
Сохранение в RKR тоже в планах. Уже начал его делать, но пока что-то не смог разгадать формат, в котором 86РК сохраняет данные..
не нашел поиском по теме
как ускорить загрузку с данного магнитофона ? увеличить скорость загрузки
Вопрос автору, а не пытались напрямую посадить аппарат на цифровые линии (после компаратора)?
Наличие постоянной составляющей в сигнале позволит реализовать что-то наподобие COM-порта, а двунаправленный обмен позволит радикально увеличить скорость передачи информации.
То есть у вашей железки будет два режима работы:
1. Как обычный магнитофон.
2. Как аналог терминала у PC-совместимых компьютеров.
Дело в том, что "терминальный" режим может передавать данные со скоростью порядка 300 тактов на байт: игра в 40 килобайт загрузится за 3.5 секунды на обычном компе и меньше чем за 2 секунды на разогнанном до 7 мегагерц.
Да, игры придётся незначительно адаптировать (это просто если в программе LOAD '' CODE для загрузки и RANDOMIZE USR для запуска)
и написать загрузчик в кодах (чтобы игру можно было выбрать с клавиатуры) - это чуток посложнее.
В настройках TAP можно указать скорость проигрывания - x2, x4, x8. При этом надо будет пропатчить ПЗУ для работы на повышенной скорости.
Вообще, в платах последних версий вывел свободные пины МК и на них можно сделать цифровую передачу.Цитата:
Сообщение от mmxdmv
Но тут возникает, как минимум, вопрос, кто будет переводить игры под такой загрузчик?
Кстати, передать 40кб за 2-4 секунды, девайс, подозреваю, не сможет - atmega работает на 16 МГц, а чтение данных из файла (который, потенциально, может быть сильно фрагментирован) с карты памяти - операция не такая быстрая, как хотелось бы.
А ещё, магнитофон питается от 3.3В и входным сигналам с уровнем 5В будет не рад
В своём посте я имел в виду не "свободные пины", а те же самые Save/Load только в цифровой части. Т.е. те же линии подключить поближе к триггерам.
Ну или можно другие линии, но только активировать либо один либо другой режим.
Это да, это боль. Я мог бы попробовать сделать приём сектора, но спектрум сильно поломался (вплоть до потери платы). На эмуляторе, полагаю, такую фишку не реализуешь.
Если интересно, то можем как-нибудь списаться или даже голосом поговорить - там идея примитивна, банально пара-тройка десятков команд процессора z80 (в минимальном виде).
А "переводить игры" - это громко сказано. Если игра не LOAD "" CODE: RANDOMIZE USR - то её не переводить (оставить в формате магнитофона). Думаю больше половины игр сами "переведутся".
А вот тут вы не совсем правы. В синхронном режиме, безусловно, прочитать не получится. Это если будем бегать по FAT, если будем побайтно читать...
Но кто мешает сделать это в асинхронном?
То есть контроллер читает очередной сектор с флешки целиком себе в оперативу (вроде 512 байт на сектор?). Народ пишет, что 512 байт микроконтроллером реально прочитать за 20мс. Но это не принципиально, Z80 всё равно будет ожидать. А вот дальше включается синхронный режим и все 512 байт залетают в одном цикле. Дальше опять рассинхрон и опять ожидание.
40 килобайт * 20мс = 800 мс. Ну подумаешь, с фрагментацией это ожидание в одну секунду уложится (не четыре секунды будет, а пять).
Можно сиё опробовать не на магнитофоне а на 5 вольтовой ардуинке. Ну или одну из плат магнитофона до конца не собирать (критичные к 3.3 вольтам детали не ставить). И даже флешка не нужна - попробовать часть памяти программ микроконтроллера отправить.
Честно говоря, не вижу большого смысла в поиске альтернативных быстрых вариантов загрузки по магнитофонному интерфейсу. Лично для меня весь смысл магнитофона был в том, чтобы услышать "тёплый ламповый" звук загружаемых игр и увидеть бегущие по бордюру полосы. Для быстрой загрузки, кмк, достаточно дисковода или его симулятора, и это всё уже сделано.
Я пока ещё не достиг первоначально поставленной цели - поддержки TZX, и пока это задача №1.
Также от китайцев стало приходить слишком много брака среди 5110 дисплеев и есть желание перейти на цветные экраны 128x128. Для этого уже готовы такие переходные платки предназначенные для установки на место 5110 и со своим собственным МК, который будет заниматься выводом на экран.
http://trolsoft.ru/content/sch/avr-l...8/pcb_mini.jpg
Воспроизводить RKR - без проблем. Записывать - может в формате BAW. Запись в RKR пока не сделал, т.к. не смог пока понять, как распознавать сигнал, выдаваемый 86РК.
Сделал сохранение с компьютера в BAW файл, отконвертил его в WAV, открыл в Audacity
https://d1ro8r1rbfn3jf.cloudfront.ne...EJJBIZWFB73RSA
В начале идут стартовые импульсы, потом должен идти байт 0xE6, следующего вида
https://d1ro8r1rbfn3jf.cloudfront.ne...EJJBIZWFB73RSA
И я пока не могу разгадать, как этот байт найти в записанном сигнале?
Ясно.
Я тут не помощник, может это как то поможет, хотя, наверное это Вы все читали PK + PC
Там пишут, что в “Радио-86РК” каждый бит данных в процессе записи заменяется двумя битами, причем логическая 1 заменяется на 01, а логический 0 — на 10. Для записи одного байта требуется передать через интерфейс 16 бит.
Вот как это делает ЮТ-88, у них с РК одинаковый формат, только период у РК 0,9мс, а у ЮТ - 0,666мс
Код:
TYPE_READ_ADDR1:
push b
push d
push h
push psw
rst 6 ;ввод смещения в DE (адрес сохранения программы = ADDR+DE)
mvi a,0FFH
call TYPE_RD_BIT ;читаем синхро и старший байт адреса загрузки ADDR
mov h,a
call TYPE_RD_BYTE ;читаем младший байт адреса загрузки ADDR
mov l,a
dad d ;адрес сохранения программы = ADDR+DE
mov b,h
mov c,l
push b
call TYPE_RD_BYTE ;старший байт адреса конца программы
mov h,a
call TYPE_RD_BYTE ;младший байт адреса конца программы
mov l,a
dad d
xchg
L01DF:
call TYPE_RD_BYTE
stax b
call CMP_BC_DE ;сравниваем текущий адрес с рассчитанным адресом конца программы
inx b
jnz L01DF
pop b
jmp CRC_BC_DE
;
TYPE_RD_BYTE:
mvi a,008H
call TYPE_RD_BIT
ret
;Чтение битовой последовательности в А с магнитофона
;вх. А=0xFF - поиск байта синхронизации и
;чтение старшего байта адреса загрузки, А=0x08 - чтение байта
TYPE_RD_BIT:
push b
push d
mvi c,000H
mov d,a
in 0A1H
mov e,a
L0130:
mov a,c
ani 07FH
rlc
mov c,a
L0135:
in 0A1H
cmp e
jz L0135
ani 001H
ora c
mov c,a
call WAIT_TYPE_RD_BIT
in 0A1H
mov e,a
mov a,d
ora a
jp L0163
mov a,c
cpi 0E6H ;ловим синхробайт 0xE6
jnz L0157
xra a
sta RAM_0xC3FC
jmp L0161
;
L0157:
cpi 019H
jnz L0130
mvi a,0FFH
sta RAM_0xC3FC
L0161:
mvi d,009H
L0163:
dcr d
jnz L0130
lda RAM_0xC3FC
xra c
pop d
pop b
ret
WAIT_TYPE_RD_BIT:
mvi b,02DH ;константа, зависит от скорости процессора
L0170:
dcr b
jnz L0170
ret
Как кодируются и декодируются байты - понятно. К тому же, сейчас это уже реализовано - RKR-файлы магнитофон успешно воспроизводит.
Но как его расшифровывать сигнал на конкретном приведённом примере - не понятно. Первым байтом должен идти 0xE6, именно он изображен на картинке внизу. И блок данных на диаграмме выше должен начинаться именно с этого байта - два коротких положительных импульса, длинный положительный, короткий положительный, длинный отрицательный и т.д.
Но я не вижу этой последовательности в начале реального записанного сигнала. Я там вообще длинных горизонтальных "полок" (между битами D3 и D2) внизу диаграммы не вижу, хотя, они должны быть в сигнале..
Для начала попробую ещё раз загрузить полученный WAV-файл, может, данные побились при конвертировании..
Приведенный Вами скрин действительно какой-то странный - нет нижних "полок", т.е. перехода 0 - 1. Вот как должен выглядеть 0xE6:
Нашёл 0xE6. Если смотреть логическим анализатором непосредственно на выходе ИК55, она там есть. Но после прохождения RC-цепочек 86РК и входного каскада магнитофона сигнал искажается