• 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
Pamięć FRAM 64Kb Adafruit
#1
Witaj. Na początku się przywitam, bo jestem nowy na forum i świeży przy Arduino. 
Mam nadzieję że wątek nie narusza regulaminu i że dobry dział wybrałem. Otóż potrzebuję pomocy bo mam kłopot z pamięcią FRAM 64Kb od Adafruit, nie wiem jak stworzyć kod. Trochę przeszperałem w internecie ale nic nie znalazłem. Chodzi o to że potrzebuję kilka zmiennych z liczbami zapisać właśnie w tej pamięci, by móc je odczytywać kiedy trzeba będzie, zmienne to liczby całkowite do 100tyś, np.:
zmienna1 = 25000
zmienna2 = 35000 itp.
Działał ktoś z czymś takim? Prosiłbym o pomoc w zrozumieniu.
Pozdrawiam
 
Odpowiedź
#2
Nie bawiłem się tym, ale to arduino, procedura jest taka sama. Sprawdzasz czy masz FRAM na I2C czy SPI, instalujesz bibliotekę, Adafruit skoro sprzedaje to oczywiście dała do pobrania dla obu rodzajów, po instalacji jest w każdej przykład. Jeśli przykład nie wyczerpuje odpowiedzi to otwierasz najpierw keywords.txt potem pliki *.h, a na końcu analizujesz *.cpp. Jak na teraz wygląda Twój kod?
 
Odpowiedź
#3
Tu masz biblioteki i przykłady.
https://github.com/adafruit/Adafruit_FRA...master.zip
Obecnie działem na starych dobrych HY5118160 i myślę, że nie ma sensu bawić się w FRAM, skoro za darmo można nabyć te DRAM'y o większej pojemności.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
Odpowiedź
#4
Fram to takie EEPROM raczej, po I2C szybkość nieco większa niż EEPROM, po SPI jeszcze większa i nie mają limitu 100 tys. zapisu.
 
Odpowiedź
#5
Dzięki za zainteresowanie tematem. Kość jest podpięta pod SPI, biblioteka została wgrana tak jak i przykład, z tym że przykładu nie rozumię. Kodu nie mam jeszcze, bazowałem na przykładzie i chciałem go przerobić pod siebie, a potem dopiero wykorzystać w dalszym projekcie.
 
Odpowiedź
#6
Cokolwiek ktoś tu napisze, to będzie bardziej skomplikowane niż użycie funkcji z przykładu do zapisania/odczytu 1 bajtu. Liczba 100000 mieści się np. w liczbie 32 bitowej, 4 bajtach, trzeba po prostu liczbę 4-bajtową zapisać w rozbiciu na 4 bajty w kolejnych komórkach, tak samo odczytać - cztery bajty doklejasz razem z powrotem w liczbę 32 bitową. Jak zapisać/odczytać bajt jest w przykładzie. Czego nie rozumiesz z przykładu?
 
Odpowiedź
#7
Masz na myśli te przykłady co są w linku powyżej do pobrania?
 
Odpowiedź
#8
Obojętne, jak masz jakieś inne to wklejaj inne i pytaj o to czego nie rozumiesz. Na razie nie wiem o co pytasz, może ktoś tu będzie wiedział i Ci odpowie.
 
Odpowiedź
#9
Jeśli dobrze rozumię, to jeśli chcę zapisać liczbę 1 bajtową, to po prostu ją zapisuję i mogę swobodnie ją odczytać, a jeśli natomiast mam liczbę większą np. dwu bajtową to muszę ją podzielić i zapisać w dwóch komórkach, a potem scalić razem by odczytać ją taką jaką zapisałem. Dobrze myślę?
 
Odpowiedź
#10
Tak, a do zapisania/odczytania bajtu masz już funkcję w przykładzie z biblioteki. Żeby odczytać musisz znać adres komórki pamięci gdzie zapisałeś. Najwygodniej napisać sobie funkcję (lub znaleźć gotowca w internecie) zapisującą od razu całość. Nawet tu masz przykłady w temacie EEPROM zapisu float, float to też 4bajtowa liczba w Arduino. Generalnie do wykorzystania jest zabawa z przesunięciami bitowymi, unia, tablice i wskaźniki, struktury, obiekty. W każdej ostatecznie wykorzystasz gotową funkcję odczytującą/zapisującą ten jeden bajt w taki sam sposób jak w przykładzie.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości