Переключать режим люстры быстрым перевключением

Да, заряжать через ногу это отличная идея, тогда все под контролем. Надо только посмотреть как будет разряд идти, когда питание на процессоре упадет, добавить резистор между ногой, а может еще и диод для заряда.
Тк будет разряжаться через защитные диоды внутри процессора.

1 лайк

Что значит лишний? Как ты найдёшь последнюю запись?

еще одна нога и фрам.
все страдания сразу закончатся.

Если она единственная, то она же и последняя.

Помнится загадка. Мужик получил письмо со словами “нога не та” и застрелился.)

Её нет на готовых ардуино-платах.

а конденсаторы с диодами и резисторами есть))

Почему единственная? Ты пишешь в ЕЕПРОМ побитно. При включении/загрузке считаешь к-во записанных бит. ФФ является признаком конца записи.

Побитно я не умею писать. И бит FF формировать - тоже ))

Есть еепром. Самое простое. Выше считали, что ячейки на сто лет хватит. )

Пчему это? Новые чипы (относительно) позволяют писать без стирания.
Я уже, конечно, всё запамятовал.( Но можно посмотреть исходники.


uint8_t i8;                             //индекс 8-битного массива

// Получим указатель на свободную область
// на выходе: последний записанный байт
uint8_t init_ee_array8(uint8_t *array, uint8_t array_max)
{
  uint8_t i;
  for (i = 0; i < array_max; i++)
    if (eeprom_read_byte(&array[i]) == 0xff)
      break;
  i < array_max ? i8 = i : i8 = 0;
  return eeprom_read_byte(&array[i8 ? i8 - 1 : array_max - 1]);
}


// Запишем данные по указателю с последующим его увеличением
void write_ee_array8(uint8_t *array, uint8_t array_max, uint8_t data)
{
  uint8_t i = i8;
  if (++i8 >= array_max)
    i8 = 0;
  eeprom_erase_only(&array[i8]);        //0xff - признак последней записи
  eeprom_write_only(&array[i], data);
}


Что-то я побитной записи не наблюдаю.

Ну, побитно то и не запишешь. Нужно байт считать добавить НУЛЕВОЙ бит и записать. Или нет?

Так можно побитно писать или нет? ))

Если устраивать качели с чтением/установкой/записью, то это какая-то китайская экономия выходит…

Григорий, ты прикалываешься? Ну посмотри даташит на мегу88 и выше. Они позволяют писать без стирания, в отличие от мега8.
Китайская экономия позволяет увеличить ресурс записи-стирания.

Именно побитно?
Меня конкретно этот вариант заинтересовал.

Ну конечно. Изначально там FF. Ну и нулевые биты ты дописываешь.

Не поленился, посмотрел. Битами не пахнет:

7.4 EEPROM Data Memory The Atmel® ATmega328P contains 1Kbyte of data EEPROM memory. It is organized as a separate data space, in which single bytes can be read and written.

Биты, байты… Разница всего в двух буквах.

Что не пахнет?!

Table 7-1. EEPROM Mode Bits
EEPM1 EEPM0 Programming Time Operation
0 0 3.4 ms Erase and Write in one operation (Atomic Operation)
0 1 1.8 ms Erase Only
1 0 1.8 ms Write Only
1 1 – Reserved for future use