logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATMega8][C]pamięć EEPROM/SRAM

gVVint 01 Lis 2008 13:36 2532 4
REKLAMA
  • #1 5689862
    gVVint
    Poziom 10  
    Witam,

    mam do rozwiązania problem zapisu do pamięci pewnych danych a później wysłanie ich do innego urządzenia więc kilka pytań:
    1. którą pamięć wykorzystać? wiem że EEPROM jest typem pamięci nieulotnej i w czasie idle (sleep) dane nadal są przechowywane ale wadą jest ograniczona żywotność. SRAM z tego co udało mi się przetłumaczyć nadaje się bardziej do przechowywania danych które szybko ulegają zmianie - tzn w moim przypadku wygląda to tak że pobieram dane sobei z 1Wire, zapisuje do pamięci (problem której), zwiększam adres o 1 (dane są 8 bitowe), po zapisaniu 10 danych zaczynam odczytywanie zgodnie z zasadami FIFO i wysyłam do urządzenia - to jest tylko algorytm więc nie mogę podać teraz dokladnego kodu.
    2. przy adresowaniu SRAM musze korzystac z adresowania pośredniego z inkrementacją i rejestrami X Y Z? czy mogę inkrementację załatwić za pomocą np pętli for a adres początkowy zdefiniować raz i za każdym wejściem do pętli będzie on przyjmować tę wartość?

    Dzięki za odpowiedzi :)
  • REKLAMA
  • REKLAMA
  • #3 5690057
    gVVint
    Poziom 10  
    Witam,

    chodzi mi o to że po pobraniu każdej danej ustawiałbym sobie uC w tryb idle/sleep (nie wiem jeszcze) a gdy w pamięci będę miał już wymagane 10 danych to budziłbym sobie ponownie układzik i wysyłał wszystko - dlatego nie wiem czy SRAM jest w jakiś sposób zachowany w tych trybach.
    Dodatkowo chciałem się dowiedzieć czy poprawnie umieszczam te dane tzn czy mam to umieszczać w SRAM czy w czymś innym (nawet kosztem usypiania układu) Dane same w sobie nie będą zmieniane tylko co 5 sek będzie pobierana nowa dana tak więc po 10 cyklach zaczynam od nowa nadpisując stare dane bo zapis będzie na tej samej przestrzeni adresowej.

    Pozdrawiam
  • REKLAMA
  • #4 5690131
    johny_w
    Poziom 23  
    Wbudowana w uC pamięć SRAM nie traci danych dopóki nie pozbawisz jej zasilania (ewentualnie wykonasz reset, nadpiszesz dane, itp.). EEPROM natomiast przechowuje dane nawet po zaniku napięcia.

    Co do szybkości: EEPROM jest bardzo wolną pamięcią, dlatego wszelkie obliczenia i operacje na danych wykonuje się w SRAM. EEPROM służy tylko do przechowywania danych po odłączeniu zasilania.

    W C wszystkie zadeklarowane zmienne przechowywane są właśnie w SRAM.
    Stwórz sobie po prostu tablicę i odwołuj się do niej poprzez indeks.
  • #5 5690544
    gVVint
    Poziom 10  
    Dzieki wielkie :) właśnie o to mi chodziło :)
REKLAMA