Advanced MicroMachine на AT91RM9200

32-битные ARM-совместимые микроконтроллеры (AT91, ARM7, ARM9), а также микропроцессоры вплоть до ARM64

Moderator: Shaos

Different
Doomed
Posts: 408
Joined: 18 Feb 2007 11:40

Post by Different »

Рекомендую сразу закладывать VS1053B-L. Тогда точно мечты сбудутся!
User avatar
egypt
Junior
Posts: 7
Joined: 14 Oct 2007 19:46
Location: Russia

Post by egypt »

Different wrote:Рекомендую сразу закладывать VS1053B-L. Тогда точно мечты сбудутся!
Ну так какая разница - ножка DREQ есть и там и там. Вопрос остаётся в силе.
Different
Doomed
Posts: 408
Joined: 18 Feb 2007 11:40

Post by Different »

Так ведь есть 4 свободных GPIO. Запрограммировать любую на прерывание - и все. Ведь внутри полноценный DSP.
User avatar
egypt
Junior
Posts: 7
Joined: 14 Oct 2007 19:46
Location: Russia

Post by egypt »

Different wrote:Так ведь есть 4 свободных GPIO. Запрограммировать любую на прерывание - и все. Ведь внутри полноценный DSP.
в смысле запрограммировать? разве можно VS'ке указать, чтобы она зануляла GPIO по окончанию передачи блока?
Different
Doomed
Posts: 408
Joined: 18 Feb 2007 11:40

Post by Different »

А для чего ешё GPIO существуют? :)
Пользовательский код можно подгружать с внешней EEPROM во внутреннюю RAM и выполнять. Типовой плеер с демо платы так и сделан.
User avatar
egypt
Junior
Posts: 7
Joined: 14 Oct 2007 19:46
Location: Russia

Post by egypt »

Different wrote:А для чего ешё GPIO существуют? :)
Пользовательский код можно подгружать с внешней EEPROM во внутреннюю RAM и выполнять. Типовой плеер с демо платы так и сделан.
вы что-то путаете. GPIO нужны, чтоб режимы работы микросхемы выбирать(дань совместимости с предыдущими версиями). Тем более попробуйте встрять в исходный код мп3-декодера и добавить туда код дергания ножек GPIO по окончанию пересылки блока
Different
Doomed
Posts: 408
Joined: 18 Feb 2007 11:40

Post by Different »

Эти выводы могут работать и как выходы, что и сделано в версии плеера. На них даже SD-карта висит и EEPROM.
User avatar
egypt
Junior
Posts: 7
Joined: 14 Oct 2007 19:46
Location: Russia

Post by egypt »

Different wrote:Эти выводы могут работать и как выходы, что и сделано в версии плеера. На них даже SD-карта висит и EEPROM.
о каком плеере речь? ссылка? желательно в том месте, где сказано, что GPIO можно программировать
Different
Doomed
Posts: 408
Joined: 18 Feb 2007 11:40

Post by Different »

egypt wrote: о каком плеере речь? ссылка? желательно в том месте, где сказано, что GPIO можно программировать
Простейший плеер: http://www.vlsi.fi/player_vs10xx_proto/player.shtml
Там же и описалово нечеловеческих экспериментов над декодером. :)
Там кстати, даже 8 GPIO.
User avatar
egypt
Junior
Posts: 7
Joined: 14 Oct 2007 19:46
Location: Russia

Post by egypt »

всёравно мутно это всё - программировать вручную GPIO
ходят слухи, что можно через DREQ сделать прерывание
Different
Doomed
Posts: 408
Joined: 18 Feb 2007 11:40

Post by Different »

egypt wrote:ходят слухи, что можно через DREQ сделать прерывание
Не понял. Это как через DREQ? DREQ - это выход VS-ки и тем более не с открытым коллектором. На кого прерывание нужно подавать, на м/к или VS-ку?
User avatar
egypt
Junior
Posts: 7
Joined: 14 Oct 2007 19:46
Location: Russia

Post by egypt »

с ножки DREQ сигнал поступает на ножку контроллера
VS'ка посылает сигнал прерывания, а контроллер - принимает
Different
Doomed
Posts: 408
Joined: 18 Feb 2007 11:40

Post by Different »

egypt wrote:с ножки DREQ сигнал поступает на ножку контроллера
VS'ка посылает сигнал прерывания, а контроллер - принимает
Так это стандартный режим работы VS-ки. Посмотрите диаграммы сигналов.
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

  • 01.09.07 Переделал отладочную плату для OLED дисплея. Поставил разьём OMRON 30pin
    04.09.07 IRQ от YMF721 завёл на IRQ0, так как у FIQ не меняется приоритет.
    07.09.07 Написаны наброски IMF-декодера.
    08.09.07 Заменил LM358 на NE5532. Хрипота в наушниках исчезла. Подобрал оптимальное усиление для YMF721 и VS1003.
    Задействовал IRQ6 для VS1003 вместо прерывания системного таймера. Проверил совместно с IRQ0 YMF721.
    09.09.07 Заставил одновременно работать: IRQ0(OPL), IRQ6(MP3), прерывание системного таймера(каждую 1с)
    и отрисовку графики в цикле.
    14.09.07 Запихал MIDI-декодер в прерывание таймера на IBM PC (усовершенствовал декодер).
    15.09.07 Навешал на прерывание таймера MIDI-композицию для YMF721. Сравнивал звучание миди на VS1003 и YMF721
    20.09.07 Пришла SRAM 1M x 16 CY7C1061AV33-10ZXI
    22.09.07 Сграбил ROM от YMF721 (с помощью MMC, AT91RM9200 и IBM PC). Семплы 8bit и 12bit Signed
    Сделал и собрал плату с SRAM 1M x 16 CY7C1061AV33-10ZXI
    23.09.07 Успешно подключена SRAM 1M x 16
    24.09.07 Успешно пройдены тесты SRAM 1M x 16 по всем адресам
    26.09.07 Подключил через транзисторный ключ подтягивающий резистор к USB. Ключ управляется сигналом сброса супервизора.
    Это позволяет избегать в Винде неудачное определение USB (видится после отработки супервизора питания)
    04.10.07 Наконец-то откопал причину зависания МикроМашины при многократном включении-выключении мощных потребителей в
    тройник, от которого берётся питание на МикроМашину(через комп от USB 5V).
    Ножка ~WAIT у YMF721 залипает навеки в 0.
    07.10.07 Устранил три причины "зависния" YMF721:
    а) Статический разряд через при подсоединении наушников (колонок). Спасает резистор 10 Ом + кондёр 10нФ на землю.
    б) Кратковременные импульсные помехи(дельта-импульсы) в цепях питания, USB, COM-порта и
    УНЧ (если включены активные колонки). Ферритовые бусинки поглощают эти выбросы.
    в) Перекос потенциала земли (напряжение на корпусе компа 110В) с возникновением градиента потенциала и
    его скачки при многократном подключении-отключении мощных потребителей.
    Подключение общих выводов USB-шнура, COM-шнура и наушников(колонок) в ОДНОЙ точке.
    Все методы устранения трёх причин применены, исключение хотя-бы одного из них ведёт к
    "повисанию" YMF721 или VS1003
    15.10.07 Вместо клавиатуры 3x4 решил использовать Joystick от SEGA MD. Разобрался с ним и успешно подключил
    16.10.07 Освоил Таймер-Счётчик 0 в режиме генерации сигнала. Повешал опрос джойстика на прерывание по
    переполнению Таймера-Счётчика 0, так как мультиплексирование на прерывание от PIO завязать нельзя
    19.10.07 Разобрался, почему шумел усилитель на NE5532. Резисторы в обратной связи выбраны неверно (очень большие)
    Кроме этого, усилитель был чувствителен к наводкам. Коэффициент усиления по напряжению определялся некорректно
    из-за маленького входного сопротивления NE5532 (30 кОм). Уменьшил резисторы на порядок. Оказалось, что
    усиления по напряжению не нужно - пришлось ослабить сигналы с выходов VS1003 и YAC516. Подобрал суммирующие
    резисторы и резисторы в обратной связи усилителя. Шумы и отсечка сигнала по входу и выходу исчезли
    21.10.07 Попытка расширить динамический диапазон усилителя звука закончилась неудачно.
    Из-за того, что MPU в YMF721 имеет малый уровень сигнала, требуется большое усиление, которое
    в свою очередь ведёт к искажениям сигнала VS1003 и OPL. Попытка применить более высокое напряжение питания
    на усилитель - 5V от USB закончилась провалом - требуется RC-фильтр для фильтрации USB-шных 5V,
    фильтр вносит падение напряжения - в итоге снова сужение динамического диапазона и возникновение искажений.
    DC/DC преобразователь на 12V применять нельзя - слишком много шумов вносит в аудиотракт, фильтрование которых
    внесёт падение напряжения питания - значит возникновению искажений. Изменил схемотехнику усилителя - схему
    усиления по напряжению с ООС заменил на повторитель (единичное усиление по напряжению). Из-за ограничивающих
    встречно-параллельных диодов на входе NE5532 сигнал режется на входе (а это снова искажения).
    Пробовал снова вернуться к LM358 - очень сильно хрипит в наушниках, особенно когда входной сигнал слабый.
    Вывод: обе микросхемы (LM358 и NE5532) совершенно не годятся для предусилителя звука.
    Понял, почему подглючивает VS1003 при касании её земли - она не терпит на своей земле импульсных помех.
    22.10.07 Купил NJM4580 и дорогостоящий OPA2134. NJM4580 - хрипит, если уровень сигнала на выходе максимален.
    OPA2134 идеально подошёл - малый уровень собственных шумов, слабо прослушиваются шумы YAC516 в режиме
    молчания. При любом уровне сигнала с выходов YAC516 искажений нет, ни на входе, ни на выходе.
    23.10.07 Заменил мелочь на элементы поверхностного монтажа. Стабилитрон Zener 2.7V с ограничивающим резистором плохо
    стабилизирует напряжение для VS1003 - оно скачет от 2.3V до 2.9V, что недопустимо для DSP-ядра.
    Диод SM4007 обеспечил нужное падение напряжения для того, чтобы из 3.3V получить 2.6V-2.7V
    27.10.07 Заменил мелочёвку на SMD-компоненты. Пришёл к выводу, что нужно поставить более мощный Voltage Regulator на 3.3V
    28.10.07 Переразвёл цепи питания и земли. Обнаружил, что общий и земля USB-шнура замыкаются при подключении
    к IBM PC, что мной не учитывалось при разводке земли, которую впоследствии скорректировал.
    29.10.07 Заменил SPX1117M3L-3.3 (грелся до кипятка) на LM1085IS-3.3 (тёплый). Вход стабилизатора на 1.8V подключил
    к 3.3V, чтобы меньше грелся. Для лучшего подавления статических разрядов поставил диодные сборки BAV99
    (на левый и правый каналы аудиовыхода) дополнительно к RC-цепочкам.
    30.10.07 Проанализировал работу Joystick'а в динамике (управление игровым персонажем).
    Замерил токи потребления. Ядро ARM9 и PLL на 200MHz потребляют 0.1A (ток на входе стабилизатора 1.8V),
    вся МикроМашина в целом от USB потребляет 0.28A (ток на входе стабилизатора 3.3V)
    10.11.07 Успешно запустил WaveTable синтезатор YMF721
    17.11.07 Нашёл причину неравномерного воспроизведения MIDI-файлов во времени. В обработчике прерывания нужно отсчитывать
    дельты, а MIDI-композицию играть в основном цикле или в прерывании с более низким приоритетом, чем прерывание
    счёта дельты. Шлифовал схему,поставил SMD-шные ферритовые бусинки. Возле разъёмов USB, COM, Audio оставил мощные
Romanich
Banned
Posts: 608
Joined: 12 Oct 2006 16:44

Post by Romanich »

Переделанная плата с дисплеем:
Image

Адресное пространство:
Image

Краткая стр. схема(обновлена):
Image

И наконец, подробная:
http://www.nedopc.org/nedopc/upload/Str_new.rar