А может кто-нибудь помочь с модификацией? Что-то я совсем заблудился с алгоритмах. Необходимо, чтобы номер трека принимался по UART (это есть, работает), но в случае, если трек уже воспроизводится, выдавался сигнал "стоп" и воспроизведение останавливалось.
ЗЫ: Курил я прерывания, и что-то совсем грустно стало. Получается, что точек, где отловить выполнение воспроизведения и имя файла, практически нет. Хотя, может и есть. В блоке UART есть процедура приёма символа. А что если вот в эту процедурку добавить следующую последовательность: после приёма символа из UART проверяем флаг воспроизведения, если он равен "1" - то дальше сравниваем содержимое регистра с переменной, в которой хранится первая буква имени файла (она же у нас вроде как не очищается после начала воспроизведения, так?). Если буква и содержимое регистра совпадают - то имеем повторный вызов того же трека, а значит, просто останавливаем воспроизведение (вызываем процедуру остановки) и выходим из процедуры приёма. В противном случае - работаем, как было изначально.
ЗЗЫ: Получилось! Отключил лишние "монстр" и "гелиум". Всё остальное не трогал. Правда, сравнение буквы из порта сделал наоборот - если буквы НЕ совпадают, то продолжаем работать, как и раньше. Иначе останавливаем воспроизведение.
Собрал совместно с тач-панелью на 16 портов, развёл на одной плате, добавил простенький усилитель на TDA7052 - работает!!! Правда, приходится подбирать карты SD - не все работают "по-честному" стандартном режиме.
|