• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zapis do pamięci EEPROM
#1
Mam wielką prośbę, otóż jeśli chodzi o zapis do pamięci Eeprom. Wszędzie są przykłady jak zapisać do tej pamięci ale w przykładach jest używana mała liczba 8 bitowa jak to próbuję zrobić to chodzi jak trzeba , tylko nie mogę znaleźć jak zapisać dużą liczbę np. 1023. pomożecie mi to zrobić. Prosiłbym o jakiś przykład i wytłumaczenie jak do pamięci Eeprom zapisać większą liczbę. Dziękuję
 
Odpowiedź
#2
Leży u mnie i się kurzy nie mam kiedy się za niego zabrać... więc w teorii:
Rozbij tą liczbę na dalsze komórki... nie wiem np Rozbij na cyferki gdzie 1 cyferka to 1 kanał?

Poczytaj sobie:

http://playground.arduino.cc/Code/EEPROMWriteAnything

I to

http://playground.arduino.cc/Code/EEPROMReadWriteLong


Pozdrawiam

Wysłane z mojego SM-G925F przy użyciu Tapatalka
Pomogłem? Dodaj punkt reputacji Smile
 
Odpowiedź
#3
Tu masz na przykładzie z mojego kodu liczby większe od 255 musisz zapisać jako 2 bajty

zapis

EEPROM.write(2, lowByte(RSSI_MAX_A) );
EEPROM.write(3, highByte(RSSI_MAX_A) );

odczyt

RSSI_MAX_A = (EEPROM.read(3)<<8)+EEPROM.read(2);


Kod:
// EPROM  odczyt i zapis                    

void load_param ( void ) {

  if ( EEPROM.read(0)=='P' ) {  // sprawdzenie czy wczesniej bylo cos zapisane
      RSSI_MIN_A = EEPROM.read(1);
      RSSI_MAX_A = (EEPROM.read(3)<<8)+EEPROM.read(2);
      RSSI_MIN_B = EEPROM.read(4);
      RSSI_MAX_B = (EEPROM.read(6)<<8)+EEPROM.read(5);
      ALARM_RSSI = EEPROM.read(7);
      ALARM_BAT = EEPROM.read(8);
      BackLight_Time = EEPROM.read(9)*1000;
      Log_Time = EEPROM.read(14)*1000;
    }

}

void save_param ( void ) {

            
      EEPROM.write(0, 'P'); // nasza sygnaturka pierwszego zapisu
      EEPROM.write(1,RSSI_MIN_A);
      EEPROM.write(2, lowByte(RSSI_MAX_A) );
      EEPROM.write(3, highByte(RSSI_MAX_A) );  
      EEPROM.write(4,RSSI_MIN_B);
      EEPROM.write(6, highByte(RSSI_MAX_B) );  
      EEPROM.write(5, lowByte(RSSI_MAX_B) );
      EEPROM.write(7,ALARM_RSSI);
      EEPROM.write(8,ALARM_BAT);
      EEPROM.write(9,(BackLight_Time/1000));
      EEPROM.write(14,(Log_Time/1000));
      
  
}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#4
Właśnie wpadłem gdzieś na ten twój kodzik w sieci , chyba na elektrodzie i już testuję Tongue
Nie do końca kumam jeszcze ale powoli zaczyna do mnie docierać Smile

Szybko dodałem kilka linijek i widzę, że działa i rozumiem już jak to wygląda.
To w zasadzie kończy temat Tongue
Dziękuję
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości