Sensor Fusion 7.00 Preview - Part 1

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

Sensor Fusion 7.00 Preview - Part 1

Sensor Fusion 7.00 Preview - Part 1

All,

We are busily working to integrate Version 7.00 of the sensor fusion library into the Kinetis Expert (KEX) ecosystem.  ETA is early August.  I have attached here a preview copy of the user manual for that release.  This is subject to the usual disclaimers: content subject to change, no liability, yada yada yada.  There are a LOT of changes.    These are documented ad nauseum in the user guide.  I've also added a lot of our old blog content into the user guide, as I keep getting requests for them.  Please take a look and give me your feedback.

 

FYI, Here is a sample main() for the new fusion, running on FreeRTOS:

 

/* FreeRTOS kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "timers.h"
#include "event_groups.h"

// 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 "Driver_I2C_SDK2.h"    // ISSDK header file for CMSIS I2C Driver
#include "fxas21002.h"          // register address and bit field definitions
#include "mpl3115.h"            // register address and bit field definitions
#include "fxos8700.h"           // register address and bit field definitions

// 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"            // Sta:tus indicator interface - application specific
#include "drivers.h"           // NXP sensor drivers OR customer-supplied drivers

// 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 three physical sensors
EventGroupHandle_t event_group = NULL;

static void read_task(void *pvParameters);              // FreeRTOS Task definition
static void fusion_task(void *pvParameters);            // FreeRTOS Task definition

/// This is a FreeRTOS (dual task) 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

    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
    sfg.installSensor(&sfg, &sensors[0], FXOS8700_I2C_ADDR, 1, (void*) I2Cdrv, FXOS8700_Init,  FXOS8700_Read);
    sfg.installSensor(&sfg, &sensors[1], FXAS21002_I2C_ADDR, 1, (void*) I2Cdrv, FXAS21002_Init, FXAS21002_Read);
    sfg.installSensor(&sfg, &sensors[2], MPL3115_I2C_ADDR, 2, (void*) I2Cdrv, MPL3115_Init, MPL3115_Read);
    sfg.initializeFusionEngine(&sfg);         // This will initialize sensors and magnetic calibration

    event_group = xEventGroupCreate();
    xTaskCreate(read_task, "READ", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 2, NULL);
    xTaskCreate(fusion_task, "FUSION", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, NULL);

    sfg.setStatus(&sfg, NORMAL);                // If we got this far, let's set status state to NORMAL
    vTaskStartScheduler();                      // Start the RTOS scheduler
    sfg.setStatus(&sfg, HARD_FAULT);            // If we got this far, FreeRTOS does not have enough memory allocated
    for (;;) ;
}

static void read_task(void *pvParameters)
{
    uint16_t i=0;                       // general counter variable
    portTickType lastWakeTime;
    const portTickType frequency = 1;   // tick counter runs at the read rate
    lastWakeTime = xTaskGetTickCount();
    while (1)
    {
        for (i=1; i<=OVERSAMPLE_RATE; i++) {
            vTaskDelayUntil(&lastWakeTime, frequency);
            sfg.readSensors(&sfg, i);              // Reads sensors, applies HAL and does averaging (if applicable)
        }
        xEventGroupSetBits(event_group, B0);
    }
}

static void fusion_task(void *pvParameters)
{
    uint16_t i=0;  // general counter variable
    while (1)
    {
        xEventGroupWaitBits(event_group,    /* The event group handle. */
                            B0,             /* The bit pattern the event group is waiting for. */
                            pdTRUE,         /* BIT_0 and BIT_4 will be cleared automatically. */
                            pdFALSE,        /* Don't wait for both bits, either bit unblock task. */
                            portMAX_DELAY); /* Block indefinitely to wait for the condition to be met. */

        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
    }
}

/// \endcode

