Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
А на нажатие кнопок реакция есть? Надо учесть, что слишком короткие (<100мс) нажатия фильтруются программно.
Если горят все квадраты, это может означать, что это АЦП так сигнал воспринимает.
Протеус вообще нормально моделирует АЦП?
По умолчанию "постоянка" на входе АЦП должна составлять половину опорного напряжения, равного напряжению питания. Т.е. на входах АЦП должно быть 2.5В. Это соответствует отсутствию сигнала.
Если горят все квадраты, это может означать, что это АЦП так сигнал воспринимает.
Протеус вообще нормально моделирует АЦП?
По умолчанию "постоянка" на входе АЦП должна составлять половину опорного напряжения, равного напряжению питания. Т.е. на входах АЦП должно быть 2.5В. Это соответствует отсутствию сигнала.
- Реклама
- Mazzz
- Нашел транзистор. Понюхал.
- Сообщения: 165
- Зарегистрирован: Пт июл 05, 2013 01:31:35
- Откуда: Владивосток
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
АЦП должен нормально симулировать. Видимо на кнопки не реагирует, просто выдает последовательность на экран и на этом все. Может из за кварца. Сколько побывал от внешнего не получается. Соответственно взял внутренний на 8МГц
-
dumpkin
- Родился
- Сообщения: 13
- Зарегистрирован: Пт апр 17, 2009 17:23:01
- Откуда: Хмельницький
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
а этектрическая схема для платы тда7313 есть? или там классика из даташита и номиналы оттуда брать?
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Все темброблоки в типовом включении. Микроконтроллеру номиналы по барабану, он по цифровой шине работает.
- Реклама
- Mazzz
- Нашел транзистор. Понюхал.
- Сообщения: 165
- Зарегистрирован: Пт июл 05, 2013 01:31:35
- Откуда: Владивосток
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Уважаемый автор. три раза заново собрал схему в протеусе, и пуля в пулю как у Вас. квадратики и все. Скиньте пожалуйста Вашу прошивку которую используете и проект в протеусе. Заранее спасибо.
- Mazzz
- Нашел транзистор. Понюхал.
- Сообщения: 165
- Зарегистрирован: Пт июл 05, 2013 01:31:35
- Откуда: Владивосток
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Последний раз редактировалось AlekseyEnergo Вт май 06, 2014 17:21:34, всего редактировалось 1 раз.
Причина: Нарушение пункта 2.2 правил форума. Предупрежден!
Причина: Нарушение пункта 2.2 правил форума. Предупрежден!
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Вот как настроено должно быть:

Файлы прошивки и EEPROM для 16x2 дисплея тут.
Ну, и файл проекта во вложении.
P.S. Попробовал набросать схему ещё раз, только сначала не подгружал eeprom файл в контроллер. Получились те же квадратики. Потом уже избавиться от них не удалось. Попытка подгрузить другой eeprom файл или изменить fuse в свойствах контроллера, похоже, полностью игнорируются.
P.P.S. Да, так и есть. Поместив контроллер на схему, нужно обязательно прописать файл eeprom до запуска симуляции. Иначе позже уже не получится.
P.P.P.S. Таки в меню Debug -> Reset Persistent Model Data можно заставить перечитать новый eeprom.
Файлы прошивки и EEPROM для 16x2 дисплея тут.
Ну, и файл проекта во вложении.
P.S. Попробовал набросать схему ещё раз, только сначала не подгружал eeprom файл в контроллер. Получились те же квадратики. Потом уже избавиться от них не удалось. Попытка подгрузить другой eeprom файл или изменить fuse в свойствах контроллера, похоже, полностью игнорируются.
P.P.S. Да, так и есть. Поместив контроллер на схему, нужно обязательно прописать файл eeprom до запуска симуляции. Иначе позже уже не получится.
P.P.P.S. Таки в меню Debug -> Reset Persistent Model Data можно заставить перечитать новый eeprom.
- Вложения
-
- ampcontrol_lcd.DSN.zip
- (14.39 КБ) 538 скачиваний
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Небольшое обновление прошивки.
Недавно приехали из Китая FM-модули на TEA5767.
Протокол работы с ними оказался простым, радио само по себе заставить работать оказалось довольно легко.
В связи с этим активно начал допиливать прошивку темброблока-спектроанализатора на предмет уменьшения размера, так как у ATmega16 flash-памяти, собственно, 16384 байт, а прошивка уже было разрослась до ~16100 байт. Надо же куда-то втиснуть поддержку FM-радио и "графический интерфейс" для него.
В рабочей версии удалось "почикать" почти килобайт, так что скоро начну туда впиливать поддержку TEA5767.
По ходу дела, некоторые фишки перетянул из рабочей прошивки в основную. В частности, немного изменена обработка длинных нажатий кнопок, а также теперь тип графического дисплея - WG12864A или WG12864B - определяется автоматически.
Поэтому сейчас hex-файл для обоих типов дисплеев один и тот же. Кто хочет, может потестировать.
Кстати, если кому интересно, во вложении платка-переходник для модуля TEA5767M.
Для знакосинтезирующих дисплеев, судя по всему, можно пока особо не заморачиваться, так как там места хватает (нет необходимости в хранении шрифтов разного размера, как для графических).
Замечу, что вся работа идёт над прошивкой для графических дисплеев, и только после её полной доводки я займусь (если займусь) прошивкой для знакосинтезирующих.
Если кому интересно, во вложении платка-переходник для FM-модуля
Недавно приехали из Китая FM-модули на TEA5767.
Протокол работы с ними оказался простым, радио само по себе заставить работать оказалось довольно легко.
В связи с этим активно начал допиливать прошивку темброблока-спектроанализатора на предмет уменьшения размера, так как у ATmega16 flash-памяти, собственно, 16384 байт, а прошивка уже было разрослась до ~16100 байт. Надо же куда-то втиснуть поддержку FM-радио и "графический интерфейс" для него.
В рабочей версии удалось "почикать" почти килобайт, так что скоро начну туда впиливать поддержку TEA5767.
По ходу дела, некоторые фишки перетянул из рабочей прошивки в основную. В частности, немного изменена обработка длинных нажатий кнопок, а также теперь тип графического дисплея - WG12864A или WG12864B - определяется автоматически.
Поэтому сейчас hex-файл для обоих типов дисплеев один и тот же. Кто хочет, может потестировать.
Кстати, если кому интересно, во вложении платка-переходник для модуля TEA5767M.
Для знакосинтезирующих дисплеев, судя по всему, можно пока особо не заморачиваться, так как там места хватает (нет необходимости в хранении шрифтов разного размера, как для графических).
Замечу, что вся работа идёт над прошивкой для графических дисплеев, и только после её полной доводки я займусь (если займусь) прошивкой для знакосинтезирующих.
Если кому интересно, во вложении платка-переходник для FM-модуля
- Вложения
-
- fm_module.lay6.zip
- (3.56 КБ) 720 скачиваний
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
хорошо быя займусь (если займусь) прошивкой для знакосинтезирующих.
- Mazzz
- Нашел транзистор. Понюхал.
- Сообщения: 165
- Зарегистрирован: Пт июл 05, 2013 01:31:35
- Откуда: Владивосток
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Согласен на счет знакосентезирующего индикатора. Будем ждать 
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Итак,
Первая рабочая beta-версия прошивки с поддержкой FM-радио на базе модуля TEA5767.
Пока только для графических дисплеев (WG12864). Проверил работу я пока только с TDA7439 (но должно работать и на TDA7313/7318).
Исходники, как обычно, на googlecode
Код был изрядно оптимизирован (сократил почти на килобайт, который заняла потом поддержка радио). Прошивка в итоге заняла 16350 (из 16384) байт flash-памяти. Так что слишком не бросайтесь камнями по некоторым недоделанным функциям:
- Кнопки 2 и 3 (ранее включавшие часы и mute), теперь этого пока не делают, а служат для сканирования вниз-вверх по FM-диапазону (длинное нажатие) или ±100кГц (короткое). Потом доработаю, чтобы не в FM-режиме они делали то же, что и раньше.
- В режиме FM-радио пока отображается только частота. Вывод дополнительной информации пока не позволяет сделать размер прошивки, но в целом индикацию уровня сигнала, стереорежима (чего-то ещё?) и т.п. сделать не проблема.
Попытаюсь ещё ужать прошивку и исправить мелкие недочёты. Кстати, хорошо бы кто-то выложил сюда своё мнение по поводу возможных недочётов или улучшений, и если это мнение будет достаточно разумным, я постараюсь его учесть.
Некоторые особенности:
- Режим FM-радио возможен только когда выбран соответствующий вход. Для TDA7439 это вход 4 (Тюнер), для TDA7313/7318 это вход 3 (но, повторюсь, эти микросхемы я пока не проверял).
- Вход в режим FM-радио - длинное нажатие кнопки 2 (короткое её нажатие перебирает входы). Или с пульта, нажатием кнопки выбора входа тюнера.
- Вход в тестовый режим (отображение кодов пульта, чтобы потом нужные коды можно было удобно занести в EEPROM), ранее вызывавшийся по сочетанию кнопок 1-4-5, сейчас вызывается из режима ожидания сочетанием кнопок 1-2 (выключение/выбор входа). Плюс сейчас в тестовом режиме помимо RC5-кодов отображаются и действия с кнопками и энкодером.
Первая рабочая beta-версия прошивки с поддержкой FM-радио на базе модуля TEA5767.
Пока только для графических дисплеев (WG12864). Проверил работу я пока только с TDA7439 (но должно работать и на TDA7313/7318).
Исходники, как обычно, на googlecode
Код был изрядно оптимизирован (сократил почти на килобайт, который заняла потом поддержка радио). Прошивка в итоге заняла 16350 (из 16384) байт flash-памяти. Так что слишком не бросайтесь камнями по некоторым недоделанным функциям:
- Кнопки 2 и 3 (ранее включавшие часы и mute), теперь этого пока не делают, а служат для сканирования вниз-вверх по FM-диапазону (длинное нажатие) или ±100кГц (короткое). Потом доработаю, чтобы не в FM-режиме они делали то же, что и раньше.
- В режиме FM-радио пока отображается только частота. Вывод дополнительной информации пока не позволяет сделать размер прошивки, но в целом индикацию уровня сигнала, стереорежима (чего-то ещё?) и т.п. сделать не проблема.
Попытаюсь ещё ужать прошивку и исправить мелкие недочёты. Кстати, хорошо бы кто-то выложил сюда своё мнение по поводу возможных недочётов или улучшений, и если это мнение будет достаточно разумным, я постараюсь его учесть.
Некоторые особенности:
- Режим FM-радио возможен только когда выбран соответствующий вход. Для TDA7439 это вход 4 (Тюнер), для TDA7313/7318 это вход 3 (но, повторюсь, эти микросхемы я пока не проверял).
- Вход в режим FM-радио - длинное нажатие кнопки 2 (короткое её нажатие перебирает входы). Или с пульта, нажатием кнопки выбора входа тюнера.
- Вход в тестовый режим (отображение кодов пульта, чтобы потом нужные коды можно было удобно занести в EEPROM), ранее вызывавшийся по сочетанию кнопок 1-4-5, сейчас вызывается из режима ожидания сочетанием кнопок 1-2 (выключение/выбор входа). Плюс сейчас в тестовом режиме помимо RC5-кодов отображаются и действия с кнопками и энкодером.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Обновление прошивки.
Пофиксил некоторые вышеупомянутые баги.
Осталось, по большому счёту, только реализовать сохранение станции в EEPROM.
Но я уже и не знаю, как бы ещё оптимизировать код. Разве оставлять в прошивке поддержку только одного аудиопроцессора, нещадно вырезая лишний код поддержки других. И делать, таким образом, три разные прошивки под разные аудиопроцессоры.
По сравнению с старой версией немного поменялась организация EEPROM:
Что-то не слышно отзывов по первой "бете". Кто-нибудь ещё попробовал с радиомодулем?
Пофиксил некоторые вышеупомянутые баги.
Осталось, по большому счёту, только реализовать сохранение станции в EEPROM.
Но я уже и не знаю, как бы ещё оптимизировать код. Разве оставлять в прошивке поддержку только одного аудиопроцессора, нещадно вырезая лишний код поддержки других. И делать, таким образом, три разные прошивки под разные аудиопроцессоры.
По сравнению с старой версией немного поменялась организация EEPROM:
Спойлер
Код: Выделить всё
______Аудиопараметры________
/ \
0000 f5 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff |................| Значения
0010 b1 f9 f9 f9 d1 eb 00 00 00 00 ff ff ff ff ff ff |................| Минимумы
0020 00 07 07 07 00 15 0f 0f 0f 0f ff ff ff ff ff ff |................| Максимумы
0030 01 02 02 02 01 01 02 02 02 02 ff ff ff ff ff ff |................| Шаги
_Код пульта (узнать можно в тестовом режиме)
/ _Микросхема (TDA7439/TDA7313/TDA7318)
/ /
0040 19 00 04 00 01 00 00 ff ff ff ff ff ff ff ff ff |................| Прочие параметры
__________Коды кнопок пульта RC5______________
/ \
0050 0c 0d 3b 10 11 37 36 32 34 1e 2a 26 38 0e 20 21 |..;..7624.*&8. !|
0060 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
_____________Текстовые метки__________________
/ \ (TDA7313/7318)
0070 a1 70 6f bc ba 6f 63 bf c4 00 ff ff ff ff ff ff |.po..oc.........| Громкость
0080 54 65 bc b2 70 20 48 ab 00 ff ff ff ff ff ff ff |Te..p H.........| Тембр НЧ
0090 54 65 bc b2 70 20 43 ab 00 ff ff ff ff ff ff ff |Te..p C.........| Тембр СЧ (Тонкоррекция)
00a0 54 65 bc b2 70 20 42 ab 00 ff ff ff ff ff ff ff |Te..p B.........| Тембр ВЧ
00b0 a9 63 b8 bb 65 bd b8 65 00 ff ff ff ff ff ff ff |.c..e..e........| Усиление (Баланс П/З)
00c0 a0 61 bb 61 bd 63 00 ff ff ff ff ff ff ff ff ff |.a.a.c..........| Баланс (Баланс Л/П)
00d0 54 65 bb 65 b3 b8 b7 6f 70 20 20 00 ff ff ff ff |Te.e...op .....| Телевизор
00e0 44 56 44 2d be bb 65 65 70 20 20 00 ff ff ff ff |DVD-..eep .....| DVD-плеер
00f0 4b 6f bc be c4 c6 bf 65 70 20 20 00 ff ff ff ff |Ko.....ep .....| Компьютер
0100 54 c6 bd 65 70 20 20 20 20 20 20 00 ff ff ff ff |T..ep .....| Тюнер
0110 a8 70 b8 b4 bb 79 c1 65 bd b8 65 00 ff ff ff ff |.p...y.e..e.....| Приглушение
0120 20 b3 ba bb c6 c0 65 bd 6f 20 20 00 ff ff ff ff | .....e.o .....| включено
0130 20 6f bf ba bb c6 c0 65 bd 6f 20 00 ff ff ff ff | o.....e.o .....| отключено
0140 e3 a0 00 ff ff ff ff ff ff ff ff ff ff ff ff ff |................| дБ
0150 42 4f 43 4b 50 45 43 45 48 62 45 20 00 ff ff ff |BOCKPECEHbE ....| ВОСКРЕСЕНЬЕ
0160 a8 4f 48 45 e0 45 a7 62 48 a5 4b 20 00 ff ff ff |.OHE.E.bH.K ....| ПОНЕДЕЛЬНИК
0170 20 20 42 54 4f 50 48 a5 4b 20 20 20 00 ff ff ff | BTOPH.K ....| ВТОРНИК
0180 20 20 20 43 50 45 e0 41 20 20 20 20 00 ff ff ff | CPE.A ....| СРЕДА
0190 20 20 ab 45 54 42 45 50 a1 20 20 20 00 ff ff ff | .ETBEP. ....| ЧЕТВЕРГ
01a0 20 20 a8 b1 54 48 a5 e1 41 20 20 20 00 ff ff ff | ..TH..A ....| ПЯТНИЦА
01b0 20 20 43 a9 a0 a0 4f 54 41 20 20 20 00 ff ff ff | C...OTA ....| СУББОТА
01c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
01d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
01e0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
01f0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff |................|
Кнопки пульта в файле eeprom прописаны в следующем порядке:
STBY, MUTE, MENU, VOL_UP, VOL_DOWN, INPUT_0, INPUT_1, INPUT_2,
INPUT_3, NEXT_INPUT, TIME, BACKLIGHT, SP_MODE, LOUDNESS, CHAN_UP, CHAN_DOWN.- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Можно использовать условную компиляцию для разных аудиопроцессоров.WiseLord писал(а):нещадно вырезая лишний код
- SergeyK
- Говорящий с текстолитом
- Сообщения: 1512
- Зарегистрирован: Вт апр 21, 2009 20:52:29
- Откуда: ХМАО Югра Белоярский
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Я пока только слежу за новостями, и модуль только заказал.WiseLord писал(а):[Что-то не слышно отзывов по первой "бете". Кто-нибудь ещё попробовал с радиомодулем?
И может уже применить более емкий МК 32 мегу, чтоб все хотелки поместить.
Гнев - мгновенное разрушение реальности!
Делай всегда хорошо, а хреново и так получится!!!!!
Делай всегда хорошо, а хреново и так получится!!!!!
- Александр76
- Потрогал лапой паяльник
- Сообщения: 392
- Зарегистрирован: Вс янв 25, 2009 23:17:22
- Откуда: 76RUS
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Ко мне тоже детальки едут
- SergeyK
- Говорящий с текстолитом
- Сообщения: 1512
- Зарегистрирован: Вт апр 21, 2009 20:52:29
- Откуда: ХМАО Югра Белоярский
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Есть закрепленное за кнопками какое то действие? Я так понял S5 не ставится если энкодер с кнопкой. S3 это выбор входов. Что закреплено за остальными? Суть такая я хочу развести плату чтоб кнопки, энкодер и приемник ИК уже были на ней.
Гнев - мгновенное разрушение реальности!
Делай всегда хорошо, а хреново и так получится!!!!!
Делай всегда хорошо, а хреново и так получится!!!!!
- VeryLazyCat
- Опытный кот
- Сообщения: 832
- Зарегистрирован: Пн май 17, 2010 22:21:01
- Откуда: Madagaskar
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
вывод на дисплей LS020 можно сделать ?WiseLord писал(а):Обновление прошивки.
на нём красиво анализатор будет выглядеть.
- SergeyK
- Говорящий с текстолитом
- Сообщения: 1512
- Зарегистрирован: Вт апр 21, 2009 20:52:29
- Откуда: ХМАО Югра Белоярский
- Контактная информация:
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Этот дисплей щас днем с огнем не найдешь!Lazy-Cat писал(а):вывод на дисплей LS020 можно сделать ?
Гнев - мгновенное разрушение реальности!
Делай всегда хорошо, а хреново и так получится!!!!!
Делай всегда хорошо, а хреново и так получится!!!!!
- VeryLazyCat
- Опытный кот
- Сообщения: 832
- Зарегистрирован: Пн май 17, 2010 22:21:01
- Откуда: Madagaskar
Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
на барахолках ещё можно найти при желании.
Последний раз редактировалось VeryLazyCat Вс май 11, 2014 10:17:44, всего редактировалось 1 раз.


