Attiny85 и EEPROM

Dancespeed

✩✩✩✩✩✩✩
3 Авг 2020
5
0
Уважаемые профессионалы, я новичок в программировании МК, поэтому попрошу отнестись с пониманием.
Есть Digispark, тиньку выпял и поставил на переходник, чтобы можно было ставить на макетку без навесных элементов родной платы.
ТЗ такое:
Есть дистанционный пульт от устройства управления звуком выхлопа автомобиля, есть кнопка под штатную - однопозиционная, без фиксации, с индикацией состояния устройства (включено или выключено).
Пульт разобран, к кнопкам подпаяны провода, управление по низкому сигналу. Питание брелока завязано с общим питанием тиньки - 3.3В.
Устройство управления звуком выхлопа, после выключения и подачи питания остаётся в последнем положении. Для определения статуса я использовал импульсное реле РПС-20, но плата получалась довольно-таки громоздкой. Сейчас пересмотрел вариант исполнения и остановился на EEPROM для сохранения последнего положения устройства выхлопа.
Скетч написал, на МЕГЕ он работает, но на Digispark'е отказывается. Скетч был написан для платы с использованием реле РПС-20, теперь хочу использовать EEPROM.
НЕ могу взять в толк одно: как прописать первоначальное состояние ячейки памяти при первом включении, ведь предыдущего состояния еще не было. Ну а если в setup прописать значение "1" или "0", то при последующем включении (подачи питания на плату), код снова присвоит прописанное в setup значение. Помогите, пожалуйста, разобраться.
 

Вложения

Dancespeed

✩✩✩✩✩✩✩
3 Авг 2020
5
0
У Гайвера есть урок на эту тему.
Где описывается библиотека EEPROM.
Я прочитал его, но как задать первоначальное состояние ячейки?
Там примеры с готовыми данными - записываешь данные и работаешь с ними
В сетапе прописать присваивание первоначального значения для ячейки епрома не могу, потому что при каждой подаче питания код будет заново его переписывать.
 
Изменено:

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,280
945
58
Марий-Эл
Спасибо, добрый человек
Вот здесь Вы ошибаетесь.
Я не очень добрый.
И есть ещё и другие решения.
Они у меня в голове. Но на бумагу никак не ложатся. Т.К. умею разговаривать только матом. :cool:
 
  • Лойс +1
Реакции: Mix_man и Dancespeed

Dancespeed

✩✩✩✩✩✩✩
3 Авг 2020
5
0
И есть ещё и другие решения.
Все мы разные. Вы же ответили))
К тому же мне лучше самому понять эти другие решения, так легче запоминается. Когда совсем что-то непонятно, тогда и можно обратиться за помощью к другим людям, более компетентным.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,192
1,281
Москва
ПрЫнцЫп оч. простой:
1) Определяешь любое место в памяти EEPROM и фиксируешь его
2) При включении читаешь что там, если то, что записывал ты , назовем это ЗНАЧЕНИЕ, то включение не первое тогда идешь к п. 5
3) Первое включение. Пишешь в фиксированное место ЗНАЧЕНИЕ.
4) Пишешь начальное значение переменной, которую надо хранить в МЕСТО ПЕРЕМЕННОЙ.
5) Считываешь их МЕСТА ПЕРЕМЕННОЙ сохраненное значение.

и где то в коде уже просто пишешь нужное значение в МЕСТО ПЕРЕМЕННОЙ.
 
  • Лойс +1
Реакции: Dancespeed

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,280
945
58
Марий-Эл
И вообще - Атмел тупиковая ветвь.
Я не понимаю, зачем их MicroChip купила.
Нормальной среды разработки нет.
Хотя теперь MpLabX их поддерживает.
Лучшей среды разработки я не видел.
Только компиляторы C и C++ для PIC платные.
А MpLab учитывает все нюансы конкретного чипа.
Забыл проинициализировать какой то регистр, он при отладке учтёт это. И у тебя ничего не будет работать даже под отладчиком, пока правильно не проинициализируешь. Другие IDE такого не могут.
Плюс к этому, если есть EEPROM, прямо из проги можно записать параметры по умолчанию, а не заниматься извращениями.
У STM у многих нет EEPROM, она им попросту не нужна.
 

Dancespeed

✩✩✩✩✩✩✩
3 Авг 2020
5
0
ПрЫнцЫп оч. простой:
1) Определяешь любое место в памяти EEPROM и фиксируешь его
2) При включении читаешь что там, если то, что записывал ты , назовем это ЗНАЧЕНИЕ, то включение не первое тогда идешь к п. 5
3) Первое включение. Пишешь в фиксированное место ЗНАЧЕНИЕ.
4) Пишешь начальное значение переменной, которую надо хранить в МЕСТО ПЕРЕМЕННОЙ.
5) Считываешь их МЕСТА ПЕРЕМЕННОЙ сохраненное значение.

и где то в коде уже просто пишешь нужное значение в МЕСТО ПЕРЕМЕННОЙ.
Никак не могу взять в толк, как скачать эти библиотеки, в частности EEPROM.h. Ссылка со списком библиотек с урока приводит на сайт с библиотеками, но скачать на странице нет возможности.