Advanced MicroMachine на AT91RM9200
Moderator: Shaos
-
- Doomed
- Posts: 408
- Joined: 18 Feb 2007 11:40
-
- Junior
- Posts: 7
- Joined: 14 Oct 2007 19:46
- Location: Russia
-
- Doomed
- Posts: 408
- Joined: 18 Feb 2007 11:40
-
- Junior
- Posts: 7
- Joined: 14 Oct 2007 19:46
- Location: Russia
-
- Doomed
- Posts: 408
- Joined: 18 Feb 2007 11:40
-
- Junior
- Posts: 7
- Joined: 14 Oct 2007 19:46
- Location: Russia
вы что-то путаете. GPIO нужны, чтоб режимы работы микросхемы выбирать(дань совместимости с предыдущими версиями). Тем более попробуйте встрять в исходный код мп3-декодера и добавить туда код дергания ножек GPIO по окончанию пересылки блокаDifferent wrote:А для чего ешё GPIO существуют?
Пользовательский код можно подгружать с внешней EEPROM во внутреннюю RAM и выполнять. Типовой плеер с демо платы так и сделан.
-
- Doomed
- Posts: 408
- Joined: 18 Feb 2007 11:40
-
- Junior
- Posts: 7
- Joined: 14 Oct 2007 19:46
- Location: Russia
-
- Doomed
- Posts: 408
- Joined: 18 Feb 2007 11:40
Простейший плеер: http://www.vlsi.fi/player_vs10xx_proto/player.shtmlegypt wrote: о каком плеере речь? ссылка? желательно в том месте, где сказано, что GPIO можно программировать
Там же и описалово нечеловеческих экспериментов над декодером.

Там кстати, даже 8 GPIO.
-
- Junior
- Posts: 7
- Joined: 14 Oct 2007 19:46
- Location: Russia
-
- Doomed
- Posts: 408
- Joined: 18 Feb 2007 11:40
-
- Junior
- Posts: 7
- Joined: 14 Oct 2007 19:46
- Location: Russia
-
- Doomed
- Posts: 408
- Joined: 18 Feb 2007 11:40
-
- Banned
- Posts: 608
- Joined: 12 Oct 2006 16:44
- 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 оставил мощные
-
- Banned
- Posts: 608
- Joined: 12 Oct 2006 16:44
Переделанная плата с дисплеем:

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

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

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

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

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

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