Skip to content

Instantly share code, notes, and snippets.

@ti-nspire
Last active January 16, 2020 11:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ti-nspire/032d2b731e0433d81e07c31fab445f92 to your computer and use it in GitHub Desktop.
Save ti-nspire/032d2b731e0433d81e07c31fab445f92 to your computer and use it in GitHub Desktop.
EEPROM25_256_Example_for_ATmega328P
#include <avr/io.h>
#include <util/delay.h>
extern "C" {
#include "USART.h"
}
#include "mySPI.h"
#include "EEPROM25_256.h"
int main(){
initUSART();
EEPROM25_256 rom('B', 2); // PB2を!SS端子として実体化する。PB3~PB5は!SS端子に指定してはならない。
enableSPI(128, 0, 'M'); // (システムクロックの分周比, モード0, MSBファースト)でSPIを開始する。
uint16_t address;
uint8_t byte;
uint16_t word;
const uint8_t writeBuff[] = {10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250};
const uint16_t n = sizeof(writeBuff)/sizeof(writeBuff[0]);
uint8_t val8;
uint16_t val16;
uint8_t readBuff[n] = {};
// 1. 任意の番地に1バイトを書き込んで読み出して確認する。
printString("test 1: ");
address = 30000;
byte = 200;
rom.writeByte(address, byte); // 書き込んで、
val8 = rom.readByte(address); // 読み出して、
printByte(val8); // 確認する。
printString(" written @ "); printWord(address); printString("\n\n");
// 2. 任意の番地からページ境界をまたがずに2バイトデータを書き込んで読み出して確認する。
printString("test 2: ");
address = 0;
word = 10000;
rom.writeWord(address, word); // 書き込んで、
val16 = rom.readWord(address); // 読み出して、
printWord(val16); // 確認する。
printString(" written @ "); printWord(address); printString("\n\n");
// 3. 任意の番地からページ境界(25LC256の場合は[63:64], [127:128], [191:192], ...)をまたいで2バイトデータを書き込んで読み出して確認する。
printString("test 3: ");
address = 63;
word = 10000;
rom.writeWord(address, word); // 書き込んで、
val16 = rom.readWord(address); // 読み出して、
printWord(val16); // 確認する。
printString(" written @ "); printWord(address); printString("\n\n");
// 4. 任意の番地からページ境界をまたいで任意のバイト数だけ連続して書き込んで読み出して確認する。
printString("test 4: \n");
address = 120;
rom.writeBytes(address, n, writeBuff); // 書き込んで、
rom.readBytes (address, n, readBuff); // 読み出して、
printROM(address, n, readBuff); // 確認する。
printString("\n\n");
// 5.1 先頭アドレス附近と末尾アドレス附近とにいくつかデータを書き込んで、読み出して、確認して、
// 5.2 すべてのアドレスを消去して、本当に消えたかどうかを確認する。
printString("test 5.1: \n");
const uint16_t address1 = 0;
const uint16_t address2 = 32743;
rom.writeBytes(address1, n, writeBuff); // 書き込んで、
rom.readBytes (address1, n, readBuff); // 読み出して、
printROM(address1, n, readBuff); // 確認する。
printString("\n\n");
rom.writeBytes(address2, n, writeBuff); // 書き込んで、
rom.readBytes (address2, n, readBuff); // 読み出して、
printROM(address2, n, readBuff); // 確認する。
printString("\n\n");
printString("test 5.2: \n");
rom.clearAll(); // 全消去して、
rom.readBytes (address1, n, readBuff); // 読み出して、
printROM(address1, n, readBuff); // 確認する。
printString("\n\n");
rom.readBytes (address2, n, readBuff); // 読み出して、
printROM(address2, n, readBuff); // 確認する。
printString("\n\n");
printString("Complete\n\n");
disableSPI(); // SPIを無効化する。しなくてもよい。
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment