Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 24

Тема: AY-3-8910 / AY-3-8912 и Arduino. Странное поведение

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Junior
    Регистрация
    14.06.2017
    Адрес
    г. Курск
    Сообщений
    7
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question AY-3-8910 / AY-3-8912 и Arduino. Странное поведение

    Здравствуйте уважаемые специалисты.

    Сразу скажу, что в плане практики со спектрумом и его деталями я новичок. С теорией немного получше, но не сильно.

    Я на досуге занимаюсь проектом создания автономного синтезатора на базе AY-3-8910 / AY-3-8912 и arduino (любая модель на atmega328). Устроен он следующим образом: весь ввод происходит через midi, внутри ардуино находится виртуальная модель синтезатора со своими "ручками" и другими высокоуровневыми параметрами, а в итоге всё это "рендерится" в низкоуровневый поток команд для AY.

    Это то что хотелось. а на практике у меня не получается нормально завести звуковой чип.
    И тема вродебы освещена на каждом углу и схем куча и все почти одинаковые. Но звука нет ни на смешаных каналах ни на каждом по-отдельности.

    Для начала и теста работоспособности я хотел повторить популярный плеер. Отсюда http://www.pvsm.ru/arduino/117267
    пробовал и тестовый скетч (самый первый, где данные берутся из массива) и полный вариант с картой.
    я пробовал разные варианты arduino, разные версии звуковых чипов.
    Заказывал на али две штуки AY-3-8910 и две штуки AY-3-8912 у разных продавцов. При подключении сверялся с даташитом по 100 раз. пробовал усилить выходы. получал просто типичный фоноый шум "цифрового характера".
    Все комбинации выдают одинаковый результат.

    Однажды собрав на беспаечной плате в очередной раз этот злосчастный плеер, я случайно задел провод земли и он выскочил из разъёма. Из выходов начал доноситься очень искаженный и безумно низкий (ну насколько это может AY) звук. сложно понять либо это очень заниженый "голос", или просто рваный "шум", но ритм явно прослушивался. На слух во всех трёх каналах шум абсолютно одинаковый.
    Я провёл тот же эксперимент на других чипах (и возможно привёл их в негодность). результат одинаковый.

    После этого мне пришла в голову ничем особо не подкреплённая идея, что это могут быть проблемы с несущей частотой и из-за этого звук так сильно искжается и занижается. экспериментируя с одним из чипов который я определил как "на убой" (окончательно). из него я помимо земли извлёк и clock. шум вообще никак не изменился. Попробовал собрать внешний генератор частоты на кварце. Результат тот же самый

    В итоге. когда всё подключено верно - звука нет, если отключить землю появляется звук ритмически совпадающий с песней или фрагментом, но с большими искажениями.

    И это для меня стало полным тупиком. Подскажите что это может быть. Куда копать? Подобного поведения я в сети так и не нашел. Сжег ли я чипы или все они изначальо были с дефектами и как это предотвратить с новыми.

    Я понимаю что идеально было бы проверить чипы внутри собственно спектрума, но увы у меня его нету и у знакомых вроде как тоже =(

    фотографии чипов.

    Скрытый текст




    [свернуть]


    Если для уточнения подробностей нужны ещё какие-то данные, я всё предоставлю, только скажите что именно.

    Заранее спасибо.

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

  3. #2
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,103
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от lemnos Посмотреть сообщение
    Если для уточнения подробностей нужны ещё какие-то данные, я всё предоставлю, только скажите что именно.
    В первую очередь было бы неплохо предоставить схему того что у вас собрано. В частности, лично мне не совсем понятно, каким образом между собой "общается" ПГЗ и "мега".

    Цитата Сообщение от lemnos Посмотреть сообщение
    Сжег ли я чипы или все они изначальо были с дефектами и как это предотвратить с новыми.
    Было бы неплохо проверить их на "исправность". Например в том же самом спектруме (правда, для этого необходимо его наличие "в железе").
    Где-то проскакивала информация про "новодельные" чипы, которые работают и звучат "несколько иначе". Также, я не стал бы исключать откровенный "левак" из отбраковки. К сожалению, такое далеко не редкость в наше время.
    Когда есть, но не знаешь где - это все равно, что нету.

  4. #3
    Junior
    Регистрация
    14.06.2017
    Адрес
    г. Курск
    Сообщений
    7
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от null_device Посмотреть сообщение
    В первую очередь было бы неплохо предоставить схему того что у вас собрано. В частности, лично мне не совсем понятно, каким образом между собой "общается" ПГЗ и "мега".
    вот схема подключения к ардуино, исполнение автора, могу в перерыве перерисовать в игле.


    вот тестовый код
    Код:
    void resetAY(){
      pinMode(A0, OUTPUT); // D0
      pinMode(A1, OUTPUT);
      pinMode(A2, OUTPUT);
      pinMode(A3, OUTPUT); // D3
      
      pinMode(4, OUTPUT); // D4
      pinMode(5, OUTPUT);
      pinMode(6, OUTPUT);
      pinMode(7, OUTPUT); // D7
      
      pinMode(8, OUTPUT);  // BC1
      pinMode(9, OUTPUT);  // BDIR
      
      digitalWrite(8,LOW);
      digitalWrite(9,LOW);
      
      pinMode(2, OUTPUT);
      digitalWrite(2, LOW);
      delay(100);
      digitalWrite(2, HIGH);
      delay(100);
      
      for (int i=0;i<16;i++) ay_out(i,0);
    }
    
    
    void setupAYclock(){
      pinMode(3, OUTPUT);
      TCCR2A = 0x23;
      TCCR2B = 0x09;
      OCR2A = 8;
      OCR2B = 3; 
    }
    
    void setup() {
      Serial.begin(9600);
      setupAYclock();
      resetAY();
    }
    
    void ay_out(unsigned char port, unsigned char data){
      PORTB = PORTB & B11111100;
    
      PORTC = port & B00001111;
      PORTD = PORTD & B00001111;
    
      PORTB = PORTB | B00000011;
      delayMicroseconds(1);
      PORTB = PORTB & B11111100;
    
      PORTC = data & B00001111;
      PORTD = (PORTD & B00001111) | (data & B11110000);
    
      PORTB = PORTB | B00000010;
      delayMicroseconds(1);
      PORTB = PORTB & B11111100;
    }
    
    unsigned int cb = 0;
    
    byte rawData[] = {
        0xFF, 0x00, 0x8E, 0x02, 0x38, 0x03, 0x02, 0x04, 0x0E, 0x05, 0x02, 0x07, 
        0x1A, 0x08, 0x0F, 0x09, 0x10, 0x0A, 0x0E, 0x0B, 0x47, 0x0D, 0x0E, 0xFF, 
        0x00, 0x77, 0x04, 0x8E, 0x05, 0x03, 0x07, 0x3A, 0x08, 0x0E, 0x0A, 0x0D, 
        0xFF, 0x00, 0x5E, 0x04, 0x0E, 0x05, 0x05, 0x0A, 0x0C, 0xFF, 0x04, 0x8E, 
        0x05, 0x06, 0x07, 0x32, 0x08, 0x00, 0x0A, 0x0A, 0xFF, 0x05, 0x08, 0x0A, 
        0x07, 0xFF, 0x04, 0x0E, 0x05, 0x0A, 0x0A, 0x04, 0xFF, 0x00, 0x8E, 0x04, 
        0x8E, 0x05, 0x00, 0x07, 0x1E, 0x08, 0x0F, 0x0A, 0x0B, 0x0D, 0x0E, 0xFF, 
        0x00, 0x77, 0x08, 0x0E, 0x0A, 0x06, 0xFF, 0x00, 0x5E, 0x07, 0x3E, 0x0A, 
        0x00, 0xFF, 0x07, 0x36, 0x08, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x8E, 0x07, 
        0x33, 0x08, 0x0B, 0x0A, 0x0F, 0x0D, 0x0E, 0xFF, 0x04, 0x77, 0x08, 0x06, 
        0x0A, 0x0E, 0xFF, 0x04, 0x5E, 0x07, 0x3B, 0x08, 0x00, 0xFF, 0x07, 0x1B, 
        0x0A, 0x00, 0xFF, 0xFF, 0xFF, 0x02, 0x1C, 0x03, 0x01, 0x04, 0x8E, 0x07, 
        0x33, 0x08, 0x0B, 0x0A, 0x0B, 0x0B, 0x23, 0x0D, 0x0E, 0xFF, 0x04, 0x77, 
        0x08, 0x06, 0x0A, 0x0A, 0xFF, 0x04, 0x5E, 0x07, 0x3B, 0x08, 0x00, 0x0A, 
        0x09, 0xFF, 0x07, 0x1B, 0x0A, 0x00, 0xFF, 0xFF, 0xFF, 0x02, 0x8E, 0x03, 
        0x00, 0x04, 0x0E, 0x05, 0x01, 0x07, 0x18, 0x08, 0x0F, 0x09, 0x0B, 0x0A, 
        0x0E, 0xFF, 0x00, 0x77, 0x02, 0x77, 0x04, 0x8E, 0x06, 0x01, 0x08, 0x0E, 
        0x09, 0x0A, 0x0A, 0x0D, 0xFF, 0x00, 0x5E, 0x02, 0x5E, 0x04, 0x0E, 0x05, 
        0x02, 0x06, 0x02, 0x09, 0x09, 0x0A, 0x0C, 0xFF, 0x02, 0x8E, 0x04, 0x8E, 
        0x07, 0x30, 0x08, 0x00, 0x09, 0x08, 0x0A, 0x0A, 0xFF, 0x02, 0x77, 0xFF,
        0xFF
    }
    
    void pseudoInterrupt(){
      while(rawData[cb]<0xFF){
       Serial.print("AY[");
       Serial.print(rawData[cb],DEC);
       Serial.print("] = ");
       Serial.print(rawData[cb+1],HEX);
       Serial.println();
       ay_out(rawData[cb],rawData[cb+1]);
       cb++;
       cb++;
     }
     if(rawData[cb]==0xff)cb++;
     
     if (cb>20*12) {
       Serial.println("==================================================== ZERO ==================================================");
       cb=0;
     }
    }
    
    void loop() {
      delay(20);
      pseudoInterrupt();
    }
    тактируется от шима на 3 пине.

    Цитата Сообщение от null_device Посмотреть сообщение
    Было бы неплохо проверить их на "исправность". Например в том же самом спектруме (правда, для этого необходимо его наличие "в железе").
    Где-то проскакивала информация про "новодельные" чипы, которые работают и звучат "несколько иначе". Также, я не стал бы исключать откровенный "левак" из отбраковки. К сожалению, такое далеко не редкость в наше время.
    Да было бы неплохо проверить "в железе", но увы пока нету возможности.
    А среди YM версий тоже такая же ситуация с леваком и отбраковкой?

    Цитата Сообщение от SoftFelix Посмотреть сообщение
    Я 8910 получил с такой же маркировкой. В Спекке (КАЙ-1024_2010) всё работает.
    Спасибо. Там как раз сейчас скидка, попытаю счастья у этого китайца.

  5. #4
    Guru
    Регистрация
    14.05.2015
    Адрес
    г. Харьков, Украина
    Сообщений
    2,940
    Спасибо Благодарностей отдано 
    150
    Спасибо Благодарностей получено 
    302
    Поблагодарили
    171 сообщений
    Mentioned
    4 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от lemnos Посмотреть сообщение
    вот тестовый код
    Может стоит откинуть UART, взять полный человеческий PD0 для шины данных что бы не выводить через куски портов по маске, сделать reset длиннее или вообще лучше кнопкой. В общем для теста стоит максимально все упростить, а то как то мудрено, как думаете ?
    Увы общий формат форума вышел из рамок моего любимого места , более тут не бываю.

  6. #5
    Junior
    Регистрация
    14.06.2017
    Адрес
    г. Курск
    Сообщений
    7
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от JV-Soft Посмотреть сообщение
    Может стоит откинуть UART, взять полный человеческий PD0 для шины данных что бы не выводить через куски портов по маске, сделать reset длиннее или вообще лучше кнопкой. В общем для теста стоит максимально все упростить, а то как то мудрено, как думаете ?
    Вечером обязательно переделаю под PORTD и долгий ресет и проверю на всех доступных чипах.

    Этот код и подключение я брал как заведомо провереные. Из оригинальной статьи которую автор ещё и на хабре постил (или гиктаймс). В комментариях не было жалоб на то что этот вариант не работает. Хотя конечно там комментарии часто вообще не о том =)

  7. #6
    Guru Аватар для SoftFelix
    Регистрация
    20.03.2007
    Адрес
    Санкт-Петербург
    Сообщений
    2,975
    Спасибо Благодарностей отдано 
    171
    Спасибо Благодарностей получено 
    102
    Поблагодарили
    88 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от lemnos Посмотреть сообщение
    Заказывал на али две штуки AY-3-8910
    Я 8910 получил с такой же маркировкой. В Спекке (КАЙ-1024_2010) всё работает.

    МГТФ - любимый провод!
    KAY-1024(4096)/SL-4/TURBO v2010 + Nemo-FDC + Nemo-IDE (CF 4GB) + SMUC2 Rev.B RTC (HDD 1.6GB + DVD-ROM) + PROF-ROM + ZXMC2 + GENERAL SOUND 2MB + ZX-BUS_TEE + FDD 3.5' + FDD 5.25' + VGA&PAL

  8. #7
    Master Аватар для siemensC35
    Регистрация
    13.10.2017
    Адрес
    г. Днепр, Украина
    Сообщений
    770
    Спасибо Благодарностей отдано 
    149
    Спасибо Благодарностей получено 
    131
    Поблагодарили
    111 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SoftFelix Посмотреть сообщение
    Я 8910 получил с такой же маркировкой. В Спекке (КАЙ-1024_2010) всё работает.
    Заказал по такой же цене. Приколхозил к Ленинграду на макетах и МГТФе по класической схеме с ЛЕ и ЛА3
    В итоге как и у автора ловлю белый шум
    1,75 брал со счетчиков в самом компе
    ( В другом источнике сигнал TST 2 висит в воздухе, ёсть мысля что его не нужно было подключать для АЮ )
    Схема класики бралась атседа :
    http://sblive.narod.ru/ZX-Spectrum/A...PTERforLUT.htm
    Извиняюсь что здесь спрашиваю зарание т.к мб вопрос не по теме

  9. #8
    Member
    Регистрация
    24.03.2008
    Адрес
    г. Рыбинск
    Сообщений
    123
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Делал примерно то же самое, только не на ардуино, а на ПЛИСе. Там были какие-то ньюансы, вроде бы в теме я их все описывал. По коду, вижу, что у меня используется отдельный генератор на 1.75 МГц. В то же время, в журнале записано, что этот генератор в итоге не пригодился. Не помню уже
    Мне повезло, ведь я не знал, рабочая ли микросхема, к тому же, я ее грубо выпаивал из старой платы. В случае с китайскими микросхемами, я бы начал с проверки их работоспособности в заведомо рабочем проекте (спектруме).

  10. #9
    Sinclair User Аватар для Eltaron
    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,045
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    144
    Спасибо Благодарностей получено 
    463
    Поблагодарили
    326 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Запустил скетч на ардуине и поглядел тайминги.
    На третьей ноге 1.7 МГц, все путём. А вот картина при записи в регистры меня немного смущает. Вот скрин, это пишется AY[0x02] = 0x38, каналы 0..6 - D0..D6, седьмой - BC1):


    Выделенное маркерами время (это Address Setup Time по даташиту) должно быть минимум 300 нс, а оно меньше. На картинке это, правда, уже данные пишутся, но тайминги записи адреса и данных в программе одинаковые. Что, кстати, само по себе неправильно, т.к. Data Pulse Width должен быть аж 1800 нс! А он всего 170 нс. Не знаю, как так получилось, видимо точность у delayMicroseconds(1) никудышная. Тут явно нужно поиграться задержками.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI

  11. #10
    Guru Аватар для HardWareMan
    Регистрация
    26.02.2011
    Адрес
    г. Павлодар, Казахстан
    Сообщений
    4,410
    Спасибо Благодарностей отдано 
    322
    Спасибо Благодарностей получено 
    599
    Поблагодарили
    445 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот они, жертвы ардуины. Delay() и delayMicroseconds() у этой АрдуОСи ***** и никогда не выдерживает точности на малых отрезках времени. На больших, конечно, работает, ибо если ждешь 1 секунду, то потерю 1 микросекунды заметить тяжело. Я не знаю, почему именно это происходит, так как я не знаю, как именно этот самый делай там устроен, но я всегда делал по-своему, с использованием таймера или нет (это по ситуации). Никогда не доверяйте чужому велосипеду, он вас может подвести в критичный момент.

Страница 1 из 3 123 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Плата переходник AY-8910 на AY-8912
    от Addison в разделе Звук
    Ответов: 34
    Последнее: 17.02.2024, 18:27
  2. Странное поведение спектрума
    от JeRrS в разделе Несортированное железо
    Ответов: 44
    Последнее: 05.04.2016, 12:12
  3. Ответов: 3
    Последнее: 08.12.2014, 20:51
  4. Продам AY-3-8910 и AY-3-8912
    от ChipManyak в разделе Барахолка (архив)
    Ответов: 20
    Последнее: 05.02.2011, 13:49
  5. AY-3-8910(8912) и ВГ93
    от ALEXEY.GORDEEV в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 02.12.2007, 09:21

Ваши права

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