Modified for compatibility with Rev.E. hardware
Fork of AkmSensor by
Diff: akmanalogsensor.cpp
- Revision:
- 45:6af8fdde0ef3
- Parent:
- 44:0e251c736282
- Child:
- 49:c8f8946129b6
diff -r 0e251c736282 -r 6af8fdde0ef3 akmanalogsensor.cpp --- a/akmanalogsensor.cpp Wed Nov 08 23:34:15 2017 +0000 +++ b/akmanalogsensor.cpp Tue Dec 05 23:27:20 2017 +0000 @@ -21,6 +21,7 @@ } AkmSensor::Status AkmAnalogSensor::init(const uint8_t id, const uint8_t subid){ + VERBOSE("#AkmAnalogSensor init()\r\n"); primaryId = id; subId = subid; @@ -54,19 +55,22 @@ else return AkmSensor::ERROR; MCP342X::AdcChannel channel = MCP342X::ADC_CH3; // 0-5.0V out as default - if( (primaryId == AKM_PRIMARY_ID_MISC_ANALOG) && (subId < 0x08) || primaryId == AKM_PRIMARY_ID_CURRENT_SENSOR_3V){ + if( ((primaryId == AKM_PRIMARY_ID_MISC_ANALOG) && (subId <= AKM_PRIMARY_ID_CURRENT_SENSOR_3V)) + || primaryId == AKM_PRIMARY_ID_CURRENT_SENSOR_3V){ channel = MCP342X::ADC_CH4; // 0-3.0V out } // 16bit ADC I2C* i2c = new I2C(I2C_SDA,I2C_SCL); i2c->frequency(I2C_SPEED); + VERBOSE("#AkmAnalogSensor::init: I2C created at %d Hz\r\n", I2C_SPEED); // ADC setting mcp3428 = new MCP342X(i2c, MCP342X::SLAVE_ADDRESS_6EH); mcp3428->setChannel(channel); mcp3428->setSampleSetting(MCP342X::SAMPLE_15HZ_16BIT); mcp3428->setConversionMode(MCP342X::CONTINUOUS); + VERBOSE("#AkmAnalogSensor::init: MPC342X ADC created\r\n"); interval = SENSOR_SAMPLING_RATE; // 10Hz @@ -75,13 +79,14 @@ AkmSensor::Status AkmAnalogSensor::startSensor(){ ticker.attach(callback(this, &AkmSensor::setEvent), interval); - MSG("#Start sensor %s.\r\n",sensorName); + MSG("#Start sensor: %s.\r\n",sensorName); return AkmSensor::SUCCESS; } AkmSensor::Status AkmAnalogSensor::startSensor(const float sec){ interval = sec; - AkmAnalogSensor::startSensor(); + ticker.attach(callback(this, &AkmSensor::setEvent), interval); + MSG("#Start sensor %s. Interval = %.2f\r\n", sensorName, interval); return AkmSensor::SUCCESS; } @@ -92,6 +97,7 @@ } AkmSensor::Status AkmAnalogSensor::readSensorData(Message* msg){ + VERBOSE("#AkmAnalogSensor: Reading sensor data\r\n"); AkmSensor::clearEvent(); msg->setCommand(Message::CMD_START_MEASUREMENT); @@ -102,6 +108,7 @@ primaryId == AKM_PRIMARY_ID_CURRENT_SENSOR_5V ){ MCP342X::Data data; do { + VERBOSE("#Waiting..\r\n"); mcp3428->getData(&data); wait_ms(WAIT_ADC_MS); } while(data.st == MCP342X::DATA_NOT_UPDATED); @@ -111,11 +118,13 @@ }else{ msg->setArgument( 0, 0); msg->setArgument( 1, 0); + MSG("readSensorData Error\r\n"); return AkmSensor::ERROR; } return AkmSensor::SUCCESS; } AkmSensor::Status AkmAnalogSensor::requestCommand(Message* in, Message* out){ + VERBOSE("#AkmAnalogSensor: requestCommand error\r\n"); return AkmSensor::ERROR; }