Last active
January 16, 2020 11:49
-
-
Save ti-nspire/032d2b731e0433d81e07c31fab445f92 to your computer and use it in GitHub Desktop.
EEPROM25_256_Example_for_ATmega328P
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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