Всем привета.
Народ, помогайте: собрал девайс, а он глючит... вобщим по-порядку:
Собираю МИДИ-клаву на основе оставшейся от дохлого совкового синтезатора пятиоктавной клавы и ATMega16L (в планах динамическая, но пока хотя-бы заработало "без динамики").
Сама ATMega16L досталась в копусе TQFP-44, собрал пока на макетке.
- К АТМеге повесил кварц на 8Мгц и кондёры на 18pF (по букварю от 12 до 22 для такого кварца), корпус кварца не заземлял (боюсь перегреть сам кварц), фьюзы поставил CKSEL=1111 CKOPT=1 SUT=11
- Кнопка ресет через резак подтянута к плюсу и кондёр на 1мкф чтоб гасить дребезг.
- Нога AVCC запитана от плюса через катушку которая (должна быть) 33мкГн и кондёр на 102 к минусу (по букварю 10мкГн и 100нФ... но болие адекватной подходящей катушки под рукой небыло, эта мне досталась от цепей питания вай-фай роутера, там стоял преобразователь АХ3001, а по букварю к ней положена катушка на 33мкГн)... хотя АЦП пока не юзаю, он нужен будет в будущем...
- запитал схему от старого совкового БП от калькулятора МК-52 (5В, но немного скачет +/- 0,01В, хотя иногда проваливается), в самом БП большой кондёр + на макетке поставил на 220мкФ (понимаю что мало, будем исправлять!)
- прошивку писал на АСМе в АВР Студио 4, а заливал через "5-проводов" из-под КодВижн АВР, фьюзы выставлял тоже вижн-ом
- MIDI-адаптер собрал на неизвестном оптроне, выпаяном из дохлого АТХ-компутерного БП (проверил тестером и батарейками - оптрон живой) в дип-копусе с четырмя ногами. Со стороны светодиода оптрона плюс - на плюс питания питания МК через резак на 300 Ом, минус - на TXD (PD0) Atmeg'и, с "второй" стороны оптрона одна нога на минус (пин 5 МИДИ порта), вторая на MIDI-IN (пин 15 порта) и подтянута резаком на 2К3 к плюсу (пин 8 порта).
В прошивке:
- USART работает на частоте f/15 выходит 31.25 Кб/с (как-раз миди стандарт) 8 бит + 1 старт-бит + 1 стоп-бит
- Timer/Counter0 с делителем 1024, прерывание по переполнению
- еще опрос ног, но его пока не трогаем, проблема в следующем:
По прерыванию от таймера, если UDR пустой - пишем в него 0xFE (в терминологии МИДИ - комманда Active Sensing - поддержание связи). Смотрю на компе програмкой midimonitor. В программе выбираю свою звуковуху, всё как надо, убираю фильтры (в т.ч. Active Sensing) и что я вижу...:
Сигнал в компьютер поступает, но в основном это
не Active Sensing (0xFE), а STOP (0xFC), также иногда получаю 0xF8.
Тоесть как, допустим из всей чреды подымающихся столбиков МИДИ-сообщений в мониторе вижу что подымается слово STOP и его код 0xFC, но среди него проскакивает единичное или повторяющееся Active Sensing с кодом 0xFE... иногда оно может повторяться скажем 10-20 раз подряд, иногда среди десятка Active Sensing проскакивает один-два STOP'а, иногда "группы сообщений" Active Sensing проскакивает одна за другой, но в основном (на глаз 80% получаемых сообщений) - это 0xFC = STOP... также иногда проскакивает единичное или несколько подрят 0xF8 (не помню какая это миди комманда, не суть важно)...
..т.е. выходит что вместо 1111 1110 я получаю в компьютере 1111 1100 и иногда 1111 1000...
понимаю что могут быть причины в гуляющем питании, хотя китайский вольтметр ухваченый крокодилами за полюса питания на работающей плате показывает достаточно стабильную картинку... может врет?
Может такое быть из-за несоответсвующей букварю на атмегу катушке на 33мкГн?, - думаю на время отладки её вобще закоротить (ногу AVCC кинуть напрямую на +5)... может кондёры на кварце глючат, или ёмкость не подходит... или сам кварц подгулявший? По-ходу может какую калибровку можно/нужно в АТМеге выставить? Суть проблемы (я так понимаю) в том что АТМега "выставляет" последний ноль, пока комп "еще читает предыдущую 1", хотя могу и ошибаться
кто что может посоветовать?
зарание пасиб что пеерчитали ввесь описаный выше бред и дали адекватные советы...
