Страница 1 из 1
Мучения с прошивкой для ATMEGA16
Добавлено: Сб сен 13, 2014 21:58:26
Airatius
Всем привет!
Из далека начинать не буду, строю стерео усилитель на 2-ух TDA7294 и к нему состряпал звуковой процессор на TDA7318 под управлением ATMEGA16
Прошивку написал (в CVAVR) в Протеусе отладил, заливаю в железо и проверяю. На ЖК экране изображение есть, меню работает, кнопок слушается, все отлично, НО! Когда я решил проверить уже со звуком - ничего не услышал.
на TDA7318 биты приходят, правильность битов проверял, даже тыкался осциллом в i2c ноги - пачки импульсов присутствуют. Подтяжка шины к +5в тоже есть. Вообще не в первый раз уже делаю девайсы, но чтоб i2c не слушалось - впервые.
Пробовал вместо TDA7318 заведомо рабочую TDA7313 (та же самая микруха, но с 3-мя линейными входами) - тоже без результатов.
Единственное, что меня настораживает, я в первые запустил атмегу на 8МГц, а до этого всегда делал девайсы на 1МГц, вот и думаю, i2c шина стала тоже шустрее и может TDA7318 не успевают прочесть биты?
Вопрос, где в CodeVision можно настроить работу i2c шины?
Или может в чем другом проблема?
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Сб сен 13, 2014 22:04:33
Dr. Alex
Ну шина I2C (TWI) работает на относительно небольших частотах, и если вы поменяли частоту тактирования МК, то естественно в настройках I2C (TWI) надо менять коэф. деления)
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Сб сен 13, 2014 22:16:00
Airatius
Ну вот с этим у меня как раз и проблема, я не смог добраться до этих настроек. Где их искать?
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Сб сен 13, 2014 22:20:20
Dr. Alex
Вот
тут всё хорошо растолкованно)
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Сб сен 13, 2014 22:27:01
Airatius
Постойте, а TWI - это вроде связь двух МК через i2c ?
И по Вашей ссылке идет речь именно об этом, меня же интересует просто i2c.
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Сб сен 13, 2014 22:46:12
Baasil
TWI - это для того, чтобы не платить за патент с названием I2C

Re: Мучения с прошивкой для ATMEGA16
Добавлено: Сб сен 13, 2014 23:03:01
Airatius
В кодовизарде (конструкторе) кодевижена для I2C и TWI - разные закладки)
Даташит на TDA7318 намекает, что она не сможет читать биты быстрее 100 кбит/сек
Я конечно попробую TWBR=0x2A; (TWI bit rate = 80 kbit/sec), но сомневаюсь, что это именно то, ведь я не использую TWI )
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Вс сен 14, 2014 08:05:45
НАПАЛМ
Как это не используете? Если открыть даташит на, например, вашу мегу, то он гласит, что у контроллера есть аппаратный TWI, который совместим с I2C.
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Вс сен 14, 2014 10:27:16
Airatius
В любом случае TWBR=0x2A; (80 кбит/сек) не помогло, как и TWBR=0x48; (50 кбит/сек)
На сколько я понимаю расклад
просто i2c - это программная реализация с помощью библиотеки i2c.h, а 2wire (TWI) - аппаратная штука зашитая в мозг атмеги.
Получается, все настройки TWI на i2c влиять не могут.
По пинам ,я использовал для i2c на атмеге ноги 22 и 23, я так понимаю, что это ноги аппаратного TWI и что бы не было конфликтов, надо либо деактивировать TWI либо использовать другие ноги, но печатка уже разведена и девайс полностью собран в железе.
В библиотеке i2c.h я не нашел никаких настроек, а ведь должны как то настраиваться тайминги задержек между пачками и т.п.
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Вс сен 14, 2014 13:31:52
НАПАЛМ
Посмотрите ассемблерный код библиотеки и всё станет на свои места.
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Вс сен 14, 2014 17:05:09
Airatius
Так нет его, есть i2c.h в папке inc и в котором нет требуемого, там вообще почти ничего нет.
Че та я вообще ничего не понимаю.
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Вс сен 14, 2014 17:45:31
НАПАЛМ
Когда компилятор делает свое черное дело, он переводит си в асм, а затем в машинный код. Так вот, насколько я знаю, промежуточный асм код можно подглядеть.
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Вс сен 14, 2014 20:02:37
Airatius
Нет такого, по крайней мере не нашел.
Интересное наблюдение, если программно прибавить параметр "Gain" (усиление) на максимум, звук начинает проходить, но с жуткими искажениями и довольно тихий. Так же ситуация меняется если прибавить Тембр ВЧ на максимум - сигнал становиться громче, но искажения все так же присутствуют. Странно.
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Пн сен 15, 2014 11:48:42
mr_smit
А если исключить из схемы TDA7318 и пустить сигнал сразу на усилитель звук нормальный? А то может просто усилитель криво работает?
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Пн сен 15, 2014 12:57:55
Airatius
mr_smit сигнал подается с MP3 плеера, а вместо усилителя подключил наушники, так что искажения усилителем исключены.
Полазил по разным форумам, у многих проблемы с TDA7313(7318) возникали из-за того, что они отправляли в микруху только отдельные байты, к примеру, меняя громкость можно отправлять только байты громкости, меняя тембр - только байты тембра. Но в этом случае, в момент включения устройства надо отправить в микросхему полную пачку байтов (адрес, громкость, затухание, тембр нч, тембр вч, усиление, номер входа).
В моём случае, в микросхему каждый раз посылается полная пачка байтов, мне нет необходимости экономить на скорости работы i2c шины, в момент первичной инициализации так же посылается полная пачка байтов управления.
Причем TDA7313(7318) не требуют какой либо предварительной инициализации.
В данный момент у меня наметилось четыре варианта действий.
1 - использовать заведомо рабочую и разведенную ранее плату с микросхемой TDA7313 от предыдущего проекта и попробовать с ней, может проблема в обвязке.
2 - попробовать между отправкой байтов в TDA7318 вставить задержку - delay_ms(), миллисекунд по 30-50
3 - попробовать использовать другие ноги атмеги под i2c шину
4 - снизить тактовую частоту до 1МГц с правкой всего кода прошивки (что не желательно)
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Пн сен 15, 2014 19:55:56
Airatius
Итак, попробовал с задержками и понижением частоты до 1МГЦ - результатов не дало.
Зато проверил работоспособность TDA7318 на плате другого проекта, все работает отлично.
Еще раз внимательно почитав даташит на TDA7318 обратил внимание на посыл сигнала ACK после каждого отправленного байта.
Интересно, как в CodeVision его посылать?
Re: Мучения с прошивкой для ATMEGA16
Добавлено: Вт сен 16, 2014 20:26:24
Airatius
Итак, проблема решена, оказалось что я что-то напортачил с самим аудиопроцессором, то ли с разводкой ошибся, то ли ему элементы не понравились.
Подключил свой микроконтроллер по i2c к аудиопроцессору другого проекта и он заработал.
Сейчас понимаю, что TDA7318 по своим параметрам весьма говняная микруха и надо было-бы собирать на чем то другом, ну ладно, это в будущем.
Всем спасибо за участие и за сочувствие!
Модераторы, извиняюсь если что не так и можете закрывать тему.
P.S. Кому интересен проект, ждите его на моём сайте, как добью косяки и дособираю усил - сразу напишу про него статейку.)