さて、質問はそれをすべて言います。私がやりたいことは、マイクロコントローラーの電源を入れるたびに、保存されたデータからデータを取得して使用することです。外部フラッシュ チップを使用しないでください。可能であれば、AVR Studio 4 で使用できるように、いくつかのコード スニペットを提供してください。たとえば、8 つの uint16_t データを保存する場合、それらのデータを uint16_t の配列にロードする必要があります。
2 に答える
プログラムで更新する必要がない場合は、データをチップのプログラムメモリに書き込む必要があります。または、読み取り/書き込みサポートが必要な場合は、組み込みの EPROM を使用する必要があります。
Pgmem の例:
#include <avr/pgmspace.h>
PROGMEM uint16_t data[] = { 0, 1, 2, 3 };
int main()
{
uint16_t x = pgm_read_word_near(data + 1); // access 2nd element
}
使用している部品のデータシートを入手する必要があります。このようなマイクロコントローラーには通常、少なくとも 1 つのフラッシュが含まれており、場合によっては複数のフラッシュ バンクが含まれているため、さまざまなブートローダーを使用できるようになります。また、別のフラッシュに影響を与えずに 1 つのフラッシュ全体を簡単に消去できます。同様に、eeprom を持っているものもあります。これはすべて内部的なものであり、外部的なものではありません。特に、プログラムで保存する必要があると言っているので、これは機能するはずです(フラッシュが消耗しやすいことを覚えておいてください。必要がない限り保存しないでください)。eeprom またはフラッシュのいずれかが、電源投入時に不揮発性でその情報を保持するという要件を満たします。プログラムで保存することもできます。グーグルは、これを行う方法に関する多くの例を見つけます。また、明らかに読んでいないデータシートと、この情報を含むアプリ ノート (読むべきでした) を見つけることができます。
データの読み取りは、データシートのメモリ マップにあり、それらのアドレスを読み取るコードを記述します。書き込みはデータシート (プログラマー リファレンス マニュアル、ユーザー ガイド、atmel の呼び方) にも記載されており、ネット上には多くの例があります。