Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Добавлено: Ср май 24, 2017 16:01:38
Родился
Зарегистрирован: Пт май 19, 2017 06:52:40 Сообщений: 14
Рейтинг сообщения:0
Спасибо будем пробовать.
Добавлено after 31 minute 18 seconds: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864 Ещё вопрос .Удалять лишнее надо из maktfile и eeprom ?
Но для начала - ничего не удаляя, просто зафиксироваться на нужном экране. Поискать по коду MODE_STANDBY, на который система уходит при включении и срабатывании таймеров, сделать дефолтным MODE_SPECTRUM. Когда заработает как надо - будет включаться и работать только спектр - тогда уже и пробовать удалять лишние куски кода. Если захочется, конечно.
Вероятно, одним из наиболее простых способов будет упростить функцию showScreen() до вызовов getSpectrum() / showSpectrum() / displayUpdate()
WiseLord ткните пожалуйста носом где идет инициализация аудиопроцессора во время выхода из StBy, а то у меня ёмкости стоят большие, импульсник не сразу стартует, где то через секунды полторы запускается, приходится усь включать выключать пару раз, если после первого пуска ничего не делать - тишина, громкость крутнешь - 2 канала работают.
Хочу попробовать повторную инициализацию после запуска с задержкой сделать, если конечно это возможно
_________________ Электроника -очень точная наука, бубен необходимо держать в левой руке!!!
Так что может помочь простое изменение INIT_TIMER_START в сторону увеличения.
Такие сложности ради того, чтобы система при включении не "висела" в тупом цикле, дожидаясь заряда конденсаторов, а могла реагировать на действия пользователя. А инициализация железа откладывается за счёт таймеров.
Доброго времени суток всем. В конструкции мега 32+lcd2x16+TDA7439 имеются 3 свободные ноги (30,31,32) хочу повесить на них сигнал включения питания блютуз, и других источников звука. Где искать в исходниках? Как реализовать ,чтобы при выборе определенного входа TDA7439 на этих ножках (30,31,32) появлялся высокий уровень?
Тоже в обработчике действий дополнительный код добавить. При любых переключениях входов срабатывает одно из действий CMD_RC_IN_* соответственно. Проще всего встроиться перед функцией sndSetInput(), где и дёргать ножками в зависимости от разности action - CMD_RC_IN_0, принимающей значения от 0 до 4 в зависимости от одного из пяти выбранных входов. Естественно, где-нибудь в инициализации не забыть эти ножки в режим выхода переключить. Ну и учесть, что при dispMode == MODE_STANDBY все три ножки хорошо бы в ноль класть.
Спасибо, изменил значение таймера на 2000, при включении показывает приглушение, потом все просыпается, аудио процессор стартует стабильно, теперь смогу спокойно просыпаться под будильник а то включается и тишина )))) осталось разобраться с щелчками по 4 - 5 штук за секунду... раньше думал 2 щелчка, вчера прислушался и смотрел на секунды на дисплее... на буднях возьму осцил с работы, погляжу что там на i2c творится
_________________ Электроника -очень точная наука, бубен необходимо держать в левой руке!!!
Пробывал ваши изменения работает ,но не так как хотелось бы. Первый глюк: оставляешь строку setExtPower(action - CMD_RC_IN_0); работает как часы при переключении на 1 вход включается при переключении других входов выключается, меняешь на SetExtPower (action - CMD_RC_IN_1); включается при переключении входа 1 и входа 2( получается при включении первых двух входов).Второй глюк при выключении(при переходе в режим стендби) если на выходе (у меня 30 нога остальные ножки я из кода убрал) была единица , то единица и остается висеть (хотя по логике должно сбрасываться в ноль как и ножка стендби).Сам пробовал исправить косяки ,но не хватает знаний.Как эти косяки поправить?
Зачем менять, если без этого работает правильно? Неудивительно, что глюк появится, когда абы что улетит в эту функцию. (P.S. Там небольшая опечатка, вместо (offMask & 0x001) и по аналогии нужно, очевидно, писать offMask & 0b001
HoloH писал(а):
Второй глюк при выключении
Можно добавить в обработчик CMD_RC_STBY вызов этой новой функции с параметром (номером входа) 7. Так как такого входа нет (их всего 4), то его питание и не включится, а вот все прочие extPower выводы выключатся.
Что то никак.) Мои вводные. В редакторе епром : input 0 -tuner(назовем 1 вход),input 1 -bluetooth(2 вход),input 2 - Computer(вход 3),input 3 -line(вход 4). ноги 30,31,32 соответственно выходы управления питанием устройств 30- 2 вход,31- 3 вход, 32- 4 вход. Вставляю ваш кусок из поста от 26.05 исправленный.
static void setExtPower(uint8_t input) { uint8_t offMask = 0b11111111; // By default switch off all devices
if (dispMode != MODE_STANDBY) { offMask &= ~(1 << input); // Don't off one of devices } if (offMask & 0x0b001) PORT(EXT_POWER1) &= ~EXT_POWER1_LINE; else PORT(EXT_POWER1) |= EXT_POWER1_LINE; if (offMask & 0x0b010) PORT(EXT_POWER2) &= ~EXT_POWER2_LINE; else PORT(EXT_POWER2) |= EXT_POWER2_LINE; if (offMask & 0x0b100) PORT(EXT_POWER3) &= ~EXT_POWER3_LINE; else PORT(EXT_POWER3) |= EXT_POWER3_LINE; } работает так: подача питания 30- ноль,31-ноль,32-ноль выход из стенби 30-ноль,31-ноль,32-ноль. переключаю вход 1 на 2 30- единица,31- ноль,32- единица переключаем 2->3 30- 1,31-0,32-0. переключаем 3->4 30-1,31-0,32-0. переключение 4->1 30-1,31-0,31-1. уходим в стенби на любом входе все ножки в ноль. (добавил в обработчике стенби свои ноги ,как вы посоветовали в посте от 28.05) работает не так как надо) а надо: подача питания все ноги в ноль выход из стенби все ноги в ноль переключаем 1->2 30-1,остальные в ноль. переключаем 2->3 31-1, остальные в ноль. переключаем 3->4 32-1, остальные в ноль. переключение 4->1 все в ноль уходим в стенби с любого выхода все в ноль (это работает) Я понял так что надо указать значение offMask для каждой ноги на какие только менять чтоб работало как хочу?
Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Добавлено: Чт июн 01, 2017 13:08:33
Вымогатель припоя
Зарегистрирован: Ср сен 09, 2015 13:09:15 Сообщений: 558
Рейтинг сообщения:0
созрело 2 вопроса: 1 можно ли обойтись без операционного усилителя для спектроанализатора на ATMEGA8, подав на AREF ИОН 1 V, или операционник выполняет функцию развязки аудиотракта от шумов контроллера? нужны ли LC фильтры для AVCC и конденсатор на AREF c резистором 5 кОм к ИОН, как пишут во всех даташитах на меги?
2 как допилить до актуального состояния исходники под ATMEGA8, с учетом доработок из ветки репы ATMEGA32? подкладывание исходников с ветки в ветку проблемы не решает, нужны более глубокие знания в структуре кода. в последних скомпиленых хешах на мегу8 глюк с 2мя столбиками на НЧ, пересобрал из исходников репы, глюк со столбиками повторился. build_all.sh вываливает ошибки и не компилит, приходится в make прописывать напрямую.
Добавлено after 27 minutes 14 seconds: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864 И да, в даташите на TDA7313 http://ampslab.com/PDF/tda7313.pdf отдельно отведены цифровые линии [26,27,28 pins] 26пин цифровая земля от микроконтроллера, если её не соединять с аналоговой землей тдашки, то шумы от шины I2C перестанут пролазить в аналоговый тракт усилителя. землю и VCC контроллера только тоже надо пропустить через LC фильтры, дабы не загонять вч помеху в общую цепь шины питания. до ТДА еще ход не дошел, чтобы проверить, но с тюнера на TEA5767 сигнальную шину слышно отчетливо, тоже буду отфильтровывать на стабилизатое 3.3 V, от 5 V он просто затыкается. http://artofcircuits.com/wp-content/upl ... dule-3.jpg
1. По идее, можно. Должно хватить двух резисторов на входе в качестве делителя, чтобы обеспечить 2.5В (половину питания) на входе АЦП и разделительного конденсатора для подачи сигнала. Возможно, из-за более низкого уровня сигнала придётся в коде "подкрутить" усиление. 2. Смысла нет. ATmega8 уже и так забита на 100% (8188 байта из 8192 доступных в моём случае). Скрипт build_all.sh работает. Два столбика на НЧ видны из-за того, что не обеспечена половина питания на входе АЦП.
1. По идее, можно. Должно хватить двух резисторов на входе в качестве делителя, чтобы обеспечить 2.5В (половину питания) на входе АЦП и разделительного конденсатора для подачи сигнала. Возможно, из-за более низкого уровня сигнала придётся в коде "подкрутить" усиление. 2. Смысла нет. ATmega8 уже и так забита на 100% (8188 байта из 8192 доступных в моём случае). Скрипт build_all.sh работает. Два столбика на НЧ видны из-за того, что не обеспечена половина питания на входе АЦП.
Попробуйте на #!/bin/bash поменять заголовок - скрипт под него, по идее. А у Вас, вероятно, какой-то другой шелл. Или "/usr/bin/[" в системе нету. Можно ещё квадратные скобки на двойные поменять попробовать.
Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Добавлено: Чт июн 01, 2017 17:28:14
Вымогатель припоя
Зарегистрирован: Ср сен 09, 2015 13:09:15 Сообщений: 558
Рейтинг сообщения:0
таки да, #!/bin/bash вместо #!/bin/sh исправил положение спасибо. компилю в вин10 с надстройкой Ubuntu https://habrahabr.ru/post/280560/. доставил: "sudo apt-get install gcc-avr binutils-avr avr-libc avrdude gdb-avr avarice simulavr"
Заголовок сообщения: Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Добавлено: Пт июн 02, 2017 15:38:42
Вымогатель припоя
Зарегистрирован: Ср сен 09, 2015 13:09:15 Сообщений: 558
Рейтинг сообщения:0
в исходниках на M8 явно что-то не так, даже в протеусе 2 левых столбика в спектре горят, эмуляция c M32 показывает нормальный спектр. потому я и попросил автора внести изменения и в ветку M8 на гите. и менюшки в M8 M32 разные для ks0066 дисплея. разобраться в коде по истории изменений у меня знаний языка маловато, да и код уж очень разный.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения