#1 2022-12-24 20:56:31

lukach
Учасник
Зареєстрований: 2022-12-24
Повідомлень: 1

EEPROM не працює

я використовую esp8266(esp01).
По невідомим причинам EEPROM не записується,
або записується але не читається.
допоможіть мені будь ласка.

#include <EEPROM.h>

void ICACHE_RAM_ATTR myisr();

byte val = 0;

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(0, INPUT_PULLUP);
  digitalWrite(LED_BUILTIN, 0);
  delay(700);
  digitalWrite(LED_BUILTIN, 1);
  attachInterrupt ( digitalPinToInterrupt(0), myisr, RISING);
  EEPROM.begin(512);
}
void loop() {
  switch (val) {
    case 0:
      digitalWrite(LED_BUILTIN, 1);
      delay(90);
      digitalWrite(LED_BUILTIN, 0);
      delay(10);
      break;
    case 1:
      digitalWrite(LED_BUILTIN, 1);
      delay(80);
      digitalWrite(LED_BUILTIN, 0);
      delay(20);
      break;
    case 2:
      digitalWrite(LED_BUILTIN, 1);
      delay(70);
      digitalWrite(LED_BUILTIN, 0);
      delay(30);
      break;
    case 3:
      digitalWrite(LED_BUILTIN, 1);
      delay(60);
      digitalWrite(LED_BUILTIN, 0);
      delay(40);
      break;
    case 4:
      digitalWrite(LED_BUILTIN, 1);
      delay(50);
      digitalWrite(LED_BUILTIN, 0);
      delay(50);
      break;
    case 5:
      digitalWrite(LED_BUILTIN, 1);
      delay(40);
      digitalWrite(LED_BUILTIN, 0);
      delay(60);
      break;
    case 6:
      digitalWrite(LED_BUILTIN, 1);
      delay(30);
      digitalWrite(LED_BUILTIN, 0);
      delay(70);
      break;
    case 7:
      digitalWrite(LED_BUILTIN, 1);
      delay(20);
      digitalWrite(LED_BUILTIN, 0);
      delay(80);
      break;
    case 8:
      digitalWrite(LED_BUILTIN, 1);
      delay(10);
      digitalWrite(LED_BUILTIN, 0);
      delay(90);
      break;
  }
  val = EEPROM.read(2);
}
void myisr() {
  val++;
  if (val > 8) {
    val = 0;
  }
  EEPROM.put(2, val);
  EEPROM.commit();
}

Неактивний

#2 2023-01-04 22:48:18

mikroOm
Гість

Re: EEPROM не працює

val = EEPROM.read(2); - в основном цикле... он может и рад записать, но долбит ячейки! К тому-же чтение  и запись процесс не быстрый - попробуй притормози основной цикл, а вообще читай и пиши только когда действительно нужно. убьешь память.

#3 2023-01-05 12:02:31

Roman1984
Учасник
Зареєстрований: 2017-02-17
Повідомлень: 85

Re: EEPROM не працює

Зачем строка val = EEPROM.read(2); в основном цикле. Перенесите её для начала в конец функции setup() {}

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму