Minne för loggning från PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Minne för loggning från PIC

Inlägg av Kaggen »

Halloj!

Jag tänkte logga lite värden från accelerometer som läses av en PIC 16F627. Är det någon som har tips om någon form av minne att lagra/logga den inlästa datan i tills jag kan läsa in i en dator?

Någon form av vanligt billigt RAM minne (har mycke gamla EDO minnen sen 486-tiden) kräver ju att ström finnes tillgänglig ända tills överföringen är klar. Dessutom kräver dom ,vad jag vet, en del logik för att funka (refresher o sånt).

Någon form av hyffsat snabbt flash eller liknande kanske skulle vara något?

Om någon har något tips på hur man löser detta utan att lassa ut allt för astronomiska summor, vore jag jättegla!

Mats
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Flash-kort av olika slag = massor och åter massor med plats för lite pengar.

Compactflash har jag använt ihop med PIC, fast de kräver ju ganska många pinnar så någon seriell variant kanske är bättre. MMC, SD osv...
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

Annars finns små seriella EEPROM med ganska många kbyte till för små pengar... hur mycket ska du lagra (du måste ju ändå analysera datan efteråt)?

Länk

/Johan
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

Antagligen lär jag minst ha 2st 16-bits värden samplade 10 ggr per sekund, alltså 10*4 bytes per sekund. Jag bör ha mellan 2-5 minuters data för att det skall vara meningsfullt, men det blir ju igentligen inte så mycket, 12kB för 5 minuter.

Den länken du gav var mycket bra! Visste inte att det fanns sådana EEPROM. Seriellt är ju också perfekt, så sparar jag lite pinnar på PIC:en. Ska kolla upp lite hur dessa funkar.

Tack för tipsen!

mvh Mats
Användarvisningsbild
Schnegelwerfer
Inlägg: 1863
Blev medlem: 8 november 2004, 13:46:56

Inlägg av Schnegelwerfer »

När det gäller EEPROM så har de en begränsad livslängd (ett visst antal skrivningar). Det kan vara värt att kolla upp hur länge EEPROMet fungerar i din applikation.
Blir livslängden för kort får man gå över till Flash istället, eller buffra data och göra större skrivoperationer.

EDIT: Kollade upp ELFAS SPI-EEPROM. DE klarade av 100000 skrivcykler, och det blir bara drygt ett dygns livstid om du skrivar till minnet en gång i sekunden.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Schnegelwerfer: Flash har ju ännu sämre skrivlivslängd jämfört med EEPROM.
Användarvisningsbild
Schnegelwerfer
Inlägg: 1863
Blev medlem: 8 november 2004, 13:46:56

Inlägg av Schnegelwerfer »

Är du säker?
Jag har för mig att flashminnen är betyligt bättre än EEPROM i det avseendet, men jag kanske minns fel.
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Kollar man i datablad för t ex uC:s så brukar EEPROM vara specade för att klara ca 10 ggr fler skrivoperationer än Flash-minnet.

Står även i Elfa:s faktasidor att EEPROM brukar kunna tillåta 10 till 100 ggr flera skrivoperationer.

Fördelen med Flash är väl att de brukar vara betydligt större än ett "vanligt" EEPROM, så att varje minnesposition inte behöver skrivas över lika ofta(?).
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Schnegelwerfer skrev: EDIT: Kollade upp ELFAS SPI-EEPROM. DE klarade av 100000 skrivcykler, och det blir bara drygt ett dygns livstid om du skrivar till minnet en gång i sekunden.
Det gäller väl om man skriver hela minnet en gång i sekunden? Om man skriver en byte varje sekund till ett minne på 64kbyte och använder det som ringbuffer blir det 200 år...

Eller raderas datan i block och skrivs om när man skriver till en byte i såna där små EEPROM?
rogan
Inlägg: 20
Blev medlem: 30 maj 2004, 00:15:08

Inlägg av rogan »

Har själv använt mig av fram från Ramtron http://www.ramtron.com De har både seriella (SPI, I2C) ocg parallella. Har för mig att de klarar av ett flertalet miljoner skrivcykler.

// RA
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Antal skrivcykler är inte hur många gånger man kan skriva till minnet, det är egentligen hur många gånger man kan radera-och-skriva-nytt-värde i en cell.

Om det då har 10K betyder det att byte 0 kan skrivas och raderas 10.000 gånger GARANTERAT. Om man då ska sampla som det beskrivs i detta projekt betyder det att man ju först sampler och fyller minnet, sedan raderas allt och man börjar om. Det kan man alltså göra garanterat 10.000 gånger eller vad tillverkaren anger.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

cyr skrev:
Schnegelwerfer skrev: EDIT: Kollade upp ELFAS SPI-EEPROM. DE klarade av 100000 skrivcykler, och det blir bara drygt ett dygns livstid om du skrivar till minnet en gång i sekunden.
Det gäller väl om man skriver hela minnet en gång i sekunden? Om man skriver en byte varje sekund till ett minne på 64kbyte och använder det som ringbuffer blir det 200 år...

Eller raderas datan i block och skrivs om när man skriver till en byte i såna där små EEPROM?
Tror det gäller en skriv cykel (write cycle). På en skrivcykel kan man skriva upp till 32 bytes på det EEPROM jag använder (jag skriver förnärvarande 4 bytes per WC (Write Cycle).

Jag kör alltså tio WCs per sekund, 4 bytes per WC och 8192 bytes EEPROM, borde bli 8192 / 4 WCs för en fullständig loggning = 2048 WCs. Databladet lovar "more than" 1.000.000 skrivcycler, vilket alltså borde bli 1.000.000 / 2048 = ~488 fulla loggningar.

Om man läser noga står det "more than 1.000.000 erase/write cycles" om dom då menar att det måste till en "erase cycle" innan varje "write cycle" (som isåfall minskar 488 ovan till hälften) vet jag inte.

Mats
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Näää Kaggen, nu är du långt ute och cykla!

Talen beskriver hur många gånger man kan skriva ett värde i 1 (ett) byte, vilket som helst i minnet. Så om du skriver 32 åt gången är varje av de 32 enbart ändrat 1 gång! Så det så!
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Men en "write cycle" måste väl innebära en skrivning, till en viss adress? Skrivningar till första byten bör ju inte slita på sista byten...

Med 32 byte stora "pages" så skrivs förmodligen all data i varje page över varje gång man skriver till någon byte i denna (så varje skrivning räknas som en "write cycle" för alla byte i det blocket).

Och om man skriver 4 byte åt gången blir det i själva verket 8 skrivningar till varje cell, och totalt 125 000 fulla loggningar (om man skriver lika ofta till varje cell i minnet).

Eller om man optimerar och skriver en hel page åt gången, bara 1 skrivning per cell och totalt 1 000 000 fulla loggningar.

Eller har jag fattat detta totalt fel? Slita ut ett EEPROM på några hundra fulla skrivningar känns orimligt...

edit: Det tog visst många minuter att skriva den här posten, men icecap är iaf inne på ungefär samma linje som jag ser jag...
rogan
Inlägg: 20
Blev medlem: 30 maj 2004, 00:15:08

Inlägg av rogan »

Håller med Icecap.

Kolla lite på fram minnen, vissa sorter har upp till 10^12 skriv/läs cykler. Finns i spi/i2c eller parallella (ersätter sram).

// RA
Skriv svar