9 years, 8 months ago.

使い方

秋月の8PINモジュールを使用しています。 お作りになられたライブラリの呼び出し例を教えて頂けませんでしょうか? C言語系は不得手で、mbedも触り始めたばかりです。 引き渡す構造体の宣言方法と、引き渡し方をご教示いただけると有難く。 よろしくお願いします。

Question relating to:

秋月販売のL3GD20使用8pinDIPジャイロセンサーモジュールのライブラリです。 FIFOを使って等間隔データの読み込みができます。 構造体のポインタをreadメソッドに渡すと値が入ります。 <今後の予定> ・レジスタへのアクセスの整理整頓 ・データレート/HighLowのフィルター/分解能の設定メソッド ・mbedピン変化割り込みによるデータ取得(おそらく関数ポインタを割り込み処理のメソッドに渡してもらう) ・読み取りデータにフィルターをかける。 ・データ取得の高速化 L3GD20

2 Answers

9 years, 8 months ago.

ライブラリを見つけていただいてありがとうございます。
そのクラスは以下のように使うことを想定していました。(ドキュメント無しで申し訳ありません…&クラス作成時のコードなので動作確認はしていません…)
ヘッダーファイル内にanglerratesという構造体のtypedefがありますのでそちらのポインタを渡していただければ動作すると思います。

L3GD20 gyro sensor Class Usage

#include "mbed.h"
#include "L3GD20.h"

Serial pc ( USBTX,USBRX ) ;//tx,rx
L3GD20 L3GD20 ( p11,p12,p13,p14 ) ;//miso,mosi,sck,cs
int main (  )
{
    anglerrates val;
    L3GD20.start ( L3GD20::XYZ ) ;
    L3GD20.enableFIFO ( L3GD20::STREAMmode,L3GD20::watermark,20 ) ;
    int counter=0;
    while ( 1 )   {
        L3GD20.updateFIFO (  ) ;
        counter++;
        if ( L3GD20.FIFO.status==L3GD20::watermark )   {
            pc.printf ( "counter:%d\r",counter ) ;
            counter=0;
            while ( L3GD20._status.FIFO_SRC_REG.B.FSS!=0 )   {
                L3GD20.read ( &val, L3GD20::XYZ ) ;
                L3GD20.updateFIFO (  ) ;
                printf ( "\nX:%+0d Y:%+0d Z:%+0d\r\n", ( val.X ) , ( val.Y ) , ( val.Z ) ) ;
            }
        }
    }
}

ひとこと

  • int型のcounterは処理にどの程度余裕があるか参考程度に知るためのものです。
  • FIFOモードによってはバッファーが32個たまると更新されなくなるのでモード切り替えが必要だった気がします。(詳細はデータシートにて)
  • C++のクラス練習用に初めて作ったものなのであまり参考にしないでください…

加えて(現在は全く更新していませんが)ライブラリは所属するグループに移しています。 ※SPIとL3GD20のINTピンを利用することを目標にしています。(一応動作はしますが未完です。)

Import libraryL3GD20_SPI

L3GD20 Library using FIFO and Interrupt

7 years, 7 months ago.

こんにちは. ライブラリをインポートさせて頂き,STM32F303上で実装致しました. ありがとうございます.

私の場合,MOSI MISOが逆でした. 実際に動いたときのコードでは <code> L3GD20 L3GD20 ( SPI_MOSI,SPI_MISO,SPI_SCK,SPI_CS ) ;mosi,miso,sck,cs </code> でした. 念のため,ご報告させていただきます.

ありがとうございました.