ラベル(1)
添付
%3CLINGO-SUB%20id%3D%22lingo-sub-1109202%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ESensor%20Fusion%207.00%20Preview%20-%20%E3%83%91%E3%83%BC%E3%83%88%201%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1109202%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%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%9F%E3%81%A1%E3%81%AF%E3%80%81%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%E3%83%BB%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B37.00%E3%82%92Kinetis%20Expert(KEX)%E3%82%A8%E3%82%B3%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AB%E7%B5%B1%E5%90%88%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E5%BF%99%E3%81%97%E3%81%8F%E5%8F%96%E3%82%8A%E7%B5%84%E3%82%93%E3%81%A7%E3%81%84%E3%81%BE%E3%81%99%E3%80%82ETA%E3%81%AF8%E6%9C%88%E4%B8%8A%E6%97%AC%E3%81%A7%E3%81%99%E3%80%82%E3%81%9D%E3%81%AE%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%81%AE%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB%E3%81%AE%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B3%E3%83%94%E3%83%BC%E3%82%92%E3%81%93%E3%81%93%E3%81%AB%E6%B7%BB%E4%BB%98%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E3%80%81%E9%80%9A%E5%B8%B8%E3%81%AE%E5%85%8D%E8%B2%AC%E4%BA%8B%E9%A0%85%E3%81%AE%E5%AF%BE%E8%B1%A1%E3%81%A8%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%3A%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%81%AF%E5%A4%89%E6%9B%B4%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%81%E8%B2%AC%E4%BB%BB%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%81%E3%83%A4%E3%83%80%E3%83%A4%E3%83%80%E3%83%A4%E3%83%80%E3%80%82%E5%A4%9A%E3%81%8F%E3%81%AE%E5%A4%89%E6%9B%B4%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%82%89%E3%81%AF%E3%80%81%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%AC%E3%82%A4%E3%83%89%E3%81%AB%E5%90%90%E3%81%8D%E6%B0%97%E3%82%92%E5%82%AC%E3%81%99%E3%81%BB%E3%81%A9%E6%96%87%E6%9B%B8%E5%8C%96%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%BE%E3%81%9F%E3%80%81%E5%8F%A4%E3%81%84%E3%83%96%E3%83%AD%E3%82%B0%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%82%82%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%AC%E3%82%A4%E3%83%89%E3%81%AB%E3%81%9F%E3%81%8F%E3%81%95%E3%82%93%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%81%8C%E5%AF%84%E3%81%9B%E3%82%89%E3%82%8C%E7%B6%9A%E3%81%91%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%9C%E3%81%B2%E3%81%94%E8%A6%A7%E3%81%84%E3%81%9F%E3%81%A0%E3%81%8D%E3%80%81%E3%81%94%E6%84%9F%E6%83%B3%E3%82%92%E3%81%8A%E5%AF%84%E3%81%9B%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%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%3E%E5%8F%82%E8%80%83%E3%81%BE%E3%81%A7%E3%81%AB%E3%80%81FreeRTOS%20%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%82%8B%E6%96%B0%E3%81%97%E3%81%84%E3%83%95%E3%83%A5%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%20main()%20%E3%82%92%E6%AC%A1%E3%81%AB%E7%A4%BA%E3%81%97%E3%81%BE%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*%20FreeRTOS%20%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%AB%E3%81%AF%E4%BB%A5%E4%B8%8B%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82*%2F%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%E3%80%8CFreeRTOS.h%E3%80%8D%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%E3%80%8Ctask.h%E3%80%8D%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%E3%80%8Cqueue.h%E3%80%8D%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%E3%80%8Ctimers.h%E3%80%8D%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%E3%80%8Cevent_groups.h%E3%80%8D%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%3EKSDK%20%E3%81%A8%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%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%22board.h%22%20%2F%2F%20%E3%83%9C%E3%83%BC%E3%83%89%E8%A8%AD%E5%AE%9A%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%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%22pin_mux.h%22%20%2F%2F%20%E3%83%94%E3%83%B3%E3%83%9E%E3%83%AB%E3%83%81%E3%83%97%E3%83%AC%E3%82%AF%E3%82%B5%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%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%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%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%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%22Driver_I2C_SDK2.h%22%20%2F%2F%20CMSIS%20I2C%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%81%AEISSDK%E3%83%98%E3%83%83%E3%83%80%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%22fxas21002.h%22%20%2F%2F%20%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%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%82%A2%E3%83%89%E3%83%AC%E3%82%B9%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%82%A2%E3%83%89%E3%83%AC%E3%82%B9%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%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%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%AE%20magCal%20%E3%81%8A%E3%82%88%E3%81%B3%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%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%22%20%2F%2F%20Sta%3Atus%20%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%83%BC%E3%81%BE%E3%81%9F%E3%81%AF%E9%A1%A7%E5%AE%A2%E6%8F%90%E4%BE%9B%E3%81%AE%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%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%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%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%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%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%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%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%80%82%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%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%26lt%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EStatusSubsystem%20status%E3%82%B5%E3%83%96%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%26lt%3B%E3%81%AF%E3%80%81%E8%A6%96%E8%A6%9A%E7%9A%84%E3%81%AA(%E9%80%9A%E5%B8%B8%E3%81%AFLED)%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%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%5B3%5D%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%26lt%3B%20%E3%81%93%E3%81%AE%E5%AE%9F%E8%A3%85%E3%81%A7%E3%81%AF%E3%80%813%20%E3%81%A4%E3%81%AE%E7%89%A9%E7%90%86%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%82%92%E4%BD%BF%E7%94%A8%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%3EEventGroupHandle_t%20event_group%20%3D%20NULL%20%E3%81%A7%E3%81%99%E3%80%82%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%3Estatic%20void%20read_task(void%20*pvParameters)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%20FreeRTOS%20Task%20definition%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Estatic%20void%20fusion_task(void%20*pvParameters)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%20FreeRTOS%20Task%20definition%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%E3%81%93%E3%82%8C%E3%81%AF%E3%80%81NXP%20%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%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%20FreeRTOS%20(%E3%83%87%E3%83%A5%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%B9%E3%82%AF)%20%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%20main(void)%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%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%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%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%E3%80%82%3C%2FSHIELD%3E%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%3EBOARD_InitPins()%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20pin_mux.c%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%95%E3%82%8C%E3%80%81PKG%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%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%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%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%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%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%3B%E5%88%9D%E6%9C%9F%E5%8C%96(NULL)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%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%83%BC%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%3EI2Cdrv-%26gt%3BControl(ARM_I2C_BUS_SPEED%2C%20ARM_I2C_BUS_SPEED_FAST)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20I2C%E3%83%90%E3%82%B9%E9%80%9F%E5%BA%A6%E3%81%AE%E6%A7%8B%E6%88%90%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%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%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%81%AE%E6%A7%8B%E6%88%90%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%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%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%E8%A8%AD%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%3EinitSensorFusionGlobals(%26amp%3Bsfg%2C%20%26amp%3BstatusSubsystem%2C%20%26amp%3BcontrolSubsystem)%3B%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%E6%A7%8B%E9%80%A0%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%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%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%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%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%202%2C%20(void*)%20I2Cdrv%2C%20MPL3115_Init%2C%20MPL3115_Read)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.initializeFusionEngine(%26amp%3Bsfg)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%E3%81%93%E3%82%8C%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%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%81%8C%E5%88%9D%E6%9C%9F%E5%8C%96%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%3Eevent_group%20%3D%20xEventGroupCreate()%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3ExTaskCreate(read_task%2C%20%22%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%22%2C%20configMINIMAL_STACK_SIZE%2C%20NULL%2C%20tskIDLE_PRIORITY%20%2B%202%2C%20NULL)%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3ExTaskCreate(fusion_task%2C%20%22FUSION%22%2C%20configMINIMAL_STACK_SIZE%2C%20NULL%2C%20tskIDLE_PRIORITY%20%2B%201%2C%20NULL)%3B%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%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%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%E7%8A%B6%E6%85%8B%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%3EvTaskStartScheduler()%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20RTOS%20%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%A9%E3%81%AE%E8%B5%B7%E5%8B%95%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.setStatus(%26amp%3Bsfg%2C%20HARD_FAULT)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%E3%81%93%E3%81%93%E3%81%BE%E3%81%A7%E6%9D%A5%E3%81%9F%E5%A0%B4%E5%90%88%E3%80%81FreeRTOS%20%E3%81%AB%E3%81%AF%E5%8D%81%E5%88%86%E3%81%AA%E3%83%A1%E3%83%A2%E3%83%AA%E3%81%8C%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%89%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Efor%20(%3B%3B)%20%3B%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%3Estatic%20void%20read_task(void%20*pvParameters)%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%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Euint16_t%20i%3D0%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%E4%B8%80%E8%88%AC%E7%9A%84%E3%81%AA%E3%82%AB%E3%82%A6%E3%83%B3%E3%82%BF%E3%83%BC%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%3EportTickType%20lastWakeTime%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Econst%20portTickType%20%E5%91%A8%E6%B3%A2%E6%95%B0%20%3D%201%3B%26nbsp%3B%20%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%82%AB%E3%82%A6%E3%83%B3%E3%82%BF%E3%83%BC%E3%81%AF%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%83%AC%E3%83%BC%E3%83%88%E3%81%A7%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%3ElastWakeTime%20%3D%20xTaskGetTickCount()%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3E(1)%E3%81%AA%E3%81%8C%E3%82%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%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Efor%20(i%3D1%3B%20i%26lt%3B%3DOVERSAMPLE_RATE%3B%20i%2B%2B)%20%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EvTaskDelayUntil(%26amp%3BlastWakeTime%2C%20%E9%A0%BB%E5%BA%A6)%3B%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%20i)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%80%81HAL%20%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%E8%A1%8C%E3%81%84%E3%81%BE%E3%81%99%20(%E8%A9%B2%E5%BD%93%E3%81%99%E3%82%8B%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%3E%7D%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3ExEventGroupSetBits(event_group%2C%20B0)%3B%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%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%3E%E3%82%B9%E3%82%BF%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%83%9C%E3%82%A4%E3%83%89fusion_task(%E3%83%9C%E3%82%A4%E3%83%89*%20pvParameters)%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%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Euint16_t%20i%3D0%3B%20%E4%B8%80%E8%88%AC%E7%9A%84%E3%81%AA%E3%82%AB%E3%82%A6%E3%83%B3%E3%82%BF%E3%83%BC%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%3E(1)%E3%81%AA%E3%81%8C%E3%82%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%7B%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3ExEventGroupWaitBits(event_group%2C%20%2F*%20%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AE%E3%83%8F%E3%83%B3%E3%83%89%E3%83%AB%E3%80%82%20*%2F%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EB0%2C%20%2F*%20%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%20%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%8C%E5%BE%85%E6%A9%9F%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%83%93%E3%83%83%E3%83%88%20%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%80%82*%2F%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EpdTRUE%2C%20%2F*%20BIT_0%20%E3%81%A8%20BIT_4%20%E3%81%AF%E8%87%AA%E5%8B%95%E7%9A%84%E3%81%AB%E3%82%AF%E3%83%AA%E3%82%A2%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82*%2F%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EpdFALSE%2C%20%2F*%20%E4%B8%A1%E6%96%B9%E3%81%AE%E3%83%93%E3%83%83%E3%83%88%E3%82%92%E5%BE%85%E3%81%9F%E3%81%9A%E3%81%AB%E3%80%81%E3%81%A9%E3%81%A1%E3%82%89%E3%81%8B%E3%81%AE%E3%83%93%E3%83%83%E3%83%88%E3%81%8C%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E8%A7%A3%E9%99%A4%E3%82%BF%E3%82%B9%E3%82%AF%E3%82%92%E8%A1%8C%E3%81%84%E3%81%BE%E3%81%99%E3%80%82*%2F%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3EportMAX_DELAY)%3B%2F*%20%E6%9D%A1%E4%BB%B6%E3%81%8C%E6%BA%80%E3%81%9F%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%82%92%E5%BE%85%E3%81%A4%E3%81%9F%E3%82%81%E3%81%AB%E7%84%A1%E6%9C%9F%E9%99%90%E3%81%AB%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%81%97%E3%81%BE%E3%81%99%E3%80%82*%2F%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.conditionSensorReadings(%26amp%3Bsfg)%3B%20magCal%20%E3%81%AF%E3%81%93%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%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%E5%AE%9F%E9%9A%9B%E3%81%AE%E3%83%95%E3%83%A5%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%20%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.apply%E6%91%82%E5%8B%95(%26amp%3Bsfg)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E6%91%82%E5%8B%95%E3%81%AE%E9%81%A9%E7%94%A8%20(%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E3%81%BF)%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.loopcounter%20%2B%2B%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%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%E3%80%81%E7%A3%81%E6%B0%97%E6%BC%94%E7%AE%97%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%20%3D%20i%20%2B%201%3B%3C%2FSPAN%3E%3CBR%20%2F%3E%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%20%E3%81%93%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%97%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Ei%20%3D%200%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%E3%81%9D%E3%82%8C%E3%81%8C%E6%AD%A3%E3%81%97%E3%81%8F%E6%A9%9F%E8%83%BD%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E3%81%AF%E3%80%81%E5%B0%91%E3%81%AA%E3%81%8F%E3%81%A8%E3%82%824%E5%9B%9E%E3%82%B5%E3%82%A4%E3%82%AF%E3%83%AB%E3%81%99%E3%82%8B%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%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.updateStatus(%26amp%3Bsfg)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%E3%81%93%E3%81%93%E3%81%A7%E3%80%81%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%3CBR%20%2F%3E%3CSPAN%20style%3D%22font-family%3A%20courier%20new%2Ccourier%3B%20font-size%3A%208pt%3B%22%3Esfg.queueStatus(%26amp%3Bsfg%2C%20NORMAL)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%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%20NORMAL%20%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%92%E6%83%B3%E5%AE%9A%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.pControlSubsystem-%26gt%3Bstream(%26amp%3Bsfg%2C%20sUARTOutputBuffer)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%20%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%20Sensor%20Fusion%20%E3%83%84%E3%83%BC%E3%83%AB%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%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%3E%7D%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%3E%2F%2F%2F%20%5Cendcode%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1109202%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
評価なし
バージョン履歴
最終更新日:
‎02-03-2026 05:15 PM
更新者: