Всем привет, решил попробовать микросхемку памяти FM24I2C, просидел пару дней и не могу понят почему она не работает, код вроде простой, но не работает.
Сам код, полный:
#include <Wire.h>
#include <avr/wdt.h>
#define disk1 0x50
void scan()
{ byte error, address;
int nDevices;
Serial1.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial1.print("I2C device found at address 0x");
if (address<16)
Serial1.print("0");
Serial1.print(address,HEX);
Serial1.println(" !");
nDevices++;
}
else if (error==4)
{
Serial1.print("Unknown error at address 0x");
if (address<16)
Serial1.print("0");
Serial1.println(address,HEX);
}
}
if (nDevices == 0)
Serial1.println("No I2C devices found\n");
else
Serial1.println("done\n");
}
// -------------- функции чтение-запись ------------
void FM24C_write_byte(byte disk, byte byteAddress, byte data) { // disk: 0x50-0x57,
Wire.beginTransmission(disk);
Wire.write(byteAddress);
Wire.write(data);
Wire.endTransmission();
delay(1);
}
byte FM24C_read_byte(byte disk, byte byteAddress ) {
byte rdata;
Wire.beginTransmission(disk);
Wire.write(byteAddress);
Wire.endTransmission();
Wire.requestFrom(disk, 1);
if (Wire.available()) rdata = Wire.read();
return rdata;
}
void setup()
{
wdt_enable(WDTO_2S);
Wire.begin();
Serial1.begin(9600);
Serial1.println("RESTART");
//Запись в wire
FM24C_write_byte(disk1, 0, 20);
FM24C_write_byte(disk1, 1, 21);
FM24C_write_byte(disk1, 2, 22);
FM24C_write_byte(disk1, 255, 15);
}
void loop()
{
delay(1000);
scan();
Serial1.println(FM24C_read_byte(disk1, 0));
Serial1.println(FM24C_read_byte(disk1, 1));
Serial1.println(FM24C_read_byte(disk1, 2));
Serial1.println(FM24C_read_byte(disk1, 255));
wdt_reset();
Serial1.println("OK");
}
На выводе:
23:56:33.651 -> Scanning...
23:56:33.651 -> I2C device found at address 0x50 !
23:56:33.682 -> I2C device found at address 0x68 !
23:56:33.748 -> done
23:56:33.748 ->
23:56:33.748 -> 0
23:56:33.748 -> 0
23:56:33.748 -> 0
23:56:33.748 -> 0
23:56:33.748 -> OK