山本ワールド
I2C接続加速度センサーADXL345サポートライブラリ
概要
ADXL345(ANALOG DEVICESのページに移動します)の初期化、読み込みをサポート
使用する場合はadxl345.incをインクルードしadxl345.asmをプロジェクトに追加してください
本ライブラリを使用する前にI2Cモジュールの初期化をしてください。
I2Cバスの仕様については、次のページに記述がある。
http://www.nxp.com/documents/user_manual/UM10204_JA.pdf
プログラムの説明
ソースファイル
以下のファイルで構成されているadxl345.asm ・・・ ADXL345サポートライブラリ Version 1.00 adxl345.inc ・・・ ADXL345サポートライブラリ Version 1.00
サブルーチン
以下のサブルーチンをサポート
adxl345_init
ADXL345の初期化
adxl345_single_write
レジスタアドレスをARGH、書き込みデータをARGLに設定しコールするとADXL345に1byte出力する。
adxl345_single_read
レジスタアドレスをARGH設定しコールするとADXL345から1byte読み出しWREGに結果を格納する。
adxl345_gread_xyz
ADXL345からXYZの加速度を読み出しFSR1で示されるメモリに格納する。
ソースコード
iadxl345.inc
; ADXL345ライブラリー Version 1.00
; File: adxl345.inc
; Target: PIC18F14K50 48Mhz
; アセンブラ: Microchip MPASM(v5.51)
; 書き込み: PICKit 3
; リリース: 2013/10/01 21:00
IFNDEF ADXL345_ASM
EXTERN adxl345_single_write
EXTERN adxl345_single_read
EXTERN adxl345_gread_xyz
EXTERN adxl345_init
ENDIF
; ADXL345の定義 http://www.analog.com/static/imported-files/jp/application_notes/AN-1077_jp.pdf
ADXL345_SADS EQU 0a6h ; スレーブアドレス
ADXL345_DEVID EQU 00h ; DEVIDレジスタ 正常であれば0e5hが取得できる
ADXL345_POWER_CTL EQU 02dh
ADXL345_DATA_FORMAT EQU 031h ; データーフォーマットレジスタ
ADXL345_BW_RATE EQU 02ch ; サンプリング周期レジスタ
ADXL345_DATAX EQU 032h
ADXL345_DATAY EQU 034h
ADXL345_DATAZ EQU 036h
adxl345.asm
; ADXL345ライブラリー Version 1.00
; File: adxl345.asm
; Target: PIC18F14K50 48Mhz
; アセンブラ: Microchip MPASM(v5.51)
; 書き込み: PICKit 3
; リリース: 2013/10/01 21:00
#DEFINE ADXL345_ASM 1
#INCLUDE <p18f14k50.inc>
#INCLUDE "i2c.inc"
#INCLUDE "adxl345.inc"
EXTERN ARGH,ARGL,GX,GY,GZ
GLOBAL adxl345_single_write
GLOBAL adxl345_single_read
GLOBAL adxl345_gread_xyz
GLOBAL adxl345_init
CODE
adxl345_init
movlw b'00001011' ; ±2g 最大分解能
movwf ARGL
movlw ADXL345_DATA_FORMAT
movwf ARGH
rcall adxl345_single_write
movlw b'00001000' ; 測定モード Measure
movwf ARGL
movlw ADXL345_POWER_CTL
movwf ARGH
rcall adxl345_single_write
movlw b'00000111' ; サンプリング周波数 12.5Hz
movwf ARGL
movlw ADXL345_BW_RATE
movwf ARGH
rcall adxl345_single_write
return
adxl345_single_write ; ARGH:レジスタアドレス ARGL:ライトデータ
rcall i2c_start ; スタートを出力
movlw ADXL345_SADS ; スレーブアドレス
rcall i2c_write
movf ARGH,W
rcall i2c_write
movf ARGL,W
rcall i2c_write
rcall i2c_stop
return
adxl345_single_read ; ARGH:レジスタアドレス WREG:リードデータ
rcall i2c_start
movlw ADXL345_SADS
rcall i2c_write
movf ARGH,W
rcall i2c_write
rcall i2c_restart
movlw ADXL345_SADS+1
rcall i2c_write
rcall i2c_last_read
rcall i2c_stop
return
adxl345_gread_xyz ; ADXL345 xyzを一度に呼び出し
rcall i2c_start
movlw ADXL345_SADS
rcall i2c_write
movlw ADXL345_DATAX
rcall i2c_write
rcall i2c_restart
movlw ADXL345_SADS+1
rcall i2c_write
lfsr FSR1,GX
movlw 6
rcall i2c_block_read
return
END
Copyright (C) 2012 山本ワールド All Rights Reserved.