Например TDA7294

Форум РадиоКот • Просмотр темы - Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вт сен 09, 2025 16:45:08

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 4782 ]     ... , , , 146, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб авг 05, 2017 10:42:22 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4885
Откуда: Минск
Рейтинг сообщения: 0
Нет. Это место - это лишь ремаппинг команд _PREV и _NEXT в обычные _IN_X. А они уже ниже обрабатываются, там и вставлять.

Никакие if не нужны. tunerSetMute(aproc.mute || aproc.input) как включит mute тюнера (либо когда обычный mute включен, либо канал ненулевой), так и выключит (на нулевом канале)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб авг 05, 2017 17:32:01 
Вымогатель припоя

Зарегистрирован: Ср сен 09, 2015 13:09:15
Сообщений: 558
Рейтинг сообщения: 0
Нет. Это место - это лишь ремаппинг команд _PREV и _NEXT в обычные _IN_X. А они уже ниже обрабатываются, там и вставлять.

Никакие if не нужны. tunerSetMute(aproc.mute || aproc.input) как включит mute тюнера (либо когда обычный mute включен, либо канал ненулевой), так и выключит (на нулевом канале)


:ampcontrol-m8\main.c

case CMD_RC_IN_0:
tunerSetMute(aproc.mute || aproc.input)
case CMD_RC_IN_1:
case CMD_RC_IN_2:
case CMD_RC_IN_3:
case CMD_RC_IN_4:
ks0066Clear();
sndSetInput(action - CMD_RC_IN_0);
dispMode = MODE_SND_GAIN0 + aproc.input;
setDispTimer(DISPLAY_TIME_GAIN);
break;

я правильно понял?
мне для проверки прошивки разбирать много приходится, SPI не допаял пока.

и да, в версии m32 этого тоже нет.


Последний раз редактировалось AlekseyEnergo Ср авг 09, 2017 21:30:54, всего редактировалось 1 раз.
Нарушение п2.7 правил форума. Предупрежден.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб авг 05, 2017 18:13:35 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4885
Откуда: Минск
Рейтинг сообщения: 0
Ниже. Функция срабатывать должна не только на 0 входе (делать mute = 0), но и на других (mute = 1). И уж точно позднее sndSetInput(), коль скоро использует aproc.input в параметрах.

Как в ATmega32: https://github.com/WiseLord/ampcontrol/ ... ons.c#L346


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб авг 05, 2017 19:41:26 
Вымогатель припоя

Зарегистрирован: Ср сен 09, 2015 13:09:15
Сообщений: 558
Рейтинг сообщения: 0
а что хранится в переменной aproc.input?
т.е первый кейс правильно и надо вставить в остальные 4?

case CMD_RC_IN_0:
tunerSetMute(aproc.mute || aproc.input)
case CMD_RC_IN_1:
tunerSetMute(aproc.mute || aproc.input);
case CMD_RC_IN_2:
tunerSetMute(aproc.mute || aproc.input);
case CMD_RC_IN_3:
tunerSetMute(aproc.mute || aproc.input);
case CMD_RC_IN_4:
ks0066Clear();
sndSetInput(action - CMD_RC_IN_0);
dispMode = MODE_SND_GAIN0 + aproc.input;
setDispTimer(DISPLAY_TIME_GAIN);
tunerSetMute(aproc.mute || aproc.input);
break;

диапазон параметров для процедуры void tunerSetMute(uint8_t value) какой? 0 - выключен mute, 1 и больше - включен?
извиняюсь за такие вопросы, я пока чайник в С++


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб авг 05, 2017 19:48:21 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4885
Откуда: Минск
Рейтинг сообщения: 4
Номер входа, как естественно следует из названия.

Нет, неправильно. И добавлять не надо. Если так оставите как хотите, то в случае case CMD_RC_IN_0 функция будет вызываться целых 5 раз.

Я уже привёл пример кода для ATmega32 - как надо.

Да, передача нуля в функцию установит mute в ноль, то есть звук пойдёт. Любое другое значение - режим mute, звука нет.

P.S. И вставляйте кусочки кода в тег [code] - ибо нечитабельно.

P.P.S. Код, имхо, понятен чуть менее чем полностью. Например, для ATmega32:
Спойлер
Код:
    case CMD_RC_IN_0:
      if (getDefDisplay() == MODE_SPECTRUM && tuner.ic)
          setDefDisplay(MODE_FM_RADIO);
    case CMD_RC_IN_1:
    case CMD_RC_IN_2:
    case CMD_RC_IN_3:
    case CMD_RC_IN_4:
        sndSetInput(action - CMD_RC_IN_0);
        dispMode = MODE_SND_GAIN0 + aproc.input;
        setDisplayTime(DISPLAY_TIME_GAIN);
        tunerSetMute(aproc.mute || aproc.input);
        break;

Прилетает некоторое событие (номер) action. CMD_RC_IN_0 - это какое-то число из перечисления, неважно какое, допустим, 5. Остальные четыре входа - числа 6..9 соответственно.

И вот, если этот action = X - одно из чисел от 5 до 9 - срабатывает этот кусок кода;
1. установка одного из входов 0..4: sndSetInput(action - CMD_RC_IN_0); => sndSetInput(X - 5) => sndSetInput(0 .. 4)
2. вход в режим экрана dispMode = MODE_SND_GAIN0 .. MODE_SND_GAIN4
3. экран этот будет отображаться DISPLAY_TIME_GAIN миллисекунд.
4. в зависимости от общего режима mute (aproc.mute) и текущего входа (aproc.input) будет приглушён или возобновлён звук с тюнера.

Дополнительно, только для команды CMD_RC_IN_0 в самом начале кода идёт смена дефолтного (т.е. того, куда будет возвращаться экран по таймауту) режима дисплея MODE_FM_RADIO, если текущий режим - спектр (MODE_SPECTRUM) и радио вообще в наличии (tuner.ic ненулевой)

Но ещё раз повторюсь, всё это объяснять смысла нет, потому что по коду всё и так полностью понятно.


Последний раз редактировалось WiseLord Сб авг 05, 2017 20:11:02, всего редактировалось 3 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб авг 05, 2017 20:05:32 
Вымогатель припоя

Зарегистрирован: Ср сен 09, 2015 13:09:15
Сообщений: 558
Рейтинг сообщения: 0
как-то так?
Код:
    case CMD_RC_IN_0:
      case CMD_RC_IN_1:
      case CMD_RC_IN_2:
      case CMD_RC_IN_3:
      case CMD_RC_IN_4:
         ks0066Clear();
         sndSetInput(action - CMD_RC_IN_0);
         dispMode = MODE_SND_GAIN0 + aproc.input;
         setDispTimer(DISPLAY_TIME_GAIN);
         tunerSetMute(aproc.mute || aproc.input);
         break;

блин, надо книжку по Си полистать,
и почему вызов процедуры в case CMD_RC_IN_4: , если каналов максимум 4 а это пятый ? для себя понять логику работы алгоритма хочу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб авг 05, 2017 20:08:12 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4885
Откуда: Минск
Рейтинг сообщения: 0
В PT232x каналов как раз пять.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб авг 05, 2017 20:22:39 
Вымогатель припоя

Зарегистрирован: Ср сен 09, 2015 13:09:15
Сообщений: 558
Рейтинг сообщения: 0
извиняюсь за нудность, а пустые case CMD_RC_IN_0: - case CMD_RC_IN_3: что выполняют, это зарезервировано на будущее?
если я внесу вызов процедуры без параметров в case CMD_RC_IN_0: то она будет работать только на 0 канале?
одно пока не пойму, как работает case CMD_RC_IN_4: если у меня каналы с 0 по 2, а 3 и 4 нет. по логике switch (action) его просто пропустит.

если action равен CMD_RC_IN_4(номеру канала темброблока), выполнить команды под кейсом. или это не номер канала?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб авг 05, 2017 20:50:23 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4885
Откуда: Минск
Рейтинг сообщения: 0
С чего Вы взяли, что они пустые?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб авг 05, 2017 20:55:26 
Вымогатель припоя

Зарегистрирован: Ср сен 09, 2015 13:09:15
Сообщений: 558
Рейтинг сообщения: 0
за case CMD_RC_IN_0: напр нет команд
а в case CMD_RC_IN_4:
команда
break;
что-то есть.
а как тогда это работает :shock:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб авг 05, 2017 20:58:50 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4885
Откуда: Минск
Рейтинг сообщения: 4
Мда.. похоже, в C действительно не очень разбираетесь. Вот тогда Вам три примера, из которых логика работы switch должна стать понятной:

Изображение Изображение Изображение

Команды после _4 выполняются и для _0.._3, потому что нет никаких причин (break) этого не делать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Сб авг 05, 2017 21:08:45 
Вымогатель припоя

Зарегистрирован: Ср сен 09, 2015 13:09:15
Сообщений: 558
Рейтинг сообщения: 0
тыдыщ, пошел курить учебник по сям


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Вс авг 06, 2017 13:40:03 
Первый раз сказал Мяу!

Зарегистрирован: Чт дек 06, 2012 23:20:07
Сообщений: 30
Рейтинг сообщения: 0
Всем привет, спаял наконец то плату, теперь нужно запрограмировать...
У меня есть USBAPS с программой Khazama и STK 200/300 с PonyProg, Есть у кого принтскрин как ставить фузы в этих программах?
За основу взял печатку Mazzz
Плата БП
Вложение:
IMG_20170806_112718.jpg [42.45 KiB]
Скачиваний: 774

Вложение:
IMG_20170806_112724.jpg [30.96 KiB]
Скачиваний: 464

Сам "Темброблок"
Вложение:
IMG_20170806_112743.jpg [39.75 KiB]
Скачиваний: 715

Вложение:
IMG_20170806_112750.jpg [54.29 KiB]
Скачиваний: 562


Добавлено after 2 hours 46 minutes 49 seconds:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
Вроде так?
Вложение:
Fuse PonyProg.JPG [114.1 KiB]
Скачиваний: 507

Вложение:
Fuse Khazama.JPG [35.65 KiB]
Скачиваний: 505


Вложения:
AMP Control.rar [123.84 KiB]
Скачиваний: 338
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Вс авг 06, 2017 15:58:19 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4885
Откуда: Минск
Рейтинг сообщения: 0
На днях приобрёл себе новый телефон Xiaomi Redmi 4x. Старый Galaxy S Plus верой-правдой прослужил почти 6 лет и до сих пор работает отлично, но нынешние приложения тяжеловаты уже для него, одноядерного.

В новом телефоне есть IR-передатчик. Поигравшись с кучей приложений для управления аппаратурой, нашёл лишь два более-менее подходящих для проекта, а именно - позволяющих вручную вводить коды пульта. Все прочие пользуются онлайн базами данных пультов.

1. Universal TV Remote. Позволяет создать пульт с нуля, и каждой кнопке, при желании, назначить некоторый код в виде строки IR Sequence. Редактор EEPROM теперь позволяет генерировать эти IR Sequence.

2. Smart IR Remote - AnyMote, или бесплатный вариант с рекламой - AnyMote Universal Remote + WiFi Smart Home Control. Позволяет импортировать файл пульта.

Собственно, под эти программы (возможно, и для каких-то других подойдёт) и доработан сейчас Ampcontrol EEPROM Editor. В нём можно как просто получить IR Sequence, так и готовый файл для AnyRemote.

Вообще-то AnyRemote может и обучаться от текущего пульта, но это если железо телефона позволяет. В моём телефоне, похоже, есть только IR передатчик без приёмника, так что нужен другой способ.

Итак, как сдублировать имеющийся пульт на телефон:

1. Сливаем из уже обученной ATmega32 eeprom файл. Открываем его в редакторе EEPROM. На вкладке Remote можно видеть коды IR sequence, подходящие для Universal TV Remote (и, возможно, для других программ). Их и вбиваем потом на телефоне. Я у себя в Linux, пользуяс KDE Connect делаю это для всех кнопок минут за пять - есть возможность сделать Copy текста на компьютере и Paste на телефоне. Для AnyMote же можно экспортировать всю конфигурацию в файл

СпойлерИзображение Изображение


2. В случае AnyMote получаем вот файлик в JSON формате, который нужно скопировать на телефон:

СпойлерИзображение Изображение


3. Далее уже на телефоне в AnyMote добавляем пульт импортом из файла:

СпойлерИзображение Изображение Изображение Изображение Изображение


Далее уже в обеих программах можно кнопки расположить на экране как угодно, раскрасить в нужные цвета, добавить иконки и т.д.

!!! На данный момент редактор EEPROM экспортирует только пульты формата RC5. Прочие пока не поддерживаются, добавлю их позднее в течение этого месяца.

P.S.
Забрать всё можно на GitHub вместе со свежим релизом.


Последний раз редактировалось WiseLord Вс авг 06, 2017 16:19:35, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Вс авг 06, 2017 16:12:28 
Первый раз сказал Мяу!

Зарегистрирован: Чт дек 06, 2012 23:20:07
Сообщений: 30
Рейтинг сообщения: 0
Прошил ampcontrol_m32_ks0108b.hex с архива из статьи ...
Ждущий режим
Вложение:
IMG_20170806_165550.jpg [38.88 KiB]
Скачиваний: 418

Насколько помню 80 в секундах говорит, что часы нужно запустить.
Подсветка горит на всю, и вместа дня недели прямоугольники.
На кнопку S1 реагирует. Уровни на mute и stby меняются.
Подсветка горит так же 100%.
на экране вот ...
Вложение:
IMG_20170806_165603.jpg [30.15 KiB]
Скачиваний: 535

На кнопки реагирует, заходит в режим настройки дата/время.
Прошил под 0108A Все то же самое только половинки экрана по вертикали поменялись местами.

Плату прозвонил, обвязка дисплея и МК без "соплей", плата мытая в нефрасе.
Что посоветуете, куда копать, грешу на МК, так как при первом включении воткнул дисплей верхногами :(


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Вс авг 06, 2017 16:22:21 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4885
Откуда: Минск
Рейтинг сообщения: 0
EEPROM тоже надо прошить.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Вс авг 06, 2017 17:13:20 
Первый раз сказал Мяу!

Зарегистрирован: Чт дек 06, 2012 23:20:07
Сообщений: 30
Рейтинг сообщения: 0
Прошивал и ru и en

Добавлено after 42 minutes 23 seconds:
WiseLord, фьюзы правильно выставил?


Последний раз редактировалось AlekseyEnergo Ср авг 09, 2017 21:34:19, всего редактировалось 1 раз.
Нарушение п2.7 правил форума. Предупрежден.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Вс авг 06, 2017 18:05:28 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4885
Откуда: Минск
Рейтинг сообщения: 0
Не знаю, -U lfuse:w:0x3F:m -U hfuse:w:0xC1:m - правильные.

Отсутствие текстов и максимальные значения параметров повсюду - результат непрошитого EEPROM, т.к. по дефолту там FF везде читается.

P.S. Вот такой пульт получился в Anymote:

Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Вс авг 06, 2017 18:13:15 
Первый раз сказал Мяу!

Зарегистрирован: Чт дек 06, 2012 23:20:07
Сообщений: 30
Рейтинг сообщения: 0
Не знаю, -U lfuse:w:0x3F:m -U hfuse:w:0xC1:m - правильные.

Отсутствие текстов и максимальные значения параметров повсюду - результат непрошитого EEPROM, т.к. по дефолту там FF везде читается.


Все ясно, буду пробовать, Последняя стабильная прошивка находится в статье?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
СообщениеДобавлено: Вс авг 06, 2017 18:29:14 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4885
Откуда: Минск
Рейтинг сообщения: 0
На гитхабе


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 4782 ]     ... , , , 146, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y