Sensor Fusion 7.00 Preview - Part 2

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Sensor Fusion 7.00 Preview - Part 2

1,353件の閲覧回数
michaelestanley
NXP Employee
NXP Employee

Adding another teaser to the previous posting...

Here is a bare-metal implemention of the Version 7.00 sensor fusion:

 

// KSDK  and ISSDK Headers
#include "fsl_debug_console.h"  // KSDK header file for the debug interface
#include "board.h"              // KSDK header file to define board configuration
#include "pin_mux.h"            // KSDK header file for pin mux initialization functions
#include "clock_config.h"       // KSDK header file for clock configuration
#include "fsl_port.h"           // KSDK header file for Port I/O control
#include "fsl_i2c.h"            // KSDK header file for I2C interfaces
#include "fsl_pit.h"            // KSDK header feile for Periodic Interval Timer
#include "Driver_I2C_SDK2.h"    // ISSDK CMSIS I2C Driver
#include "fxas21002.h"          // Register and bit-field definitions
#include "mpl3115.h"            // Register and bit-field definitions
#include "fxos8700.h"           // Register and bit-field definitions
#include "fsl_smc.h"

// Sensor Fusion Headers
#include "sensor_fusion.h"      // top level magCal and sensor fusion interfaces
#include "control.h"           // Command/Streaming interface - application specific
#include "status.h"            // Status indicator interface - application specific
#include "drivers.h"           // NXP sensor drivers OR customer-supplied drivers
#include "driver_pit.h"         // Project-specific - PIT is used to control main() timing loop

// Global data structures
SensorFusionGlobals sfg;                ///< This is the primary sensor fusion data structure
ControlSubsystem controlSubsystem;      ///< used for serial communications
StatusSubsystem statusSubsystem;        ///< provides visual (usually LED) status indicator
PhysicalSensor sensors[3];              ///< This implementation uses up to 3 sensors

/// This is a bare-metal implementation of the NXP sensor fusion demo build.
int main(void)
{
    ARM_DRIVER_I2C* I2Cdrv = &I2C_S_DRIVER_BLOCKING;   // defined in the <shield>.h file
    uint16_t i=0;                       // general counter variable
    BOARD_InitPins();                   // defined in pin_mux.c, initializes pkg pins
    BOARD_BootClockRUN();               // defined in clock_config.c, initializes clocks
    BOARD_InitDebugConsole();           // defined in board.c, initializes the OpenSDA port
    I2Cdrv->Initialize(NULL);                                 // Initialize the KSDK driver for the I2C port

    I2Cdrv->Control(ARM_I2C_BUS_SPEED, ARM_I2C_BUS_SPEED_FAST);      // Configure the I2C bus speed

    initializeControlPort(&controlSubsystem);                           // configure pins and ports for the control sub-system
    initializeStatusSubsystem(&statusSubsystem);                        // configure pins and ports for the status sub-system
    initSensorFusionGlobals(&sfg, &statusSubsystem, &controlSubsystem); // Initialize sensor fusion structures
    // "install" the sensors we will be using
#if F_USING_ACCEL || F_USING_MAG
    sfg.installSensor(&sfg, &sensors[0], FXOS8700_I2C_ADDR,  1, (void*) I2Cdrv, FXOS8700_Init,  FXOS8700_Read);
#endif
#if F_USING_GYRO
    sfg.installSensor(&sfg, &sensors[1], FXAS21002_I2C_ADDR, 1, (void*) I2Cdrv, FXAS21002_Init, FXAS21002_Read);
#endif
#if F_USING_PRESSURE
    sfg.installSensor(&sfg, &sensors[2], MPL3115_I2C_ADDR,   1, (void*) I2Cdrv, MPL3115_Init,   MPL3115_Read);
#endif
    sfg.initializeFusionEngine(&sfg);         // This will initialize sensors and magnetic calibration

    pit_init(1000000/FUSION_HZ);                // pitIsrFlag will be set true at FUSION_HZ periodic intervals

    sfg.setStatus(&sfg, NORMAL);                // If we got this far, let's set status state to NORMAL
    while (true)
    {
        if (true == pitIsrFlag) {               // Check whether occur interupt and toggle LED
            sfg.readSensors(&sfg, 1);           // Reads sensors, applies HAL and does averaging (if applicable)
            sfg.conditionSensorReadings(&sfg);  // magCal is run as part of this
            sfg.runFusion(&sfg);                // Run the actual fusion algorithms
            sfg.applyPerturbation(&sfg);        // apply debug perturbation (testing only)
            sfg.loopcounter++;                  // The loop counter is used to "serialize" mag cal operations
            i=i+1;
            if (i>=4) {                         // Some status codes include a "blink" feature.  This loop
                    i=0;                        // should cycle at least four times for that to operate correctly.
                    sfg.updateStatus(&sfg);     // This is where pending status updates are made visible
            }

            sfg.queueStatus(&sfg, NORMAL);      // assume NORMAL status for next pass through the loop
            sfg.pControlSubsystem->stream(&sfg, sUARTOutputBuffer);      // Send stream data to the Sensor Fusion Toolbox
            pitIsrFlag = false;                 // Reset the flag for the next cycle
        }
    }
}
/// \endcode

ラベル(1)
タグ(1)
0 返答(返信)
%3CLINGO-SUB%20id%3D%22lingo-sub-586178%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ESensor%20Fusion%207.00%20%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%20-%20%E3%83%91%E3%83%BC%E3%83%88%202%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-586178%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E5%89%8D%E5%9B%9E%E3%81%AE%E6%8A%95%E7%A8%BF%E3%81%AB%E3%82%82%E3%81%86%E4%B8%80%E3%81%A4%E3%83%86%E3%82%A3%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%99...%3C%2FP%3E%3CP%3E%E4%BB%A5%E4%B8%8B%E3%81%AF%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%207.00%20%E3%82%BB%E3%83%B3%E3%82%B5%20%E3%83%95%E3%83%A5%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%99%E3%82%A2%E3%83%A1%E3%82%BF%E3%83%AB%E5%AE%9F%E8%A3%85%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%20style%3D%22min-height%3A%208pt%3B%20padding%3A%200px%3B%22%3E%26nbsp%3B%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%2F%2F%20KSDK%20%E3%81%8A%E3%82%88%E3%81%B3%20ISSDK%20%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22fsl_debug_console.h%22%20%2F%2F%20%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E3%81%AEKSDK%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22board.h%22%20%2F%2F%20%E3%83%9C%E3%83%BC%E3%83%89%E6%A7%8B%E6%88%90%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8BKSDK%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22pin_mux.h%22%20%2F%2F%20%E3%83%94%E3%83%B3MUX%E5%88%9D%E6%9C%9F%E5%8C%96%E9%96%A2%E6%95%B0%E3%81%AEKSDK%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22clock_config.h%22%20%2F%2F%20%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E8%A8%AD%E5%AE%9A%E7%94%A8%E3%81%AEKSDK%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22fsl_port.h%22%20%2F%2F%20%E3%83%9D%E3%83%BC%E3%83%88I%2FO%E5%88%B6%E5%BE%A1%E7%94%A8%E3%81%AEKSDK%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22fsl_i2c.h%22%20%2F%2F%20I2C%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E7%94%A8%E3%81%AEKSDK%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22fsl_pit.h%22%20%2F%2F%20KSDK%20%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%EF%BC%88%E5%91%A8%E6%9C%9F%E9%96%93%E9%9A%94%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%E7%94%A8%EF%BC%89%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22Driver_I2C_SDK2.h%22%20%2F%2F%20ISSDK%20CMSIS%20I2C%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22fxas21002.h%22%20%2F%2F%20%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%81%A8%E3%83%93%E3%83%83%E3%83%88%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E5%AE%9A%E7%BE%A9%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22mpl3115.h%22%20%2F%2F%20%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%81%A8%E3%83%93%E3%83%83%E3%83%88%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E5%AE%9A%E7%BE%A9%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22fxos8700.h%22%20%2F%2F%20%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%81%A8%E3%83%93%E3%83%83%E3%83%88%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E5%AE%9A%E7%BE%A9%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22fsl_smc.h%22%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%2F%2F%20%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%95%E3%83%A5%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22sensor_fusion.h%22%20%2F%2F%20%E3%83%88%E3%83%83%E3%83%97%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AEmagCal%E3%81%8A%E3%82%88%E3%81%B3%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%95%E3%83%A5%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22control.h%22%20%2F%2F%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%2F%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%20-%20%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%9B%BA%E6%9C%89%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22status.h%3B%20%2F%2F%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%B1%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%20-%20%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%9B%BA%E6%9C%89%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22drivers.h%22%20%2F%2F%20NXP%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%81%BE%E3%81%9F%E3%81%AF%E3%81%8A%E5%AE%A2%E6%A7%98%E6%8F%90%E4%BE%9B%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23include%20%22driver_pit.h%22%20%2F%2F%20%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E5%9B%BA%E6%9C%89%20-%20PIT%E3%81%AFmain()%E3%82%BF%E3%82%A4%E3%83%9F%E3%83%B3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%2F%2F%20%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3ESensorFusionGlobals%20sfg%3B%20%2F%2F%2F%26lt%3B%20%E3%81%93%E3%82%8C%E3%81%AF%E4%B8%BB%E8%A6%81%E3%81%AA%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E8%9E%8D%E5%90%88%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0%E3%81%A7%E3%81%99%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EControlSubsystem%20controlSubsystem%3B%20%2F%2F%2F%26lt%3B%20%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E9%80%9A%E4%BF%A1%E3%81%AB%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%82%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EStatusSubsystem%20statusSubsystem%3B%20%2F%2F%2F%26lt%3B%20%E8%A6%96%E8%A6%9A%E7%9A%84%E3%81%AA%EF%BC%88%E9%80%9A%E5%B8%B8%E3%81%AFLED%EF%BC%89%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%B1%E3%83%BC%E3%82%BF%E3%82%92%E6%8F%90%E4%BE%9B%E3%81%97%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EPhysicalSensor%20sensors%5B3%5D%3B%20%2F%2F%2F%26lt%3B%20%E3%81%93%E3%81%AE%E5%AE%9F%E8%A3%85%E3%81%A7%E3%81%AF%E6%9C%80%E5%A4%A73%E3%81%A4%E3%81%AE%E3%82%BB%E3%83%B3%E3%82%B5%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%2F%2F%2F%20%E3%81%93%E3%82%8C%E3%81%AF%E3%80%81NXP%20%E3%82%BB%E3%83%B3%E3%82%B5%20%E3%83%95%E3%83%A5%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%20%E3%83%87%E3%83%A2%20%E3%83%93%E3%83%AB%E3%83%89%E3%81%AE%E3%83%99%E3%82%A2%E3%83%A1%E3%82%BF%E3%83%AB%E5%AE%9F%E8%A3%85%E3%81%A7%E3%81%99%E3%80%82%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Eint%20%E3%83%A1%E3%82%A4%E3%83%B3(void)%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EARM_DRIVER_I2C*%20I2Cdrv%20%3D%20%26amp%3BI2C_S_DRIVER_BLOCKING%3B%20%2F%2F%20%3CSHIELD%3E.h%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%3C%2FSHIELD%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Euint16_t%20i%3D0%3B%20%2F%2F%20%E6%B1%8E%E7%94%A8%E3%82%AB%E3%82%A6%E3%83%B3%E3%82%BF%E5%A4%89%E6%95%B0%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EBOARD_InitPins()%3B%20%2F%2F%20pin_mux.c%20%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%95%E3%82%8C%E3%80%81%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E3%83%94%E3%83%B3%E3%82%92%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%97%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EBOARD_BootClockRUN()%3B%20%2F%2F%20clock_config.c%20%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%95%E3%82%8C%E3%80%81%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%82%92%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%97%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EBOARD_InitDebugConsole()%3B%20%2F%2F%20board.c%20%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%95%E3%82%8C%E3%80%81OpenSDA%20%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%97%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EI2Cdrv-%26gt%3BInitialize(NULL)%3B%20%2F%2F%20I2C%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AEKSDK%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%82%92%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%99%E3%82%8B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EI2Cdrv-%26gt%3BControl(ARM_I2C_BUS_SPEED%2C%20ARM_I2C_BUS_SPEED_FAST)%3B%20%2F%2F%20I2C%E3%83%90%E3%82%B9%E9%80%9F%E5%BA%A6%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EinitializeControlPort(%26amp%3BcontrolSubsystem)%3B%20%2F%2F%20%E5%88%B6%E5%BE%A1%E3%82%B5%E3%83%96%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E3%83%94%E3%83%B3%E3%81%A8%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E6%A7%8B%E6%88%90%E3%81%99%E3%82%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EinitializeStatusSubsystem(%26amp%3BstatusSubsystem)%3B%20%2F%2F%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%B5%E3%83%96%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E3%83%94%E3%83%B3%E3%81%A8%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E6%A7%8B%E6%88%90%E3%81%99%E3%82%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EinitSensorFusionGlobals(%26amp%3Bsfg%2C%20%26amp%3BstatusSubsystem%2C%20%26amp%3BcontrolSubsystem)%3B%20%2F%2F%20%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%95%E3%83%A5%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%A7%8B%E9%80%A0%E3%82%92%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%99%E3%82%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%2F%2F%20%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%82%BB%E3%83%B3%E3%82%B5%E3%82%92%E3%80%8C%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%80%8D%E3%81%97%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23if%20F_USING_ACCEL%20%7C%7C%20F_USING_MAG%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.installSensor(%26amp%3Bsfg%2C%20%26amp%3Bsensors%5B0%5D%2C%20FXOS8700_I2C_ADDR%2C%201%2C%20(void*)%20I2Cdrv%2C%20FXOS8700_Init%2C%20FXOS8700_Read)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23endif%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23F_USING_GYRO%E3%81%AE%E5%A0%B4%E5%90%88%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.installSensor(%26amp%3Bsfg%2C%20%26amp%3Bsensors%5B1%5D%2C%20FXAS21002_I2C_ADDR%2C%201%2C%20(void*)%20I2Cdrv%2C%20FXAS21002_Init%2C%20FXAS21002_Read)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23endif%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23F_USING_PRESSURE%E3%81%AE%E5%A0%B4%E5%90%88%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.installSensor(%26amp%3Bsfg%2C%20%26amp%3Bsensors%5B2%5D%2C%20MPL3115_I2C_ADDR%2C%201%2C%20(void*)%20I2Cdrv%2C%20MPL3115_Init%2C%20MPL3115_Read)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%23endif%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.initializeFusionEngine(%26amp%3Bsfg)%3B%20%2F%2F%20%E3%82%BB%E3%83%B3%E3%82%B5%E3%81%A8%E7%A3%81%E6%B0%97%E3%82%AD%E3%83%A3%E3%83%AA%E3%83%96%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%97%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Epit_init(1000000%2FFUSION_HZ)%3B%20%2F%2F%20pitIsrFlag%E3%81%AFFUSION_HZ%E3%81%AE%E5%91%A8%E6%9C%9F%E9%96%93%E9%9A%94%E3%81%A7true%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.setStatus(%26amp%3Bsfg%2C%20NORMAL)%3B%20%2F%2F%20%E3%81%93%E3%81%93%E3%81%BE%E3%81%A7%E6%9D%A5%E3%81%9F%E3%82%89%E3%80%81%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%92NORMAL%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%97%E3%82%87%E3%81%86%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%EF%BC%88%E7%9C%9F%EF%BC%89%E3%81%AE%E9%96%93%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Eif%20(true%20%3D%3D%20pitIsrFlag)%20%7B%20%2F%2F%20%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%80%81LED%E3%82%92%E7%82%B9%E7%81%AF%E3%81%95%E3%81%9B%E3%82%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.readSensors(%26amp%3Bsfg%2C%201)%3B%20%2F%2F%20%E3%82%BB%E3%83%B3%E3%82%B5%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%80%81HAL%E3%82%92%E9%81%A9%E7%94%A8%E3%81%97%E3%80%81%E5%B9%B3%E5%9D%87%E5%8C%96%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%BE%E3%81%99%EF%BC%88%E8%A9%B2%E5%BD%93%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%EF%BC%89%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.conditionSensorReadings(%26amp%3Bsfg)%3B%20%2F%2F%20magCal%E3%81%AF%E3%81%93%E3%82%8C%E3%81%AE%E4%B8%80%E9%83%A8%E3%81%A8%E3%81%97%E3%81%A6%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.runFusion(%26amp%3Bsfg)%3B%20%2F%2F%20%E5%AE%9F%E9%9A%9B%E3%81%AE%E8%9E%8D%E5%90%88%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.applyPerturbation(%26amp%3Bsfg)%3B%20%2F%2F%20%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E6%91%82%E5%8B%95%E3%82%92%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B%EF%BC%88%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E3%81%BF%EF%BC%89%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.loopcounter%2B%2B%3B%20%2F%2F%20%E3%83%AB%E3%83%BC%E3%83%97%E3%82%AB%E3%82%A6%E3%83%B3%E3%82%BF%E3%81%AF%E7%A3%81%E6%B0%97%E8%A8%88%E7%AE%97%E6%93%8D%E4%BD%9C%E3%82%92%E3%80%8C%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E5%8C%96%E3%80%8D%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Ei%3Di%2B1%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Eif%20(i%26gt%3B%3D4)%20%7B%20%2F%2F%20%E4%B8%80%E9%83%A8%E3%81%AE%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AB%E3%81%AF%E3%80%8C%E7%82%B9%E6%BB%85%E3%80%8D%E6%A9%9F%E8%83%BD%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AF%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Ei%3D0%3B%20%2F%2F%20%E6%AD%A3%E3%81%97%E3%81%8F%E5%8B%95%E4%BD%9C%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E5%B0%91%E3%81%AA%E3%81%8F%E3%81%A8%E3%82%82%204%20%E5%9B%9E%E7%B9%B0%E3%82%8A%E8%BF%94%E3%81%99%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.updateStatus(%26amp%3Bsfg)%3B%20%2F%2F%20%E3%81%93%E3%81%93%E3%81%A7%E4%BF%9D%E7%95%99%E4%B8%AD%E3%81%AE%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E6%9B%B4%E6%96%B0%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22padding-left%3A%2030px%3B%22%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.queueStatus(%26amp%3Bsfg%2C%20NORMAL)%3B%20%2F%2F%20%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AE%E6%AC%A1%E3%81%AE%E3%83%91%E3%82%B9%E3%81%A7%E3%81%AF%20NORMAL%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%81%A7%E3%81%82%E3%82%8B%E3%81%A8%E6%83%B3%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.pControlSubsystem-%26gt%3Bstream(%26amp%3Bsfg%2C%20sUARTOutputBuffer)%3B%20%2F%2F%20%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E3%82%BB%E3%83%B3%E3%82%B5%20Fusion%20Toolbox%E3%81%AB%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EpitIsrFlag%20%3D%20false%3B%20%2F%2F%20%E6%AC%A1%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%AF%E3%83%AB%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AB%E3%83%95%E3%83%A9%E3%82%B0%E3%82%92%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%E3%81%97%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%20%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%2F%2F%2F%20%5Cendcode%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-586178%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3E%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BB%E3%83%95%E3%83%A5%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E