Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Сигнала от ноутбука/компьютера/FM-модуля вполне достаточно для рисования спектра.
Естественно, в случае ноутбука/компьютера громкость, поступающая на темброблок, должна быть максимальна, а регулировка производиться уже за счёт темброблока, а не системного микшера в операционке.
Это также минимизирует возможные шумы и помехи.
Естественно, в случае ноутбука/компьютера громкость, поступающая на темброблок, должна быть максимальна, а регулировка производиться уже за счёт темброблока, а не системного микшера в операционке.
Это также минимизирует возможные шумы и помехи.
- =Inspiron=
- Первый раз сказал Мяу!
- Сообщения: 28
- Зарегистрирован: Вт апр 07, 2015 14:06:33
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Проблема решилась! Накосячил при сборке - резистор ОС поставил 10к а не 100к как по схеме. Извиняюсь!!!! 
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Здравствуйте!
Хочу собрать Ваш проект с такой конфигурацией :
ampcontrol_m16_tda7313_ls020_lm7001.hex / ampcontrol_m16_tda7313_ls020_rda5807.hex
собрал все детали кроме tda7313.
Есть микросхема темброблока tea6330, если можно - поправьте пожалуйста под неё эти прошивки.
Хочу собрать Ваш проект с такой конфигурацией :
ampcontrol_m16_tda7313_ls020_lm7001.hex / ampcontrol_m16_tda7313_ls020_rda5807.hex
собрал все детали кроме tda7313.
Есть микросхема темброблока tea6330, если можно - поправьте пожалуйста под неё эти прошивки.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Нет, такой микросхемы у меня нету. Да и старую ветку под ATmega16 я развивать не планирую. Возможно, под ATmega32 с кадровым буфером поддержка TEA6330T когда-нибудь и появится (там это сделать много проще), но LS020 в этом случае отпадает.
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
понял, спасибо, буду искать 7313.
-
Shershnyov
- Первый раз сказал Мяу!
- Сообщения: 33
- Зарегистрирован: Чт фев 07, 2013 10:46:46
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Добрый день, сегодня наткнулся на ваш проект. Однозначно буду собирать. Подскажите пжлст, печатная плата из первого поста исчерпывающая для всех типов мк и прошивок? Планирую собирать на меге32. Или подскажите пжлст где можно взять актуальный архивчик. Гуглкод я так понял не работает =(
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Возможно, там не хватает каких-то подтягивающих резисторов, например, на линии 1-wire (к питанию). А так - да, плата подходит для дисплеев KS0108A и ST7920, а разводка у ATmega16 и ATmega32 одинаковая.
-
voffka_rostov
- Первый раз сказал Мяу!
- Сообщения: 36
- Зарегистрирован: Ср апр 15, 2015 10:03:15
- Откуда: Ростов-на-Дону
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
А если делать под мегу8, на тда7439 без радио часов и экрана, какие фьюзы выставлять? и вообще надо их тогда трогать?
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
А какой смысл в анализаторе спектра без экрана?
-
voffka_rostov
- Первый раз сказал Мяу!
- Сообщения: 36
- Зарегистрирован: Ср апр 15, 2015 10:03:15
- Откуда: Ростов-на-Дону
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
WiseLord писал(а):А какой смысл в анализаторе спектра без экрана?
Так и его не будет пока. Хочу просто запустить tda, убедиться что руки от туда растут, послушать ее. А потом продолжить.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Фьюзы для Atmega8 устанавливаются на частоту работы 8МГц от внутреннего генератора. В Makefile проекта они указаны.
- FOLKSDOICH
- Говорящий с текстолитом
- Сообщения: 1580
- Зарегистрирован: Ср окт 04, 2006 22:33:56
- Откуда: М.о.
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Мне то что-нибудь скажете?
Всё придумано до и для нас.
-
voffka_rostov
- Первый раз сказал Мяу!
- Сообщения: 36
- Зарегистрирован: Ср апр 15, 2015 10:03:15
- Откуда: Ростов-на-Дону
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
WiseLord, прошу помощи. Собрал плату для TDA7439, взял МК мега8, с Ваших исходников взял i2c.h, i2c.c, tda7439.h(немного дописав из audio.h).
Для пробы написал main вот так:
Собрал обвязку МК на макетке, дал питание от компьютерного бп +5 на мк, +12 через D-SUB-> +8 на TDA. На линии i2c pull-up резисторы.
Включаю это все дело, звук появляется на 1 секунду и то с хрипом, потом тишина. При выключение слышно затухающее жужание. Может ли это говорить о том, что я упалил уже TDA?
P.S.: если я правильно замерил, то на контактах RPRE и LPRE 0.5в постоянки... Незнаю влияет ли это но вместо 0.018мкФ я поставил 0.022мкФ, так как 0.018 не нашел
Для пробы написал main вот так:
Спойлер
Код: Выделить всё
#include <avr/interrupt.h>
#include "i2c.h"
#include "tda7439.h"
#include <avr/io.h>
int main (void)
{
I2CInit();
I2CStart(TDA7439_I2C_ADDR);
I2CWriteByte(TDA7439_INPUT_SELECT);
I2CWriteByte(0x02); //вход2
I2CStop();
I2CStart(TDA7439_I2C_ADDR);
I2CWriteByte(TDA7439_INPUT_GAIN);
I2CWriteByte(0x0A); //входной уровень 18dB
I2CStop();
I2CStart(TDA7439_I2C_ADDR);
I2CWriteByte(TDA7439_PREAMP);
I2CWriteByte(0x08); //громкость -8dB
I2CStop();
I2CStart(TDA7439_I2C_ADDR);
I2CWriteByte(TDA7439_BASS); //bass 0db
I2CWriteByte(0x0F);
I2CStop();
I2CStart(TDA7439_I2C_ADDR);
I2CWriteByte(TDA7439_MIDDLE); //middle 0db
I2CWriteByte(0x0F);
I2CStop();
I2CStart(TDA7439_I2C_ADDR);
I2CWriteByte(TDA7439_TREBLE); //treble 0db
I2CWriteByte(0x0F);
I2CStop();
I2CStart(TDA7439_I2C_ADDR);
I2CWriteByte(TDA7439_VOLUME_RIGHT); //balance 0db
I2CWriteByte(0x00);
I2CStop();
I2CStart(TDA7439_I2C_ADDR);
I2CWriteByte(TDA7439_VOLUME_LEFT); //balance 0db
I2CWriteByte(0x00);
I2CStop();
}
Собрал обвязку МК на макетке, дал питание от компьютерного бп +5 на мк, +12 через D-SUB-> +8 на TDA. На линии i2c pull-up резисторы.
Включаю это все дело, звук появляется на 1 секунду и то с хрипом, потом тишина. При выключение слышно затухающее жужание. Может ли это говорить о том, что я упалил уже TDA?
P.S.: если я правильно замерил, то на контактах RPRE и LPRE 0.5в постоянки... Незнаю влияет ли это но вместо 0.018мкФ я поставил 0.022мкФ, так как 0.018 не нашел
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Вроде как всё правильно. Но можно попробовать упростить код. Из даташита:

То есть, достаточно только задать VOLUME, SPEAKER_LEFT и SPEAKER_RIGHT, и уже этого должно быть достаточно для работы во входу IN2.

То есть, достаточно только задать VOLUME, SPEAKER_LEFT и SPEAKER_RIGHT, и уже этого должно быть достаточно для работы во входу IN2.
-
voffka_rostov
- Первый раз сказал Мяу!
- Сообщения: 36
- Зарегистрирован: Ср апр 15, 2015 10:03:15
- Откуда: Ростов-на-Дону
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
WiseLord писал(а):Вроде как всё правильно.
Все оказалось правильно! Все работает, это просто мозгов еще мало. Я на выход стал включать наушники, напрямую от микросхемы, вот она и затыкалась. А щас повесил усилитель и все запело!!!
P.S.: Не особо понял что за бит B из даташита на тда7439, что за авто инкремент? зачем он?
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Обычный для I²C автоинкремент адреса. Можно писать без лишних перестартовок, что значительно быстрее:
Код: Выделить всё
I2CStart(TDA7439_I2C_ADDR);
I2CWriteByte(TDA7439_INPUT_SELECT | 0x10); // начальный адрес + бит автоинкремента
I2CWriteByte(0x02); //вход2
I2CWriteByte(TDA7439_INPUT_GAIN);I2CStop();
I2CWriteByte(TDA7439_PREAMP);
I2CWriteByte(TDA7439_BASS); //bass 0db
I2CWriteByte(TDA7439_MIDDLE); //middle 0db
I2CWriteByte(TDA7439_TREBLE); //treble 0db
I2CWriteByte(TDA7439_VOLUME_RIGHT); //balance 0db
I2CWriteByte(TDA7439_VOLUME_LEFT); //balance 0db
I2CStop();-
voffka_rostov
- Первый раз сказал Мяу!
- Сообщения: 36
- Зарегистрирован: Ср апр 15, 2015 10:03:15
- Откуда: Ростов-на-Дону
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
WiseLord писал(а):Обычный для I²C автоинкремент адреса. Можно писать без лишних перестартовок, что значительно быстрее:Спойлер
Код: Выделить всё
I2CStart(TDA7439_I2C_ADDR);
I2CWriteByte(TDA7439_INPUT_SELECT | 0x10); // начальный адрес + бит автоинкремента
I2CWriteByte(0x02); //вход2
I2CWriteByte(TDA7439_INPUT_GAIN);I2CStop();
I2CWriteByte(TDA7439_PREAMP);
I2CWriteByte(TDA7439_BASS); //bass 0db
I2CWriteByte(TDA7439_MIDDLE); //middle 0db
I2CWriteByte(TDA7439_TREBLE); //treble 0db
I2CWriteByte(TDA7439_VOLUME_RIGHT); //balance 0db
I2CWriteByte(TDA7439_VOLUME_LEFT); //balance 0db
I2CStop();
Тогда получается как на RDA5807, все сразу. Но это же не удобно, если нужно допустим только громкость поменять? Может быть удобно при первом включение, верно?
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
При первом включении. При регулировке громкости (SPEAKER_LEFT + SPEAKER_RIGHT). При реализации предустановок типа ROCK, POP, FLAT и т.п., когда нужно менять настройки всех трёх тембров за раз. В общем, в любых случаях, когда нужно одновременно поменять несколько байт подряд, не обязательно все.
-
voffka_rostov
- Первый раз сказал Мяу!
- Сообщения: 36
- Зарегистрирован: Ср апр 15, 2015 10:03:15
- Откуда: Ростов-на-Дону
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
WiseLord писал(а):При первом включении. При регулировке громкости (SPEAKER_LEFT + SPEAKER_RIGHT). При реализации предустановок типа ROCK, POP, FLAT и т.п., когда нужно менять настройки всех трёх тембров за раз. В общем, в любых случаях, когда нужно одновременно поменять несколько байт подряд, не обязательно все.
Спасибо за разъяснения, пошел вешать энкодер и экран. Будем пробовать дальше )))
-
Shershnyov
- Первый раз сказал Мяу!
- Сообщения: 33
- Зарегистрирован: Чт фев 07, 2013 10:46:46
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Добрый день, сегодня наткнулся на ваш проект. Однозначно буду собирать. Подскажите пжлст, печатная плата из первого поста исчерпывающая для всех типов мк и прошивок? Планирую собирать на меге32. Или подскажите пжлст где можно взять актуальный архивчик. Гуглкод я так понял не работает =( . И подскажите пжлст, http://ru.aliexpress.com/item/2014-1PCS ... 47863.html вот такой дисплей подойдет? Основные линии вроде бы такие же (распиновка) но по паре линий возник вопрос, т.к. не силен в этом спрашиваю у вас.