#1 2015-09-13 22:50:33

Oodin
Учасник
Зареєстрований: 2015-02-12
Повідомлень: 8

КАК ЗАПИСЫВАТЬ в EEPROM значения больше 255

При написании скетча столкнулся с проблемой записи в EEPROM чисел  значением более 255. Как это делать???? Мне нужно запоминать...в одном случае до 3500, в другом случае 500000

Неактивний

#2 2015-09-13 23:03:44

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: КАК ЗАПИСЫВАТЬ в EEPROM значения больше 255

Неактивний

#3 2015-09-16 12:03:44

Oodin
Учасник
Зареєстрований: 2015-02-12
Повідомлень: 8

Re: КАК ЗАПИСЫВАТЬ в EEPROM значения больше 255

Создал отдельную папку в библиотеке EEPROM с расширением" h" а как дошло дело до применения, тут и начались проблемы. Чувствую без помощи не обойдусь.
void setDavl1() {// установка заданных параметров первого компрессора

            
              unsigned long DavlNastr = 1;
              lcd.clear();
              while (Knopki() != 1) { // крутим   цикл
                  byte KEY = Knopki(); // читаем состояние кнопок
                  delay(200);
                  lcd.setCursor(0, 0);
                  lcd.print("P Nactr=       ");
                  lcd.setCursor(8, 0);
                                    if( DavlNastr<1){lcd.setCursor(15,0); lcd.print(" ");}                           // выводим, запоминаем инфу            
                  lcd.print(DavlNastr);
                  lcd.print("Pa");
                                         lcd.blink();
                  lcd.setCursor(0, 1);
                  lcd.print("P Ustan=       ");
                  lcd.setCursor(8, 1);
                  lcd.print(Davlenie1);
                  lcd.print("Pa");
                
                  // устанавливаем курсор согласно позиции

                  if ( KEY == 3) DavlNastr++; // крутим значения
                  else if ( KEY == 4) DavlNastr--;
              }// конец цикла
               EEPROM_writeAnything(0, DavlNastr);// это  непонятка с которой нужно разобраться
              delay(500);
              lcd.noBlink();
              lcd.clear();
              lcd.print("     Saved");
          }
Это кусочек, результатом записи которого и должно быть 7 значное число и читаться оно должно в любом месте программы, которая значительно превышает эту одну из функций настройки

Неактивний

#4 2015-09-19 09:18:07

Oodin
Учасник
Зареєстрований: 2015-02-12
Повідомлень: 8

Re: КАК ЗАПИСЫВАТЬ в EEPROM значения больше 255

void EEPROMWriteInt(int p_address, unsigned long p_value)
        {
        byte four = ((p_value >> 0) & 0xFF);
        byte three = ((p_value >> 8) & 0xFF);
        byte two = ((p_value >> 16) & 0xFF);
         byte one = ((p_value >> 24) & 0xFF);
        EEPROM.write(p_address, four);
        EEPROM.write(p_address + 1, three);
        EEPROM.write(p_address + 2, two);
        EEPROM.write(p_address + 3, one);
        }
        unsigned long EEPROMReadInt(int p_address)
        {
       unsigned   long four = EEPROM.read(p_address);
     unsigned  long three = EEPROM.read(p_address + 1);
     unsigned  long two = EEPROM.read(p_address + 2);
      unsigned long one = EEPROM.read(p_address + 3);

  return ((four << 0) & 0xFF) + ((three << 8) & 0xFFFF) + ((two << 16) & 0xFFFFFF) + ((one << 24) & 0xFFFFFFFF);

        }
Сам себе помогаю. Вот функции записи в память лонгов и т.д.   работает безотказно, а та хрень по ссылке замысловата и не рабочая 

Вставляем в скетч и пишим четырех байтные значения

Неактивний

#5 2015-09-21 08:53:20

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: КАК ЗАПИСЫВАТЬ в EEPROM значения больше 255

поздравлю, первый этап вы прошли.     )

второй указатели на структуры
eeprom_read_block((void*)&settings, (void*)0, sizeof(settings));
тогда это вам   потребуется )

Неактивний

#6 2015-11-15 00:32:52

b121708
Учасник
Зареєстрований: 2015-11-14
Повідомлень: 0

Re: КАК ЗАПИСЫВАТЬ в EEPROM значения больше 255

Здравствуйте.Ищу примеры (для обучения и реализации в МЕГЕ2560) использования ввода констант в ОЗУ и ЕЕПРОМ с клавиатуры или кнопок с контролем на 2х20 лсд.Наткнулся на ваш пост(то что надо.)В ЕЕПРОМ изредка надо вводить размер поправки .А в ОЗУ -рабочий размер.В программе они суммироваться должны и при перемещении энкодер считает эту сумму и при отработке размера прекращается перемещение.Не пойму-как при наборе размера записать его в ОЗУ ?Может скините свой скетч для обучения ?Спасибо.

Неактивний

#7 2015-12-28 23:25:42

alex_dol
Учасник
Зареєстрований: 2015-12-28
Повідомлень: 196

Re: КАК ЗАПИСЫВАТЬ в EEPROM значения больше 255

Если еще актуально.
Все делается намного проще:
EEPROM.put( eeAddress, customVar )
EEPROM.get( eeAddress, customVar )

customVar - любой объект, лишь бы влез в EEPROM.

Неактивний

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

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

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