このライブラリーはテストに作ったものです。近いうちに他の関数を加えた形でアップデートするつもりです。 read_8(int reg)、read_16(int reg) で レジスターregの値を8bit、16bitで読み込み、そのまま返します。受け取り側の変数をint8_t、int16_t で定義すれば正負に分かれた値を得られます。 write_8(int reg,int data)、write_16(int reg,int data)で レジスターregに8bit、16bit 書き込み、成功したら0、失敗したら1を返します。確認はread_8、read_16を用いています。 conect() でデバイスが使用可能かを調べ、見つかれば0、なければ1を返します。 reg_reset() で全てのレジスタの値を0にします。成功したら0、失敗したらその時点で処理を停止し、失敗したレジスタを返します。 レジスタは公式のデータシートに書いてあるものと文字は同じです。 もしかしたらうまく行かない関数があるかもしれません。次のアプデのときに修正予定です。

Dependents:   Nucleo_L3GD20_MMA7361_Kalman

Revision:
1:354deb9168c0
Parent:
0:f2770227e24c
Child:
2:de6dc4af9b75
--- a/l3gd20.cpp	Wed Jan 28 05:16:22 2015 +0000
+++ b/l3gd20.cpp	Wed Sep 28 11:11:52 2016 +0000
@@ -3,31 +3,31 @@
 
 /*---------------------------------constracta------------------------------------------*/
 
-l3gd20::l3gd20(): l3gdev(PB_15,PB_14,PB_13),l3gcs(PB_12)
+l3gd20::l3gd20(): l3gdev(PB_15,PB_14,PB_13),l3gcs(PB_12),pcdev(USBTX,USBRX)
 {
     l3gdev.frequency(1000000);
     l3gdev.format(8,3);
 }
 
-l3gd20::l3gd20(int fhz): l3gdev(PB_15,PB_14,PB_13),l3gcs(PB_12)
+l3gd20::l3gd20(int fhz): l3gdev(PB_15,PB_14,PB_13),l3gcs(PB_12),pcdev(USBTX,USBRX)
 {
     l3gdev.frequency(fhz);
     l3gdev.format(8,3);
 }
 
-l3gd20::l3gd20(PinName cs,int fhz): l3gdev(PB_15,PB_14,PB_13),l3gcs(cs)
+l3gd20::l3gd20(PinName cs,int fhz): l3gdev(PB_15,PB_14,PB_13),l3gcs(cs),pcdev(USBTX,USBRX)
 {
     l3gdev.frequency(fhz);
     l3gdev.format(8,3);
 }
 
-l3gd20::l3gd20(PinName mosi,PinName miso,PinName sck,PinName cs,int fhz): l3gdev(mosi,miso,sck),l3gcs(cs)
+l3gd20::l3gd20(PinName mosi,PinName miso,PinName sck,PinName cs,int fhz): l3gdev(mosi,miso,sck),l3gcs(cs),pcdev(USBTX,USBRX)
 {
     l3gdev.frequency(fhz);
     l3gdev.format(8,3);
 }
 
-l3gd20::l3gd20(PinName miso,PinName mosi,PinName sck,PinName cs,int fhz,int mode): l3gdev(mosi,miso,sck),l3gcs(cs)
+l3gd20::l3gd20(PinName miso,PinName mosi,PinName sck,PinName cs,int fhz,int mode): l3gdev(mosi,miso,sck),l3gcs(cs),pcdev(USBTX,USBRX)
 {
     l3gdev.frequency(fhz);
     l3gdev.format(8,mode);
@@ -43,6 +43,9 @@
         if(err){
             return i;
         }
+        if(i==CTRL_REG4){
+            scale=250;
+        }
     }
     err=l3gd20::write_8(FIFO_CTRL_REG,0x00);
     if(err){
@@ -110,6 +113,14 @@
     return err;
 }
 
+void l3gd20::s_write_8(uint8_t reg,uint8_t data){
+    reg=reg|WRITE;
+    l3gcs=0;
+    l3gdev.write(reg);
+    l3gdev.write(data);
+    l3gcs=1;
+}
+
 int l3gd20::write_16(uint8_t reg,uint16_t data){
     int err;
     uint8_t d1,d2;