AP_Compass - added auto detect of 5843 vs 5883L to AP_Compass_HMC5843 class

git-svn-id: https://arducopter.googlecode.com/svn/trunk@2700 f9c3cf11-9bcb-44bc-f272-b75c42450872
This commit is contained in:
rmackay9@yahoo.com 2011-06-28 16:47:53 +00:00
parent 151aa5d415
commit f7ba02f825
1 changed files with 6 additions and 6 deletions

View File

@ -37,18 +37,18 @@ AP_Compass_HMC5843::init()
{ {
int numAttempts = 0; int numAttempts = 0;
int success = 0; int success = 0;
byte temp_value, new_value; // used to test compass type byte orig_value, new_value; // used to test compass type
delay(10); delay(10);
// determine if we are using 5843 or 5883L // determine if we are using 5843 or 5883L
temp_value = read_register(ConfigRegA); // read config register A orig_value = read_register(ConfigRegA); // read config register A
new_value = temp_value | 0x60; // turn on sample averaging turned on (only avaiable in 5883L) new_value = orig_value | 0x60; // turn on sample averaging turned on (only avaiable in 5883L)
write_register(ConfigRegA, new_value); // write config register A write_register(ConfigRegA, new_value); // write config register A
temp_value = read_register(ConfigRegA); // re-read config register A if( read_register(ConfigRegA) == new_value ) { // if we've successfully updated it then it's a 5883L
if( temp_value == new_value ) // if we've successfully updated it then it's a 5883L
product_id = AP_COMPASS_TYPE_HMC5883L; product_id = AP_COMPASS_TYPE_HMC5883L;
else write_register(ConfigRegA, orig_value); // restore config register A to it's original state
}else
product_id = AP_COMPASS_TYPE_HMC5843; product_id = AP_COMPASS_TYPE_HMC5843;
// calibration initialisation // calibration initialisation