Мучения с прошивкой для ATMEGA16

Обсуждаем контроллеры компании Atmel.
Ответить
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

Всем привет!
Из далека начинать не буду, строю стерео усилитель на 2-ух TDA7294 и к нему состряпал звуковой процессор на TDA7318 под управлением ATMEGA16
Прошивку написал (в CVAVR) в Протеусе отладил, заливаю в железо и проверяю. На ЖК экране изображение есть, меню работает, кнопок слушается, все отлично, НО! Когда я решил проверить уже со звуком - ничего не услышал.
на TDA7318 биты приходят, правильность битов проверял, даже тыкался осциллом в i2c ноги - пачки импульсов присутствуют. Подтяжка шины к +5в тоже есть. Вообще не в первый раз уже делаю девайсы, но чтоб i2c не слушалось - впервые.
Пробовал вместо TDA7318 заведомо рабочую TDA7313 (та же самая микруха, но с 3-мя линейными входами) - тоже без результатов.
Единственное, что меня настораживает, я в первые запустил атмегу на 8МГц, а до этого всегда делал девайсы на 1МГц, вот и думаю, i2c шина стала тоже шустрее и может TDA7318 не успевают прочесть биты?
Вопрос, где в CodeVision можно настроить работу i2c шины?
Или может в чем другом проблема?
Контактная информация:
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков

Сообщение Dr. Alex »

Ну шина I2C (TWI) работает на относительно небольших частотах, и если вы поменяли частоту тактирования МК, то естественно в настройках I2C (TWI) надо менять коэф. деления)
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

Ну вот с этим у меня как раз и проблема, я не смог добраться до этих настроек. Где их искать?
Последний раз редактировалось AlekseyEnergo Сб сен 13, 2014 22:35:00, всего редактировалось 1 раз.
Причина: Нарушение пункта 2.7. Подредактировал. Предупредил!!
Контактная информация:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков

Сообщение Dr. Alex »

Вот тут всё хорошо растолкованно)
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

Постойте, а TWI - это вроде связь двух МК через i2c ?
И по Вашей ссылке идет речь именно об этом, меня же интересует просто i2c.
Последний раз редактировалось AlekseyEnergo Сб сен 13, 2014 22:35:44, всего редактировалось 1 раз.
Причина: Нарушение пункта 2.7. Подредактировал.
Контактная информация:
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1641
Зарегистрирован: Пн авг 25, 2014 21:52:26
Откуда: Ленинград

Сообщение Baasil »

TWI - это для того, чтобы не платить за патент с названием I2C :))
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

В кодовизарде (конструкторе) кодевижена для I2C и TWI - разные закладки)
Даташит на TDA7318 намекает, что она не сможет читать биты быстрее 100 кбит/сек
Я конечно попробую TWBR=0x2A; (TWI bit rate = 80 kbit/sec), но сомневаюсь, что это именно то, ведь я не использую TWI )
Контактная информация:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1315
Зарегистрирован: Пт ноя 27, 2009 19:47:13
Откуда: Казань

Сообщение НАПАЛМ »

Как это не используете? Если открыть даташит на, например, вашу мегу, то он гласит, что у контроллера есть аппаратный TWI, который совместим с I2C.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

В любом случае TWBR=0x2A; (80 кбит/сек) не помогло, как и TWBR=0x48; (50 кбит/сек)

На сколько я понимаю расклад
просто i2c - это программная реализация с помощью библиотеки i2c.h, а 2wire (TWI) - аппаратная штука зашитая в мозг атмеги.
Получается, все настройки TWI на i2c влиять не могут.
По пинам ,я использовал для i2c на атмеге ноги 22 и 23, я так понимаю, что это ноги аппаратного TWI и что бы не было конфликтов, надо либо деактивировать TWI либо использовать другие ноги, но печатка уже разведена и девайс полностью собран в железе.
В библиотеке i2c.h я не нашел никаких настроек, а ведь должны как то настраиваться тайминги задержек между пачками и т.п.
Контактная информация:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1315
Зарегистрирован: Пт ноя 27, 2009 19:47:13
Откуда: Казань

Сообщение НАПАЛМ »

Посмотрите ассемблерный код библиотеки и всё станет на свои места.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

Так нет его, есть i2c.h в папке inc и в котором нет требуемого, там вообще почти ничего нет.
Че та я вообще ничего не понимаю.
Контактная информация:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1315
Зарегистрирован: Пт ноя 27, 2009 19:47:13
Откуда: Казань

Сообщение НАПАЛМ »

Когда компилятор делает свое черное дело, он переводит си в асм, а затем в машинный код. Так вот, насколько я знаю, промежуточный асм код можно подглядеть.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

Нет такого, по крайней мере не нашел.
Интересное наблюдение, если программно прибавить параметр "Gain" (усиление) на максимум, звук начинает проходить, но с жуткими искажениями и довольно тихий. Так же ситуация меняется если прибавить Тембр ВЧ на максимум - сигнал становиться громче, но искажения все так же присутствуют. Странно.
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Сообщение mr_smit »

А если исключить из схемы TDA7318 и пустить сигнал сразу на усилитель звук нормальный? А то может просто усилитель криво работает?
Нельзя всё знать, достаточно понимать.
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

mr_smit сигнал подается с MP3 плеера, а вместо усилителя подключил наушники, так что искажения усилителем исключены.

Полазил по разным форумам, у многих проблемы с TDA7313(7318) возникали из-за того, что они отправляли в микруху только отдельные байты, к примеру, меняя громкость можно отправлять только байты громкости, меняя тембр - только байты тембра. Но в этом случае, в момент включения устройства надо отправить в микросхему полную пачку байтов (адрес, громкость, затухание, тембр нч, тембр вч, усиление, номер входа).
В моём случае, в микросхему каждый раз посылается полная пачка байтов, мне нет необходимости экономить на скорости работы i2c шины, в момент первичной инициализации так же посылается полная пачка байтов управления.
Причем TDA7313(7318) не требуют какой либо предварительной инициализации.

В данный момент у меня наметилось четыре варианта действий.
1 - использовать заведомо рабочую и разведенную ранее плату с микросхемой TDA7313 от предыдущего проекта и попробовать с ней, может проблема в обвязке.
2 - попробовать между отправкой байтов в TDA7318 вставить задержку - delay_ms(), миллисекунд по 30-50
3 - попробовать использовать другие ноги атмеги под i2c шину
4 - снизить тактовую частоту до 1МГц с правкой всего кода прошивки (что не желательно)
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

Итак, попробовал с задержками и понижением частоты до 1МГЦ - результатов не дало.
Зато проверил работоспособность TDA7318 на плате другого проекта, все работает отлично.
Еще раз внимательно почитав даташит на TDA7318 обратил внимание на посыл сигнала ACK после каждого отправленного байта.
Интересно, как в CodeVision его посылать?
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 177
Зарегистрирован: Чт окт 20, 2011 13:35:06
Откуда: Казань

Сообщение Airatius »

Итак, проблема решена, оказалось что я что-то напортачил с самим аудиопроцессором, то ли с разводкой ошибся, то ли ему элементы не понравились.
Подключил свой микроконтроллер по i2c к аудиопроцессору другого проекта и он заработал.
Сейчас понимаю, что TDA7318 по своим параметрам весьма говняная микруха и надо было-бы собирать на чем то другом, ну ладно, это в будущем.
Всем спасибо за участие и за сочувствие!

Модераторы, извиняюсь если что не так и можете закрывать тему.

P.S. Кому интересен проект, ждите его на моём сайте, как добью косяки и дособираю усил - сразу напишу про него статейку.)
Контактная информация:
Ответить

Вернуться в «AVR»