Заголовок сообщения: Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Добавлено: Сб дек 06, 2014 09:45:30
Потрогал лапой паяльник
Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Пт май 07, 2010 01:42:09 Сообщений: 376 Откуда: РФ
Рейтинг сообщения:0
Как вариант таймер можно организовать на пример так. Выбрать кнопку на ПДУ и когда на нее нажимаем на экране появляется надпись "Включить таймер", нажимаем ту же кнопку еще раз и появляется время типа 5мин. и при каждом нажатии той же самой кнопки это время увеличивается на N минут. Сделать придел в 180мин. И так по кругу. В общем как это сделано в телевизорах. Выбрали нужное время и ждем, на пример 5сек. если ничего больше не нажато то это время и будет установлено для отключения.
А на счет будилки, то наверное лучше добавить как пункт в меню, там то нужно выставить время и как вариант выбрать какой-то вход, на пример тюнера время пришло и заиграл приемник.
Итак, на пути к таймеру и будильнику (только для варианта на ATmega32 с дисплеем 128x64):
В выкладываемой прошивке эти функции пока не реализованы, но произошли довольно большие внутренние изменения, подготовившие нужную почву:
1. Изменено управление тюнером. Раньше: кнопки 3-4 коротким нажатием изменяли частоту (±100кГц), длинным - сохранённую станцию. Сейчас: короткое нажатие кнопок 3-4 изменяет станцию, длинное нажатие кнопки 4 - вход в режим настройки частоты энкодером. Аналогично на пульте - кнопки для плавной настройки частоты убраны, вместо них используются кнопки громкости. 2. Освободившиеся кнопки выделены под будущие функции вызова таймера и будильника. 3. Структура EEPROM-файлов поменялась в связи со всем этим, поэтому их придётся перешить заново. И заново настроить как радио под свои станции, так и кнопки пульта. 4. На TDA7313 нет четвёртого входа, зато есть тонкоррекция. Поэтому на пульте две ранее отдельны кнопки объединены в одну, вызывающую нужную функцию.
Кто хочет, может пока потестировать новый вариант прошивки.
Собственно, вот и прошивка с функционалом таймера. С пульта перебор времени отдельной кнопкой, с передней панели - сначала включаем кнопкой 3 часы, потом, длинным её нажатием - переключаемся на таймер, а дальше опять короткими нажатиями выбираем время таймера.
Автору огромное спасибо за проект! У меня будет только единственная просьба: если не трудно не могли бы вы сделать задержку (сколько активно меню Bass/Mid/Treble и т.д.) побольше.
Протестировал прошивку, таймер работает.Есть небольшое пожелание, сохранение и удаление частот работает когда выключен поиск по частотам , а лучше было б что бы когда включен поиск то нашёл сохранил или удалил ,а когда выключен то удалить невозможно.
А возможность удалять станции лучше иметь и в режиме по частотам, и в режиме по станциям. Может быть полезно при удалении возможных дублей станций.
P.S. Выкладываю последние на текущий момент прошивки для всех вариантов. - во всех вариантах исправлена работа индикатора уровня сигнала станции (особенно для RDA5807). - в основном варианте повышено удобство управления тюнером. В режиме настройки по частотам энкодер регулирует частоту с шагом 0.1МГц, кнопки 3-4 - с шагом 1МГц.
- Изменены функции некоторых кнопок пульта и передней панели.
- Имена новых функций в EEPROM для всех поддерживаемых языков.
Переключение между режимами часов, таймера отключения и будильника производится длительным нажатием кнопки 3 на передней панели. Перебор параметров - коротким нажатием. Регулировка параметра - энкодером. На пульте для всех трёх режимов есть отдельные кнопки.
Параметры будильника хранятся не в флеш, а в ОЗУ DS1307, т.е. их сохранность, как и времени, зависит от батарейки.
Теперь RDA5807 может работать и в режиме TEA5767, т.е. прошивка для TEA5767 будет работать как с модулем TEA5767, так и RDA5807. Но "родной" вариант лучше.
Это - результат появления новых функций и попытки втиснуть управление ими в старые рамки. На мой взгляд, несмотря на больший функционал, управлять стало даже удобнее.
Так как структура FLASH, по сравнению со старой прошивкой от 3 ноября, изменилась, при обновлении с той версии нужно зашивать новые версии как flash, так и EEPROM. Ну и заново настраивать кнопки пульта и FM-станции под себя.
Протестировал,работает ,но при настройке будильника ,а в предыдущих версиях до таймера и будильника, шина IC виснет и нужно выключать из сети чтоб возобновить работу.Такое наблюдается в последней прошивке,а в прошивке только с таймером такое не наблюдалось. И ещё вопрос .А квадратики Это дни недели? Если да то неплохо было б поставить буквы Где понедельник а где воскресенье. А за прошивку Огромное Спасибо!
У меня на двух разных дисплеях проверено - ничего не виснет (RDA5807/TDA7439). Даже наоборот, в случае использования модуля RDA5807 при прошивке для TEA5767 шина действительно висла, а в последних - работает в режиме совместимости.
На каком железе наблюдается? Расставьте знаки препинания в своём сообщении, а то, судя по написанному, виснет при настройке будильника на прошивке, в которой будильника вообще не было. И да, пробел ставится после точки/запятой, а не до.
А по поводу подписывания дней недели.. до семи можно и так посчитать. Но вообще, можно и подписать. Место для букв есть.
Ув. Коты! Собрал плату на atmega16 (lcd 16x2), пока без TDA. Прошивку заливал последнюю с rda5807 через sinaprog 1.3. Фьюзы и hex успешно прошились а eeprom никак не могу залить. программатор usbtiny. в winavr открывал eeprom.bin но не пойму что ему сделать???? Подскажите чем его сделать eeprom.eep
Я имел ввиду что зависание наблюдалось ранее при настройке часов в прошивках до таймера, в прошивке с таймером такого замечено не было.А в последней прошивке виснет при настройке будильника, а тестирую с rda5807,tda7439,atmega32. Испытывал прошивку для tea5767 (в усилке стоит rda5807), работает и не виснет что б не перестраивал.
Не умеете переименовывать файлы? Даже тем же проводником?
eeprom.bin - обычный бинарный файл, по размеру равный размеру eeprom контроллера и побайтно туда записываемый как есть, без каких бы то ни было преобразований.
koka5555 писал(а):
тестирую с rda5807,tda7439,atmega32
У меня точно такой же набор железа, и никаких проблем с зависаниями нет. В какой момент проявляется? Интересует точная последовательность действий, приводящих к зависанию, дабы я смог повторить.
P.S. Добавил текстовые метки для дней недели в режиме будильника.
Когда начинаю в будильнике метить квадратики (дни) виснет, а в прошивке для TEA5767 такое не наблюдается. А в будущем не желаете сделать будильник под DS3231 ,она более точная по х оду часов и с ней возможно сделать два будильника, к примеру рабочие дни в одно время включения, а в выходные другое.
Ну вот кручу энкодер со всей дури. Или кнопку VOL_UP/VOL_DOWN зажимаю на пульте - квадратики (выбор дня недели) носятся что бешеные, но ничего не виснет. Какого номинала подтягивающие резисторы на I2C шине? Может, если 10 кОм, лучше уменьшить раза в два, может там у Вас провода сильно длинные, и резисторы не успевают вытягивать шину в единицу из-за её большой ёмкости?
А DS3231 (есть у меня штуки 3 китайских модуля на них) по протоколу совместима с DS1307. Вот только насчёт моего программного будильника не уверен, что он будет работать и в DS3231, но склонен думать, что всё же будет.
2 staseshe: судя по всему, эта программка лишь графическая оболочка для avrdude. Можно ли увидеть командную строку, передаваемую avrdude? Должно быть что-то вроде
Ну или напрямую через avrdude таким способом прошейте, без этой оболочки.
P.S. Ну и пробел в пути к eeprom мне не нравится.
P.P.S. И в avrdude можно скорость поменьше сделать (-B 20) попробовать. Не знаю, позволяет ли этот параметр передать эта оболочка.
P.P.S. И можно попробовать прошить не на частоте кварца (16МГц), а выставить фьюзы на 1МГц внутренний генератор, зашить в этом режиме флеш и еепром, и потом только выставить частоту 16МГц.
Последний раз редактировалось WiseLord Вс дек 07, 2014 23:59:26, всего редактировалось 2 раз(а).
Протестировал прошивки с под писаными днями недели, всё класс , шина не виснет , прошивал обе и для TEA5767 и для rda5807 (в усилке rda5807), у меня ни кнопок ни энкодера не стоит , только пульт.
вот строка из avrdude C:\Windows\System32\avrdude.exe -C C:\Windows\System32\avrdude.conf -p m16 -P usb -c usbtiny -b 20 -U eeprom:w:C:\Windows\System32\eeprom.bin:r закинул его в систем32 и пробел в eeprom убрал. ошибка та же
Так как -b - это скорость порта (типа -b 115200), а -B - уже период тактовой частоты программатора, в микросекундах.
P.S. Добавил ещё одну мелочь. Возможно, кто-то замечал у себя, что первый столбик спектроанализатора (~0..150Гц) в отсутствие сигнала не равен нулю, а имеет высоту 1-2 пиксела. Это происходит из-за того, что на вход АЦП в отсутствие сигнала должна приходить ровно половина опорного напряжения, но из-за разброса параметров резистивного делителя в операционнике это может быть немного не так. Получается своего рода постоянное смещение, которое трактуется как НЧ и отображается спектроанализатором.
Раньше поправка была фиксирована для обоих каналов и равнялась 128 (0x80) (DC_CORR в adc.h). Сейчас она вычитывается из EEPROM по адресам 0x1E и 0x1F соответственно для левого и правого каналов. Значение по умолчанию там всё так же 128 (0x80). Если наблюдаете у себя такой мелкий глюк, можете поиграться с этими значениеми в пределах 125..131 (0x7D..0x83), больше вряд ли потребуется.
Последний раз редактировалось WiseLord Пн дек 08, 2014 08:47:53, всего редактировалось 1 раз.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения