там все уже есть сами посмотрите в файле fm_micro.c
Код:
case 0: if (nokey < 100) nokey++; if (nokey == 100) { save_volume(volume); save_chanel(channel); }
есть только один момент, запись произойдет не сразу а через нескольких сек после последнего переключения если не нажимать больше кнопок можно конечно и сразу записывать, но в ЕЕПРОМ будет часто происходить запись, а у этого параметра есть ограничение на кол-во этих записей
Заголовок сообщения: Re: Простой FM приемник с часами и будильником
Добавлено: Пн авг 24, 2015 06:23:58
Грызет канифоль
Карма: 3
Рейтинг сообщений: 11
Зарегистрирован: Пн окт 31, 2011 12:35:59 Сообщений: 252 Откуда: Родился в Сибири
Рейтинг сообщения:0
Здравствуйте.
Предложу несколько вариантов: 1. Записать при программировании станцию и уровень громкости при включении и эти параметры не изменяются. 2. При включении приёмника начала работать первая по списку станция. Уровень громкости при включении прописывается один раз в ячейку. 3. Перед выключением нажать кнопку mute и тогда сохранится станция и громкость а затем выключить питание.
да сдесь масса вариантов реализации, готов сделать любой, но макета у меня нет, так что проверка за вами Cheal и Amadeus придите только к одному мнению - тот и сделаю вариант Cheal мне нравится
И всё же хотелось бы сделать нормальную работу приемника с сохранением последней выбранной станции и уровня громкости в EEProm. У меня из 10 случаев только один раз получилось так как надо, а в остальных либо начинала играть случайная станция, либо слышен шум. Пару раз и уровень громкости при включении был на максимуме. Может быть какие-то помехи по питанию влияют на процесс записи и считывания, но на плате установил достаточно фильтрующих конденсаторов (SMD 100n), включая в непосредственной близости возле ножек микроконтроллера.
dt_andrew, может быть переделаете способ записи, чтобы запись происходила не тогда, когда нет нажатия (if nokey), а когда была нажата кнопка, запускался таймер и , напр. через 20 сек происходила запись. Если нажать кнопку до истечения времени, таймер обнулялся и запускался заново.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Но можно ли как-то исключить ложное считывание или неверную запись, напр. дополнительной проверкой. А не влияет ли сам FM_CHANEL_ADDR 0x0E ? Может будет лучше работать, если поменять на 0х20 ?
Но можно ли как-то исключить ложное считывание или неверную запись, напр. дополнительной проверкой. А не влияет ли сам FM_CHANEL_ADDR 0x0E ? Может будет лучше работать, если поменять на 0х20 ?
нет не влияет, адрес 0х20 занят, там станции храняться начиная проверить конечно можно только что это даст в данном приемнике индикации нет, и сообщить об ошибке некуда, накручивать там моргание светодиодом и прочее я не буду - говорил ранее об этом так что только проверкой в железе
вот проверяйте сделал запись через 5 сек после нажатия на кнопки управления
перед прошивкой убедитесь что у вас стоит FUSE EESAVE иначе все станции которые вы прописали в ЕЕПРОМ затруться о результатах сообщите
Есть у меня внешняя EEPROM 24c02 (A21SC). Сложно ли будет добавить её в проект для того чтобы запись происходила постоянно при каждом нажатии на кнопки?
И ещё такой момент. Прописал 15 станций. В проекте MAX_CHANEL 210. После 15 и перед первой если нажимать на кнопки начинается шум, т.е. переход на 16 и 210. Можно ли в проекте, напр. сделать проверку, если след. ячейка FF, значит переходим на первую. Или проще указать MAX_CHANEL 15. Хотелось, чтобы переход был по кругу - после 15 - 1.
MAX_CHANEL 210 - это не количество станций, а максимальная частота, канала - помните формулу для расчета я давал кол-во станций это #define MAX_CHANELS 25 в файле rda5807p.h
Прошил, вот что получилось: Переключение каналов стало по кругу. Сохранение канала и уровня громкости так и не происходит, при включении начинает играть с одной и той же станции и на одном и том же уровне громкости. Пробовал считывать память в Ponyprog после того как должно происходить сохранение - данные EEPROM не изменяются, но происходит то, что при нажатии на Reset. Аналогично, если сделать сброс, начинается тоже самое,что и при включении питания, с той же станции.
Теперь происходит следующее: если переключить станции и кнопками пощелкать громкость, сохраняются и станция и громкость; если переключать только станции, а громкость не трогать - сохранения не происходят, при вкл. будет играть самая первая по списку станция с громкостью по умалчиванию.
Попробовал. Не сохраняется ничего. При вкл. сразу начинает играть первая по списку станция, уже не попадает на пустую волну (шум), а громкость стала не на минимуме, а где-то на серединке. Ещё хотелось бы попробовать вариант, когда запись происходит только при нажатии на кнопку mute, с проверкой - если записалось успешно, то выполнить mute на пару сек. и возврат, иначе mute без возврата.
хорошо, это последнее что я сделаю выложу последний исходник - дальше сами отлаживать дистационно муторно и долго - постоянно отвлекаешся на выходных наверно соберу макет, чтоб не быть голосновным и проверять буду сам
Сейчас этот форум просматривают: indman, OMZ и гости: 45
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения