2011-07-16 2 views
1

マイコン用に外部のEEPROMストレージモジュールを購入することを検討しています。ただし、ストレージ容量は32キロバイトです。レコード数は32キロバイトですか?

私は、各レコードは基本的に0の間の範囲の4つの別々の番号であるレコードを格納するためにこれを使用しています - あなたは32キロバイトを扱うことができるどのように多くのレコード思います

180?

答えて

1

単一レコードは181^4の可能な要素の範囲外の要素であり、情報エントロピーはlog(181^4)/log(2) = 29.999 bitsです。したがって、1つの要素を30ビットでエンコードすることができます。

これは、あなたが格納できる要素がfloor(32 * 1024 * 8/30) = 8738であることを意味します。エンコーディングロジックを大幅に簡素化するために、32ビット - 4バイトを使用してエンコードすることを選択した場合は、32 * 1024 * 8/32 = 8192要素です。

この分析は、例えば、各レコードの4つのバイトを使用して、8Kの要素を格納することができるという事実に加え等

+0

恐縮です、ありがとう! – Joe

0

有効ビット、または要素が最新であるかを示すためのフラグとして、メタデータのための追加のオーバーヘッドをカウントしませんEEPROMでは、EEPROMの代わりにSDカードを使用することを検討しましたか? Arduinoには非常に安価なSDカードshieldsがあります。また、SDカードは非常に安価で、スペースの問題もありません。 SPIでSDカードにアクセスできます。

+1

私は実際にSDメソッドを試しましたが、問題は基本的にはログファイルを格納することだけです。 eepromメソッドを使用すると、単にアドレス番号を呼び出すだけで保存されたレコードをすばやく見つけることができます。ログファイルでは、ファイルをループして行番号に移動する必要があります。 sdのもう一つの落とし穴は、arduinoはテキストファイル内の行を削除したり上書きすることはできません(少なくとも私はそれに関する情報は見つかりませんでした)。 – Joe

+0

SDカードに記録されたファイルはありませんか? –

関連する問題