kt840, спасибо. Но то ли прошивка не та, то ли я криворукий(( что в железе, что в протеусе не работает. Заливал ampcontrol_m16_tda7439_ks0066_notuner и en eeprom.
WiseLord, извиняюсь, не заметил сразу ваш проект в протеусе. eeprom подгружен(возможно в архиве немного не тот, называется eeprom_en ). Такое ощущение будто в eeprom en забита кириллица.
Может и так. Выгрузите старый eeprom (Debug - Reset Persistent model data), после этого при старте подгрузится указанный в свойствах МК.
А вообще сейчас поигрался с ATmega16 в эмуляторе - не хочет нормально моделироваться. Как только выходишь на экран спектроанализатора, моделирование падает с ошибкой.
При этом в железе всё ОК с той же прошивкой.
Очередные глюки Proteus.
Последние правки кода в ветке для ATmega16 были больше полугода назад, да и те косметические. Лучше впаяйте ATmega32 вместо неё - там всё оттестировано и нормально и работает, и моделируется.
А устаревший код ворошить нет никакого желания. Хотя, повторюсь, только что в железе проверил (есть у меня на ATmega16 платка с KS0108B дисплеем) - всё работает.
Огромное вам спасибо за оперативную помощь! Reset Persistent model data помогло, в протеусе все отлично моделируется. В железе тупо забыл прошить фьюзы . Меги 32 под рукой нет. Собираю из того что есть под рукой, может потом и поменяю.
Всё-таки не выдержал, попытался добиться моделирования проекта на ATmega16 в Proteus.
Обновление прошивок для варианта на ATmega16 (и года не прошло):
- Частичная синхронизация кода с основной веткой на ATmega32
Никаких новых возможностей это не привносит (кроме возможности подстройки "нуля" спектроанализатора через файл EEPROM отдельно для обоих каналов (так что важно не забыть залить новый EEPROM).
- Убрана поддержка ST7920 на ATmega16.
Ввиду "горизонтальных" байтов на нём и "вертикальных" в шрифте имеющаяся реализация была достаточно кривая, медленная и ресурсоёмкая, поэтому лучше с этим дисплеем ATmega32 использовать - кадровому буферу на это наплевать.
В железе работа проверена на KS0108 без тюнеров/аудиопроцессоров, но их код не затрагивался, так что сломаться теоретически ничего не должно было. Плюс в архиве проекты для Proteus для KS0108/KS0066/PCF8574, на которых всё вроде бы тоже работает.
Если кто-то до сих пор не перешёл на ATmega16, может зашить для проверки и отписаться, сломалось ли что-либо или нет.
Заголовок сообщения: Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Добавлено: Вс окт 25, 2015 21:05:25
Открыл глаза
Зарегистрирован: Пн май 04, 2015 12:30:18 Сообщений: 68
Рейтинг сообщения:0
Ну все, кажется со всем разобрался. Остались некоторые уточнения: что бы узнать какие фьюзы выставлять, достаточно в fusecalc (ссылку на который Вы давали) выбрать свою микросхему и внизу (в "Current settings") прописать значения из makefile (0x3F и 0xC1) и он покажет какие фьюзы надо устанавливать.
Я проверил . Ведет себя (у меня во всяком разе ) одинаково , одинаково косячно , что на старой , что на новой , причем собрано два варианта : на 8 и 16 Меге . У меня не работает :
при отключении питания , именно отключении ,а не спячки сбрасывает настройки по дефолту , так и должно быть ? При попытки настроить частоту энкодером выбрасывает в меню громкости , через время возвращается в настройку частоты . Кнопками частота регулируется , но не запоминается . все остальное работает , приемник часы , предусилитель , спектроанализатор . Буду рад любой помощи . Это одинаково и на 8 и на 16 .запоминание аудионастроек происходит только если перед выключением питания сначала выходишь в спячку , а потом уже питание . А с запоминанием станций ни фига не выходит !
С запоминанием станций разобрался , остался вопрос по запоминанию настроек в обход спячки и регулировка частоты энкодером .
Настройки (текущая частота, настройки звука, текущий вход и прочее подобное) сохраняются в EEPROM только при входе в ждущий режим. На ATmega16 настройка станций осуществляется кнопками 3..4 (короткое нажатие - шаг 100кГц, длинное - прыжки по сохранённым станциям), запоминание/стирание - длинным нажатием кнопки 5. Энкодер в процессе не участвует.
А возможно подправить прошивку так , чтобы все изменения в настройка Автоматически сохранялись в eeprom , просто по другому очень неудобно , надо делать лишние движения , во всех других проектах (я их много пробовал) автозапоминание вроде как даже не оговаривается , а само сабой подразумевается ?
Еще заметил : приемник после подачи питания (даже если выход был через спячку) начинает работать только когда или переключишь станцию или изменишь частоту хотя б одним нажатием , у всех так ? и как исправить ?
Подправить-то можно, но смысла в этом никакого нет: - все изменения и так сохраняются при переходе в ждущий режим. - в выключении питания полностью из рабочего режима, минуя ждущий, нет никакого смысла. И вообще нет никакого смысла обесточивать контроллер, остальную же часть схемы - всегда пожалуйста (через реле по сигналу STBY). По поводу других проектов не знаю, но вся современная электронная аппаратура (те же телевизоры или муз. центры), как правило, точно так же имеет лишь кнопку выхода в ждущий режим и не рассчитана на выдёргивание вилки из розетки. - у eeprom ограничено количество циклов записи, поэтому по каждому чиху туда писать нет никакого смысла - может быстро износиться и МК выйдет из строя.
По приёмнику: на ATmega32, если выключать через ждущий режим, не обесточивая сам контроллер, глюка не наблюдается.
Да я в общем то не против перехода через спячку , но в том же телевизоре после отрубании сети (авария на нинии , например ) я еговключу с последними настройками , какие были перед отрубоном . В бытовой аппаратуре настройки пишутся автоматом и режим СТ - Бай там только для того чтобы задействовать пульт управления . Он основной в управлении . . На Меге 32 пока попробовать не могу , но на 16 после подачи питания все молчит , ощущение такое что предварительный в спячке , и вывести его можно только означенными действиями ! Как то поправить можно ? 100% это програмная беда .
Просто не понимаю , ну что за беда : подал питание - включилось все как было до выключения ! Удобно же !
- у eeprom ограничено количество циклов записи, поэтому по каждому чиху туда писать нет никакого смысла - может быстро износиться и МК выйдет из строя.
Да скорее мы помрем , чем сотню тычяч циклов закончатся !
И часто Вы выключаете телевизор/микроволновку/музыкальный центр во время работы, выдёргивая вилку из розетки, без пульта? Очень сомневаюсь. Тем более, что в телевизорах, возможно, используется более живучая память для хранения настроек.
Так и здесь. Есть кнопка Standby (кнопка 1), без фиксации, которая через реле подаёт питание на усилитель/тюнер/всё прочее, либо при повторном нажатии снимает с них питание. Сам же МК должен быть запитан всегда, by design.
Кстати, раньше, в первых версиях кода, было именно так - после каждой регулировки любого параметра шла запись в EEPROM. И потом это поведение было исправлено на более текущее, более правильное.
Легко посчитать, что за 5 лет ежедневной работы выходит 100000 / 5 / 365 = 55. То есть всего лишь 55 регулировок чего-нибудь (громкости, смены входа, да мало ли чего ещё) в день - и всё, через 5 лет МК может улететь в мусорку.
Цитата:
Да скорее мы помрем , чем сотню тычяч циклов закончатся !
А я ещё молодой, мне бы больше 5 лет пожить, знаете ли.
Если Вы хотите вырубать всё рубильником или просто выдёргиванием шнура из розетки, игнорируя специальную кнопку для этого - берёте исходники и добавляете эти пару строк. Я же принципиально неправильное поведение возвращать в проект не буду, тем более в замороженные и неинтересные мне ветки кода для ATmega8/16.
Заголовок сообщения: Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Добавлено: Ср окт 28, 2015 16:34:07
Открыл глаза
Зарегистрирован: Пн май 04, 2015 12:30:18 Сообщений: 68
Рейтинг сообщения:0
WiseLord писал(а):
Легко посчитать, что за 5 лет ежедневной работы выходит 100000 / 5 / 365 = 55. То есть всего лишь 55 регулировок чего-нибудь (громкости, смены входа, да мало ли чего ещё) в день - и всё, через 5 лет МК может улететь в мусорку.
Цитата:
Да скорее мы помрем , чем сотню тычяч циклов закончатся !
А я ещё молодой, мне бы больше 5 лет пожить, знаете ли.
Немного не соглашусь. Все приведенные данные порой сильно занижены производителем. Мне вспоминаются телефоны с АОН, где однажды заменили ру10(ру8) на 24с16. Согласно даташита, время работы этой памяти не должно было превысить 1 года. А по факту, из проданных нескольких сотен, в ремонт (именно с дефектом памяти) пришло около 3шт спустя более 2х лет эксплуатации, и ни одного в течении гарантийного срока.
Еще заметил : приемник после подачи питания (даже если выход был через спячку) начинает работать только когда или переключишь станцию или изменишь частоту хотя б одним нажатием , у всех так ?
У меня такая же фигня наблюдалась, но бороться не стал, - просто перешел на ATMega32
Не умоляя достоинства проекта , наоборот думаю что он лучший в своем роде (поддержка нечкольких типов дисплеев , ФМ модулей , аудиопроцессоров и т.д) плохо что автор не понимает очевидного : все должно быть направлено на удобсто пользования , и мне например легче через пять лет сменить проц (хотя твердо уверен что он меня переживет) чем заморачиваться и щелкать кнопками ... Никому в голову ведь не приходит беречь скажем карту памяти (а ведь по дороже будет и ресурс много меньше) , не дай бог лишний файлик записать ... А если люди не предполагают как я , например , использовать пульт ? И не хочу держать устройство включенным ? Почему бы автору не дать людям право выбора ? Я хороший инженер - электроник , но с сожалению как программист - ноль , иначе бы не обратился с такой просьбой . С уверенностью могу сказать , что автор заблуждается с режимом ST-BY , он нужен исключительно для работы пульта управления . И в бытовой аппаратуре используется память ширпотребовская , не обладающая какими - то особыми качествами . Andy_sv А на 32 Меге по - другому ? На ней еще не успел попробовать .
все должно быть направлено на удобсто пользования , и мне например легче через пять лет сменить проц (хотя твердо уверен что он меня переживет) чем заморачиваться и щелкать кнопками ...
Нажать нефиксируемую кнопку на панели или на пульте удобнее и легче, чем щёлкать сетевой тумблер.
kt840 писал(а):
А если люди не предполагают как я , например, использовать пульт ? И не хочу держать устройство включенным ?
Никто и не заставляет. Лишь обеспечьте 5 вольт дежурного питания процессору, а остальное отключайте через реле. У меня именно так в обоих усилителях сделано, и всё работает прекрасно. Бонусом - время на дисплее при минимальной яркости, как и задумано изначально.
Я хороший инженер - электроник , но с сожалению как программист - ноль
Не нужно быть семи пядей во лбу, чтобы понять, что за сохранение параметров в EEPROM отвечает эта функция, и что вызывается она при нажатии кнопок BTN1 или RC5_STBY в любом режиме, кроме MODE_STANDBY сразу же после функции powerOff. И всё что надо - это лишь добавить вызов этот функции в это место, которое отвечает действие при возвращении на дефолтный экран. То есть, после любой регулировки через пару секунд экран возвращается в исходное состояние, и сюда именно можно прописать сохранение параметров в EEPROM. Тем более, что комментарий в коде выше "and save params to EEPROM" остался ещё с тех времён, когда это так и происходило.
Ничего сложного здесь нет и не нужно быть программистом чтобы, пробежавшись глазами по основному файлу main.c (я не заставляю даже лезть глубоко внутрь кода), понять что вообще там происходит. Ваша проблема в том, что Вы даже и не пытались этого сделать, хотя у хорошего инженера вообще-то должно быть желание понимать любой процесс возможно глубже.
Как собрать проект под Windows (сам я пользуюсь Linux, но ради такого дела держу виртуалку с виндой) я не раз на форуме рассказывал, и даже видео снимал. Кто хотел (и даже не "тыжепрограммисты"), давно научился это делать и какие-то мелкие правки для себя вполне способен делать, в советах я никому не отказывал.
kt840 писал(а):
А на 32 Меге по - другому?
Вот полный набор прошивок для ATmega16 и для ATmega32.
Чувствуете разницу? Лично у меня нет никакого желания поддерживать весь этот ворох прошивок на ATmega16 (которая уже забита под завязку), тогда как прошивки для ATmega32 отличаются только своей привязкой к конкретному дисплею. Да и это, в принципе, можно было бы через EEPROM разрулить, было бы желание, и иметь в результате одну прошивку под весь набор железа.
Разницу чувствую . И для полного счастья собрал и на Меге 32 . Да , знаете ли в программировании я темнота , и если честно мне интереснее железо .Но по моему мнению программирование не должно иддти в ущерб логики . Например : выбор станций , запоминание невозможно , если частота больше следующей . Возможно это задумывалось как фишка , но 10 человек из 10 Вам скажут что им удобнее настраивать любую программу на любую частоту , чтобы иметь в самом начале и рядышком самые любимый . То на что Вы указали - это не выбор , а поддержка используемых составных частей .
Заголовок сообщения: Re: Темброблок/спектранализатор на ATmega16, TDA7439 и SG128
Добавлено: Чт окт 29, 2015 07:45:28
Открыл глаза
Зарегистрирован: Пн май 04, 2015 12:30:18 Сообщений: 68
Рейтинг сообщения:0
kt840 писал(а):
А если люди не предполагают как я , например , использовать пульт ? И не хочу держать устройство включенным ? Почему бы автору не дать людям право выбора ? Я хороший инженер - электроник , но с сожалению как программист - ноль , иначе бы не обратился с такой просьбой .
Как инженер электронщик - инженеру электронщику, могу посоветовать следующий, не программный метод: по 5 вольтам, питающим процессор поставить емкость побольше или еще лучше батарейку или аккумулятор с подзарядкой, компаратор, который при неком падении сетевого напряжения выдает сигнал ST-BY. Далее, думаю понятно?
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения