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

[AVR][C] Zmienne w eeprom - odczytywać non stop?

elakota 15 Paź 2008 20:26 1674 6
REKLAMA
  • #1 5635299
    elakota
    Poziom 13  
    Witam,

    Mam następujący dylemat: używam zmiennych zadeklarowanych w pamięci eeprom ATMEGA8, odczytuję zadany czas i porównuję z rzeczywistym - zastanawiam się czy nie powinno się kopiować danych z eeproma do zmiennych w obszarze ram i operować na nich.
    Dla bezpieczeństwa kopiować dane z eeproma do ram na przykład co minutę.

    Jak powinno się to robić zgodnie ze sztuką?
  • REKLAMA
  • #2 5635523
    BoskiDialer
    Poziom 34  
    Nie ma ograniczonej liczby cykli odczytu - spokojnie można odczytywać kiedy są potrzebne. Powoduje to jednak pewne niedogodności: wydłużony czas dostępu oraz wartość w osobnej przestrzeni adresowej. To, czy dane wczytać do pamięci czy nie - zależy od ilości danych i częstotliwości odczytu - małą porcję można zostawić w eeprom w celu zaoszczędzenia paru bajtów pamięci ram (utrata pamięci flash - wywołania funkcji odczytu), większe można wczytać na początku w celu zaoszczędzenia na cyklach dostępu. Co do "bezpieczeństwa" - jeśli nie operujesz na eepromie, to nie musisz aktualizować zawartości w pamięci, wystarczy pojedynczy odczyt. Jednak wszystko zależy od konkretnej aplikacji. To jest podobny dylemat jak ze stałymi tablicami w pamięci programu (przy czym tu zapis jest ograniczony) - wczytywać do pamięci zyskując na szybkości czy zostawić we flashu zyskując na pojemności ramu - duże tablice LUT zostawia się we flashu, stałe ciągi znaków są jednak ładowane do ramu ze względu na potrzebę uzyskania adresu z przestrzeni danych (wyjątkiem są funkcje przyjmujące wskaźnik do pamięci programu). Nie ma jednoznacznej odpowiedzi.
  • REKLAMA
  • #3 5646837
    elakota
    Poziom 13  
    Dzięki za odpowiedz - zmienne czytam z eeproma i nie zauważyłem jakiś dziwnych zachowań
  • REKLAMA
  • #4 5678559
    tsare
    Poziom 13  
    Jeśli nie chciał bym, żeby mój program został skopiowany przez kogoś innego, mogę założyć jakieś zabezpieczenie programowe? Nie da się tego złamać?
  • REKLAMA
  • #6 5685936
    gVVint
    Poziom 10  
    Witam,

    zapytam się w tym wątku bo problem dotyczy zapisu do eeprom:

    mam dane które będę wysyłać do komputera co pewien czas, dane są 8 bitowe, czy przechowywać mogę tylko w wewnętrznej pamięci eeprom (wiem że ma ograniczoną żywotność) czy można np przechowywać w jakimś innym buforze? na początku jeszcze brałem pod uwagę UDR ale nie mogę się doszukać jaka jest jej wielkość - tzn w datasheet opisany jest algorytm wysyałania/odbierania danych 8 bitowych właśnie ale jedyne co udało mi się wywnioskować to to że UDR ma 8 bitów a za nim jest jeszcze bufor do którego dane trafiają przed/po wysłaniu i czekają na zwolnienie odpowiednich flag nadawania/odbierania - możliwe że źle coś sobie przetłumaczyłem dlatego pytam się tutaj. Dane o których mowa są pobierane i przetwarzane przed wysłaniem co 5-10 sek a wysyłane będą w paczkach po max 16 danych. Dzięki za wszelkie sugestie.

    Pozdrawiam
  • #7 5696283
    arturt134
    Poziom 27  
    Przechowuj dane w pamięci RAM
REKLAMA