2023-04-22 11:34:55 +02:00

84 lines
1.7 KiB
C++

//
// FILE: FRAM_readLine.ino
// AUTHOR: Rob Tillaart
// PURPOSE: demo to read al line until a newline
// returned value will include the newline '\n'
// URL: https://github.com/RobTillaart/FRAM_I2C
// ISSUE: See issue #30 for some backgrounder.
// - fill the FRAM with some text lines
// - this sketch assumes e.g. produced by FRAM_logging.ino
// - last written position uint32_t at addres 0..3
// - log entry: plain text separated by '\n' (newline).
#include "FRAM.h"
FRAM fram;
uint32_t sizeInBytes = 0;
char buffer[32];
void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
Serial.print("FRAM_LIB_VERSION: ");
Serial.println(FRAM_LIB_VERSION);
Wire.begin();
// Can we find FRAM on the I2C bus?
int rv = fram.begin(0x50);
if (rv != 0)
{
Serial.print("INIT ERROR: ");
Serial.println(rv);
}
// Get size in bytes to know when to stop.
sizeInBytes = fram.getSize() * 1024;
// assuming FRAM is filled with FRAM_logging.ino
// first entry is starts at 0x04 => address next entry is written in [0..3]
int len = 0;
uint16_t address = 4;
len = fram.readLine(address, buffer, 32);
while ( len >= 0 )
{
Serial.print(len);
Serial.print("\t");
Serial.print(buffer);
address = address + len;
if (address >= sizeInBytes)
{
Serial.println("End of FRAM");
break;
}
len = fram.readLine(address, buffer, 32);
}
Serial.println("done");
delay(100);
uint32_t start = micros();
len = fram.readUntil(0x04, buffer, 32, '\n');
uint32_t stop = micros();
Serial.println(stop - start);
delay(100);
start = micros();
len = fram.readLine(address, buffer, 32);
stop = micros();
Serial.println(stop - start);
}
void loop()
{
}
// -- END OF FILE --