User Tag List

Страница 31 из 47 ПерваяПервая ... 272829303132333435 ... ПоследняяПоследняя
Показано с 301 по 310 из 476

Тема: Эмулятор AY-8910 на ATMega

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну, тут вверху генератор огибающей, внизу генератор шума. Смысл в том, что код уменьшился, хотя, до этого казалось, что уменьшить его уже нереально

    UPD: последние достижения, количество циклов МК в цикле генерации звука
    Версия 24.2 MIN - 72, MAX - 132
    Версия 24.3 MIN - 75, MAX - 115
    Выигрыш на макс нагрузке - 17 циклов, это существенно, особенно для кварца в 20МГц, где на один цикл генерации звука отводится 90 циклов МК, меньше шансов пропуска прерываний, более качественный звук.
    Конечно максимальная нагрузка это очень редкий случай, но он приводит к пропуску прерываний таймера и некачественной генерации.
    Для 115 циклов, чтобы всё успевало отрабатывать (имеется в виду прерывания по приходу регистров) рекомендуется использовать для конфига 1.75МГц кварц от 27МГц (122 цикла), для 2МГц конфига от 30МГц (119 циклов). Но, практика показывает, что даже для версии 24.2 (132 цикла) вполне приемлемое звучание дает кварц 24МГц.
    Предыдущие версии имеют еще большее количество циклов на максимуме.
    Мне еще удалось сделать версию со всеми счетчиками считающими в сторону увеличения с макс 128 циклов, но по звучанию она мало чем отличается от считающей в сторону уменьшения (за исключением генератора шума), так что я решил её не выкладывать, следующая будет версия 24.3, возможно удастся еще немного уменьшить количество циклов на максимуме.
    Последний раз редактировалось EvgenRU; 15.09.2016 в 16:00.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Выкладываю версию 24.3
    Улучешния - оптимизация описанная в предыдущем сообщении + небольшая оптимизация режима записи параллельного режима
    Проверил на реале, определяется в тесте 4.30 как YM2149F работает отлично

    ДОП ИНФО:
    режим чтения - 15 + 3*X циклов - X это количество циклов ожидания режима неактивности (Inactive Mode) после режима чтения.
    режим записи - 33 цикла
    режим адреса - 17 циклов
    Вложения Вложения
    Последний раз редактировалось EvgenRU; 20.09.2016 в 12:36.

  4. #3

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Новая 24.4 версия

    Что-нового:
    1. Количество циклов МК в коде генерации звука MIN - 69, MAX - 110 (если со спикером, то еще + 4 цикла, если трехканальная, то -5 циклов)
    1.1 оптимизированы генераторы тона на 1-2 цикла каждый
    1.2 снова вернул для шума понижающий отсчет
    2. Режим чтения уменьшился на 1 цикл, теперь для кварцев от 24МГц всё четко укладывается в минимальные 350нс (как указано в даташите) для установки шины данных и 400нс для её освобождения.

    PS: наверное это уже будет последняя версия, т.к. оптимизировать с виду уже нечего...
    PS2: для тех, кто до сих пор не понимает как подключить это дело к ZX выкладываю картинку
    Нажмите на изображение для увеличения. 

Название:	Emul_2_ZX.jpg 
Просмотров:	658 
Размер:	21.8 Кб 
ID:	58338
    Изображение полностью
    Вложения Вложения
    Последний раз редактировалось EvgenRU; 25.09.2016 в 21:25.

  5. #4

    Регистрация
    19.02.2010
    Адрес
    Энергодар
    Сообщений
    1,187
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    27
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    24.4 версия почему то плохо работает (искаженный звук) кварц 27
    а 24.2 нормально работает..

  6. #5

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    24.4 работает отлично, уже проверено много раз мной и другими, это самая лучшая версия звучащая наиболее близко к оригиналу, если даже не лучше Насчет 27, может не тянет атмега, попробуйте 25 и 24МГц или резистор в 1-5МОм на ноги кварца попробуйте напаять.

    Фактически эмулируется YM2149F, но отличие только в генераторе огибающей, в цикле в 2 раза больше ступенек у YM (т.е. огибающая более плавная), чем в AY-8910, разница в звучании конечно заметна слегка, но только на огибающих, в остальном чипы ничем не отличаются. Уровни тона в эмуляторе больше соответствуют AY, поэтому, это, скажем так, улучшенная версия обоих чипов )))

    PS: на всякий случай продублирую ссылку на версию 24.4, чтобы долго не искали.

    PS2: добавил экспериментальную 2 канальную версию со спикером и без спикера для Atmega48
    Вложения Вложения
    Последний раз редактировалось EvgenRU; 11.02.2017 в 20:21.

  7. #6

    Регистрация
    09.02.2017
    Адрес
    21.01.1978
    Сообщений
    20
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Собираю автономный AY-плеер типа айпода с сенсорным экраном (HMI экранчик от Nextion). В качестве основного контроллера взял ESP8266-ESP01.
    Собрал на макетке эмулятор на ATMega48 (только он запустился на 25 мгц, имеющиеся меги 8 оказались нестабильные уже на 24). Файлы читаю с MicroSD карты.
    Т.к. у ESP очень ограничено количество GPIO-портов, то эмулятор пришлось подключать через последовательный интерфейс.
    Внимание вопрос: насколько критичным будет добавить поддержку режима чтения в последовательный режим (поковырял исходники, ничего не нашел), т.к. очень хочется реализовать индикаторы уровня?



  8. #7

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от 3dEyes Посмотреть сообщение
    Т.к. у ESP очень ограничено количество GPIO-портов, то эмулятор пришлось подключать через последовательный интерфейс.
    Внимание вопрос: насколько критичным будет добавить поддержку режима чтения в последовательный режим (поковырял исходники, ничего не нашел), т.к. очень хочется реализовать индикаторы уровня?
    Могу предложить вариант эмулятора с 4 битной шиной, т.е. байт шлется в параллельном режиме, но за 2 раза по 4 бит, типа как в 1602 дисплее, я такой фигней заморочился когда делал автономный проигрыватель на 2х атмега8

    UPD: посмотрел описание, там всего 3 GPIO, так что этот вариант отпадает

    PS: еще вопрос, зачем для проигрывателя режим чтения? у вас же все регистры есть в памяти контроллера, это в ZX он был нужен для организации резидентного проигрывателя работающего по прерываниям, а считывание регистров которые играют производилось уже отдельным интерфейсом.
    Последний раз редактировалось EvgenRU; 11.02.2017 в 13:56.

  9. #8

    Регистрация
    09.02.2017
    Адрес
    21.01.1978
    Сообщений
    20
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На самом деле там GPIO портов несколько больше, просто не все выведены на разъём с чипа. Я расширил их до 8 штук + 2 UART вот таким колхозным способом:

    4 порта идут на подключение SD-карты, 2 на подключение экрана (софтовый сериал), 1 TX аппаратного UART идёт к эмулятору
    Итого у меня есть ещё 2 свободных порта общего назначения + 1 RX от UART.
    Короче не густо.
    Изначально я пробовал делать на меге328 управляющий контроллер, но мне тупо не хватило оперативки под всё (но в тот момент у меня был подключен OLED экранчик, который требовал наличие знакогенератора и экранного буфера), но с переходом на Nextion потребность в оперативке снизилась, поэтому можно вернуться обратно к avr-варианту )

    А по поводу режима чтения, хм. т.е. предлагается анализировать отправляемые значения регистров и высчитывать уровень трёх каналов?

  10. #9

    Регистрация
    20.01.2016
    Адрес
    п. Власиха, Московская обл.
    Сообщений
    594
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    22 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от 3dEyes Посмотреть сообщение
    Изначально я пробовал делать на меге328 управляющий контроллер, но мне тупо не хватило оперативки под всё (но в тот момент у меня был подключен OLED экранчик, который требовал наличие знакогенератора и экранного буфера), но с переходом на Nextion потребность в оперативке снизилась, поэтому можно вернуться обратно к avr-варианту )

    А по поводу режима чтения, хм. т.е. предлагается анализировать отправляемые значения регистров и высчитывать уровень трёх каналов?
    Смысла переходить на мегу особо нет, параллельный режим в основном нужен, чтобы гонять оцифровки, а для этого нужно много памяти или специальный формат на SD, да и нет уверенности, что потянет. Если 50Гц, то последовательный режим самое то, я проверял, тянет аж до 2 килогерц в последовательном режиме, но нужно поднимать скорость TTL (текущая 57600).

    Насчет режима чтения, да, если у вас регистры в памяти, то просто берете их из памяти, а не из AY, ибо там они точно такие же, подозреваю, что в ZX режим чтения использовался потому, что проигрыватель писался одними товарищами, а использовался в программах других товарищей, которые не знали где в памяти располагаются данные регистров + во время прерывания значения в памяти могли изменяться.

    UPD: обновил архив с версией для Atmega48, добавил туда версию без спикера, т.к. в вашем случае он может издавать посторонние звуки из-за не подключенного порта спикера.
    Последний раз редактировалось EvgenRU; 11.02.2017 в 20:23.

  11. #10

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krotan Посмотреть сообщение
    а на самом деле они ощутимо по-разному звучат - послушайте и сравните. Причём, AY звучит чётко и звонко, а у YM какой-то мягкий приглаженный звук.
    Цитата Сообщение от EvgenRU Посмотреть сообщение
    в остальном чипы ничем не отличаются
    запилите 2 разных версии Ау и ум
    с разными огибающими
    и разными таблицами громкости
    и будет усем счастие

    труЪ таблицы громкости можно взять сдеся
    http://forum.tslabs.info/viewtopic.php?f=6&t=539
    так же от туда можно наклацать и таблицы громкостей от всяких WF19054

Страница 31 из 47 ПерваяПервая ... 272829303132333435 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Подключение AY-3-8910
    от Zloy в разделе Звук
    Ответов: 40
    Последнее: 21.01.2011, 12:20
  2. КПЛЮ AY 8912(8910) в харькове!
    от nickpush в разделе Барахолка (архив)
    Ответов: 74
    Последнее: 12.07.2009, 21:08
  3. Продам AY-3-8910
    от crolicasm в разделе Барахолка (архив)
    Ответов: 9
    Последнее: 17.03.2009, 15:25
  4. AY-3-8910(8912) и ВГ93
    от ALEXEY.GORDEEV в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 02.12.2007, 09:21
  5. О портах AY-3-8910...
    от ILoveSpeccy в разделе Звук
    Ответов: 2
    Последнее: 02.07.2007, 15:02

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •