Re: AT24CM02
Решено.
Проблема была в том, что адрес в программе не совпадал с физическим адресом устройства. (В комментах то, что было)
//uint16_t EEPROM_DEVICE_ADDRESS = (0xA8 ›› 1); // if logical 1 on PIN3 of EEPROM device
uint16_t EEPROM_DEVICE_ADDRESS = (0xA0 ›› 1);
static void setDeviceAddress(uint8_t MSBAddress)
{
switch(MSBAddress)
{
// case 0x0:
// EEPROM_DEVICE_ADDRESS = (0xA8 ›› 1); // if logical 1 on PIN3 of EEPROM device
// break;
// case 0x1:
// EEPROM_DEVICE_ADDRESS = (0xAA ›› 1); // if logical 1 on PIN3 of EEPROM device
// break;
// case 0x2:
// EEPROM_DEVICE_ADDRESS = (0xAC ›› 1); // if logical 1 on PIN3 of EEPROM device
// break;
// case 0x3:
// EEPROM_DEVICE_ADDRESS = (0xAE ›› 1); // if logical 1 on PIN3 of EEPROM device
// break;
// default:
// break;
case 0x0:
EEPROM_DEVICE_ADDRESS = (0xA0 ›› 1);
break;
case 0x1:
EEPROM_DEVICE_ADDRESS = (0xA2 ›› 1);
break;
case 0x2:
EEPROM_DEVICE_ADDRESS = (0xA4 ›› 1);
break;
case 0x3:
EEPROM_DEVICE_ADDRESS = (0xA6 ›› 1);
break;
default:
break;
}
}
static void resetDeviceAddress()
{
switch(EEPROM_DEVICE_ADDRESS)
{
// case 0x54: // if logical 1 on PIN3 of EEPROM device
// EEPROM_DEVICE_ADDRESS = (0xAA ›› 1); // if logical 1 on PIN3 of EEPROM device
// break;
// case 0x55: // if logical 1 on PIN3 of EEPROM device
// EEPROM_DEVICE_ADDRESS = (0xAC ›› 1); // if logical 1 on PIN3 of EEPROM device
// break;
// case 0x56: // if logical 1 on PIN3 of EEPROM device
// EEPROM_DEVICE_ADDRESS = (0xAE ›› 1); // if logical 1 on PIN3 of EEPROM device
// break;
// case 0x57: // if logical 1 on PIN3 of EEPROM device
// EEPROM_DEVICE_ADDRESS = (0xA8 ›› 1); // if logical 1 on PIN3 of EEPROM device
// break;
// default:
// break;
case 0x50:
EEPROM_DEVICE_ADDRESS = (0xA2 ›› 1);
break;
case 0x51:
EEPROM_DEVICE_ADDRESS = (0xA4 ›› 1);
break;
case 0x52:
EEPROM_DEVICE_ADDRESS = (0xA6 ›› 1);
break;
case 0x53:
EEPROM_DEVICE_ADDRESS = (0xA0 ›› 1);
break;
default:
break;
}
}
Последний раз редактировалось stubiflex; 08.12.2018 в 22:53.
|