10000 Merge pull request #298 from Suyash458/patch-6 · ArduinoWorks/i2cdevlib@079bdcb · GitHub
[go: up one dir, main page]

Skip to content

Commit 079bdcb

Browse files
authored
Merge pull request jrowberg#298 from Suyash458/patch-6
Entering fuse ROM access mode to read adjustment registers
2 parents 470bc2c + 2782a6c commit 079bdcb

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

Arduino/AK8975/AK8975.cpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,35 +148,51 @@ void AK8975::disableI2C() {
148148

149149
// ASA* registers
150150
void AK8975::getAdjustment(int8_t *x, int8_t *y, int8_t *z) {
151+
I2Cdev::writeByte(devAddr, AK8975_RA_CNTL, 0x0F); // Enter Fuse ROM access mode
152+
delay(10);
151153
I2Cdev::readBytes(devAddr, AK8975_RA_ASAX, 3, buffer);
152154
*x = buffer[0];
153155
*y = buffer[1];
154156
*z = buffer[2];
155157
}
156158
void AK8975::setAdjustment(int8_t x, int8_t y, int8_t z) {
159+
I2Cdev::writeByte(devAddr, AK8975_RA_CNTL, 0x0F); // Enter Fuse ROM access mode
160+
delay(10);
157161
buffer[0] = x;
158162
buffer[1] = y;
159163
buffer[2] = z;
160164
I2Cdev::writeBytes(devAddr, AK8975_RA_ASAX, 3, buffer);
161165
}
162166
uint8_t AK8975::getAdjustmentX() {
167+
I2Cdev::writeByte(devAddr, AK8975_RA_CNTL, 0x0F); // Enter Fuse ROM access mode
168+
delay(10);
163169
I2Cdev::readByte(devAddr, AK8975_RA_ASAX, buffer);
164170
return buffer[0];
165171
}
166172
void AK8975::setAdjustmentX(uint8_t x) {
173+
I2Cdev::writeByte(devAddr, AK8975_RA_CNTL, 0x0F); // Enter Fuse ROM access mode
174+
delay(10);
167175
I2Cdev::writeByte(devAddr, AK8975_RA_ASAX, x);
168176
}
169177
uint8_t AK8975::getAdjustmentY() {
178+
I2Cdev::writeByte(devAddr, AK8975_RA_CNTL, 0x0F); // Enter Fuse ROM access mode
179+
delay(10);
170180
I2Cdev::readByte(devAddr, AK8975_RA_ASAY, buffer);
171181
return buffer[0];
172182
}
173183
void AK8975::setAdjustmentY(uint8_t y) {
184+
I2Cdev::writeByte(devAddr, AK8975_RA_CNTL, 0x0F); // Enter Fuse ROM access mode
185+
delay(10);
174186
I2Cdev::writeByte(devAddr, AK8975_RA_ASAY, y);
175187
}
176188
uint8_t AK8975::getAdjustmentZ() {
189+
I2Cdev::writeByte(devAddr, AK8975_RA_CNTL, 0x0F); // Enter Fuse ROM access mode
190+
delay(10);
177191
I2Cdev::readByte(devAddr, AK8975_RA_ASAZ, buffer);
178192
return buffer[0];
179193
}
180194
void AK8975::setAdjustmentZ(uint8_t z) {
195+
I2Cdev::writeByte(devAddr, AK8975_RA_CNTL, 0x0F); // Enter Fuse ROM access mode
196+
delay(10);
181197
I2Cdev::writeByte(devAddr, AK8975_RA_ASAZ, z);
182-
}
198+
}

0 commit comments

Comments
 (0)
0