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

Szybkość próbkowania i zapis do zew. eeprom I2C ?

programista_avr 26 Lis 2006 21:03 2023 5
REKLAMA
  • #1 3266815
    programista_avr
    Poziom 1  
    Posty: 1
    Mam następujący problem. Potrzebuję zbierać dane z wejścia A/C w ATmega8 z częstotliwością 100 razy na sek. i zapisywać je do zew. pamięci eeprom. Chciałbym zapisywać w "locie" do eepromu 24F256 ale jest problem bo oczytana dana z A/C jest 10bitowa wiec musze rozbić na dwa bajty i zapisać je czyli czas potrzebny na sam zapis to jest 10ms (2x5ms) a próbkowanie też jest co 10ms więć chyba niedam rady zapisywać 100 próbek w pamięci w locie. Czy dobrze myślę? Może się mylę i jest jakiś sposób żeby to w ten sposób realizować.

    dzięki za odpowiedzi
  • REKLAMA
  • #2 3266936
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    niewiem jak to jest z pamięcią 24Fxx ale 24Cxxx też miałe cykl zapisu 10mS ale można była zapisywac naraz całą strone czyli 64bajty.
    poczytaj w nocie katalogowej czy mozliwy jest zapis całej strony naraz to by rozwiazało twój problem.

    pozdrawiam
  • REKLAMA
  • #3 3266950
    crazy_phisic
    VIP Zasłużony dla elektroda
    Posty: 2244
    Pomógł: 278
    Ocena: 131
    Odczyt wartości próbki i polecenie następnej konwersji to czas liczony w pojedyńczych us. Wszystko zależy od tego czy uda Ci się zapisać 2 bajty w czasie 10ms...
  • REKLAMA
  • #4 3267103
    markosik20
    Poziom 33  
    Posty: 2261
    Pomógł: 208
    Ocena: 147
    Zapisując jeden bajt z osobna to się nie zmieścisz (potrzeba 10ms). Ale zapisując całą stronę naraz (64B) to zmieścisz się wraz z przesłaniem jednego bajta w 0,5ms/bajt.
  • REKLAMA
  • #5 3267919
    Celetron
    Poziom 12  
    Posty: 59
    Pomógł: 1
    markosik20 napisał:
    Zapisując jeden bajt z osobna to się nie zmieścisz (potrzeba 10ms). Ale zapisując całą stronę naraz (64B) to zmieścisz się wraz z przesłaniem jednego bajta w 0,5ms/bajt.

    no tak, ale raz na 64 pomiary jeden pomiar "wypadnie".
    Miałem dokładnie taki sam problem - 8 kanałów z częstotliwością 100 Hz. Używam pamięci At45DB041B (SPI), gdzie maksymalny czas zapisu strony to 14ms. Jest to czas maksymalny - dla mojego egzemplarza pamięci zmierzony czas to ok. 8ms, więc program działa prawidłowo i "wyrabia" się. Nie wiem, czy ten czas zależy od konkretnego egzemplarza, czy od warunków pracy, ale na razie wszystko jest ok.
    Alternatywą jest zastosowanie pamięci FRAM, gdzie zapis jest praktycznie natychmiastowy. U minie nie zdało egzaminu - największa kość ma pojemność 512 Kb - to wystarcza na jakieś 40s, a pamięć AT45DB041B (4 mega bity) na ok. 337s.
    Pamięci FRAM można kupić np. w http://www.citworld.com/pl/. Cena kości FM25512-G to ok. 12 USD
  • #6 3267935
    hunterhouse
    Poziom 26  
    Posty: 893
    Pomógł: 84
    Ocena: 3
    ale przecież procek moze wysłać całą strone do pamieci i dalej mozę sobie mierzyć a pamiec niech sie zapisuje, kto każe procesorowi czekać na zapis w pamięci ????
    a tak ogólnie to 100 pomiarów po 2 bajty to 200bajtów a ATMEGA8 ma 1024 ramu więc mozna by to całe zbuforować w ramie i dalej robić z tym co sie chce..... ale najlepszy pomysł jest z zapisem całej strony lub jej kawałka gdy zależy ci na ramie w uP
REKLAMA