GPIO制御関係の命令(I2C/SPI含む)

↑目次に戻る

GPIOMODE ピン番号,モード値

指定したピン番号のピンのIOモードを設定

引数

ピン番号

・物理ピン番号または定数( #GPIO0 ~ #GPIO27 )
・8ビットI/O( D0 ~ D7 )
・ピンアサインとModeの対応は以下の表を参照
 ※定数があるピンのModeでは、デジタル入力・出力およびソフトウェアPWM・TONE出力の設定行なえるので省略

<内側 外側>
Mode 機能 定数 物理ピン番号 定数 機能 Mode
3.3V 1 2 5V
SDA #GPIO2 3 4 5V
SCL #GPIO3 5 6 GND
CLOCK D7 #GPIO4 7 8 #GPIO14
GND 9 10 #GPIO15
D0 #GPIO17 11 12 #GPIO18 D1,PWM0 PWM
D2 #GPIO27 13 14 GND
D3 #GPIO22 15 16 #GPIO23 D4
3.3V 17 18 #GPIO24 D5
MOSI #GPIO10 19 20 GND
MOSO #GPIO9 21 22 #GPIO25 D6
SCLK #GPIO11 23 24 #GPIO8 CE0
GND 25 26 #GPIO7
#GPIO0 27 28 #GPIO1
#GPIO5 29 30 GND
#GPIO6 31 32 #GPIO12 PWM0 PWM
PWM PWM1 #GPIO13 33 34 GND
PWM PWM1 #GPIO19 35 36 #GPIO16
#GPIO26 37 38 #GPIO20
GND 39 40 #GPIO21

モード値

#GPIOMODE_IN デジタル入力
#GPIOMODE_OUT デジタル出力
#GPIOMODE_PWM ハードウェアPWM出力
#GPIOMODE_CLOCK CLOCK出力
#GPIOMODE_SOFT_PWM ソフトウェアPWM出力
#GPIOMODE_SOFT_TONE ソフトウェアTONE出力

※ソフトウェアPWM・TONE出力を利用することで動作が遅くなります。

' INPUT
GPIOMODE 3,#GPIOMODE_IN
GPIOPUD 3,1
?GPIOIN(3)

GPIOPUD ピン番号,モード値

指定したピン番号のピンのプルアップ/ダウンを設定

引数

ピン番号

・物理ピン番号または定数( #GPIO0 ~ #GPIO27 )
・ピンアサインとModeの対応については、GPIOMODE の説明を参照

モード値

0 無効
1 プルダウン
2 プルアップ

※GPIOMODEの例をご覧ください

変数=GPIOIN( ピン番号 )

指定したピン番号のデジタル入力の状態(0/1)を取得

引数

ピン番号

・物理ピン番号または定数( #GPIO0 ~ #GPIO27 )
・ピンアサインとModeの対応については、GPIOMODE の説明を参照

戻り

指定したピン番号の入力状態

・指定したピンのIOモードがデジタル入力に設定されていない場合は無効値(-1)を返す

※GPIOMODEの例をご覧ください

変数=GPIOIN()

8ビットI/O入力の状態(0~255)を取得

・8ビットI/O全8ピンのIOモードをデジタル入力に設定しておくこと
・D0~D7のビット順は反転して取得されます

戻り

指定したピン番号の入力状態

・8ビットI/Oに用いられるピンの8つのうち、どれもIOモードがデジタル入力に設定されていない場合は無効値(-1)を返す

V=GPIOIN()

GPIOOUT ピン番号,出力値

指定したピン番号へデジタル値出力

引数

ピン番号

・物理ピン番号または定数( #GPIO0 ~ #GPIO27 )
・ピンアサインとModeの対応については、GPIOMODE の説明を参照

出力値

・指定したピン番号のピンに設定したIOモードによって機能が異なる

デジタル出力モード デジタル出力の状態を設定 (0:出力しない 1:出力)
PWM出力モード PWMのデューティ比を設定 (範囲:0~GPIOHWPWMで設定した分解能)
CLOCK出力モード クロック出力の周波数(Hz)を設定 (範囲:4,688Hz~9,600,000Hz)
ソフトウェアPWM出力モード PWMのデューティ比を設定 (範囲:0~100)
ソフトウェアTONE出力モード 出力する音程(Hz)を設定 (範囲:0Hz~5,000Hz)

※PWM出力モードではデューティ比が連動するピンが存在します。(ピン番号12と32の機能PWM0、ピン番号33と35の機能PWM1)

GPIOOUT 18,1

GPIOOUT 出力値

8ビットI/Oへの各デジタル値出力

引数

出力値

0~255

GPIOOUT &HC3

GPIOHWPWM [出力モード値],[クロック分周値],[分解能]

PWM出力に関連するパラメータを設定

・ソフトウェアPWM出力には影響しません
・パラメータを省略した場合は、現在の設定のまま変更されません

引数

出力モード値

PWM出力波形の選択

0 mark:space(サーボモータの制御に向く)
1 balanced(LEDの明度制御に向く)

クロック分周値

PWMクロックの分周を設定(範囲:2~4096)
・元クロックは19.2MHzとなります。

2 9.6MHz
4 4.8MHz
8 2.4MHz
16 1.2MHz
32 600kHz
64 300kHz
128 150kHz
256 75kHz
512 37.5kHz
1024 18.75kHz
2048 9.375kHz
4096 4.6875kHz

分解能

クロックの分解能(範囲:0~4,294,967,295)

' PWM
GPIOMODE 18,0
GPIOMODE 18,2
GPIOOUT 18,50
GPIOHWPWM 0,1,100

I2CSTART [ クロック周波数 ]

I2Cを有効化

・使用するピンのGPIOMODEを切り替え
・I2Cを有効にできない場合、Internal Errorとなる

引数

クロック周波数

3,815 ~ 1,689,000Hz(省略時、現在の設定を維持)

'--- I2C EEPROM
I2CSTART
DIM BUF1[3]
BUF[2]=25
I2CSEND &H50,BUF1'SEND DATA
I2CSEND &H50,BUF1,2'SET ADDR
?I2CRECV(&H50)
I2CSTOP

I2CSTOP

I2Cを無効化

・使用したピンのGPIOMODEをデジタル入力へ切り替え
・I2Cを無効にできない場合、Internal Errorとなる

※I2CSTARTの例をご覧ください

変数=I2CRESULT()

I2CでRECV又はSEND命令を使用した際の処理結果

・I2Cを有効にできない場合、Internal Errorとなる

戻り

TRUE:成功、FALSE:失敗

R=I2CRESULT()

変数=I2CRECV( デバイスアドレス )

指定したI2Cデバイスから8ビットのデータを受信

・処理結果はI2CRESULT命令にて取得できます
・I2Cを有効にできない場合、Internal Errorとなる

引数

デバイスアドレス

0~127

戻り

・I2Cデバイスからの8ビット値(0~255)
・処理に失敗した場合は-1が返る

※I2CSTARTの例をご覧ください

I2CRECV デバイスアドレス, 配列変数 [,サイズ]

指定したI2Cデバイスへ8ビットの配列データを受信

・処理結果はI2CRESULT命令にて取得できます
・I2Cを有効にできない場合、Internal Errorとなる

引数

デバイスアドレス

0~127

配列変数

I2Cデバイスから受信するデータが格納される配列変数(1つの要素は8ビット分の値)
・サイズを省略した場合、要素数の範囲は最大8192個まで

サイズ

配列の要素数
.要素数の範囲は最大8192個まで

※I2CSTARTの例をご覧ください

変数=I2CRECV8( デバイスアドレス,レジスタ番号 )

指定したI2Cデバイスの指定したレジスタから8ビットのデータを受信

・リピートスタートコンディションを使用し受信
・処理結果はI2CRESULT命令にて取得できます
・I2Cを有効にできない場合、Internal Errorとなる

引数

デバイスアドレス

0~127

レジスタ番号

0~255

戻り

・I2Cデバイスからの8ビット値(0~255)
・処理に失敗した場合は-1が返る

V=I2CRECV8(&H32,0)

変数=I2CRECV16( デバイスアドレス,レジスタ番号 )

指定したI2Cデバイスの指定したレジスタから16ビットのデータを受信

・リピートスタートコンディションを使用し受信
・2Byte(16Bit)のデータはLSB First
・処理結果はI2CRESULT命令にて取得できます
・I2Cを有効にできない場合、Internal Errorとなる

引数

デバイスアドレス

0~127

レジスタ番号

0~255

戻り

・I2Cデバイスからの8ビット値(0~65535)
・処理に失敗した場合は-1が返る

V=I2CRECV16(&H32,0)

I2CSEND デバイスアドレス, データ

指定したI2Cデバイスへ8ビットのデータを送信

・処理結果はI2CRESULT命令にて取得できます
・I2Cを有効にできない場合、Internal Errorとなる

引数

デバイスアドレス

0~127

データ

0~255

※I2CSTARTの例をご覧ください

I2CSEND デバイスアドレス, 配列変数 [,サイズ]

指定したI2Cデバイスへ8ビットの配列データを送信

・処理結果はI2CRESULT命令にて取得できます
・I2Cを有効にできない場合、Internal Errorとなる

引数

デバイスアドレス

0~127

配列変数

I2Cデバイスへ送信するデータが格納された配列変数(1つの要素は8ビット分の値)
・要素が範囲外の場合は、0以下の値は0、255以上の値は255となる
・サイズを省略した場合、要素数の範囲は最大8192個まで

サイズ

配列の要素数
・要素数の範囲は最大8192個まで

※I2CSTARTの例をご覧ください

I2CSEND8 デバイスアドレス, レジスタ番号, データ

指定したI2Cデバイスの指定したレジスタへ8ビットのデータを送信

・処理結果はI2CRESULT命令にて取得できます
・I2Cを有効にできない場合、Internal Errorとなる

引数

デバイスアドレス

0~127

レジスタ番号

0~255

データ

0~255

I2CSEND8 &H32,0,25

I2CSEND16 デバイスアドレス, レジスタ番号, データ

指定したI2Cデバイスの指定したレジスタへ16ビットのデータを送信

・2Byte(16Bit)のデータはLSB First
・処理結果はI2CRESULT命令にて取得できます
・I2Cを有効にできない場合、Internal Errorとなる

引数

デバイスアドレス

0~127

レジスタ番号

0~255

データ

0~65535

I2CSEND16 &H32,0,&H2525

SPISTART クロック周波数,タイミング方式

指定されたクロック周波数とタイミング方式でSPIを有効化

・使用するピンのGPIOMODEを切り替え
・SPIを有効にできない場合、Internal Errorとなる

引数

クロック周波数(Hz)

3,815 ~ 125,000,000 Hz

タイミング方式

0 CPOL=0、CPHA=0
1 CPOL=0、CPHA=1
2 CPOL=1、CPHA=0
3 CPOL=1、CPHA=1
' SPI D/A
SPISTART 5000000,3
DIM BUF2[2]
BUF3[0]=&B01010000
BUF3[1]=&HFF
SPISEND BUF3
SPISTOP

SPISTOP

SPIを無効にする

・I2CSTARTにより切り替えられたピンのGPIOMODEをデジタル入力へ切り替え
・SPIを無効にできない場合、Internal Errorとなる

※SPISTARTの例をご覧ください

SPIRECV 配列変数 [,サイズ]

SPIデバイスから8ビットの配列データを受信

・SPIを有効にできない場合、Internal Errorとなる
・負数や配列定義要素数を超えたサイズを指定すると Out of range エラー

引数

配列変数

SPIデバイスから受信したデータを格納する配列変数(1つの要素には8ビット分の値が格納される)
・サイズを省略した場合、要素数の範囲は最大4096個まで

サイズ

配列の要素数
・要素数の範囲は最大4096個まで

DIM WORK%[256]
SPIRECV WORK%,256

SPISEND 配列変数 [,サイズ]

SPIデバイスへ8ビットの配列データを送信

・SPIを有効にできない場合、Internal Errorとなる
・負数や配列定義要素数を超えたサイズを指定すると Out of range エラー

引数

配列変数

SPIデバイスへ送信するデータが格納された配列変数(1つの要素は8ビット分の値)
・要素が範囲外の場合は、0以下の値は0、255以上の値は255となる
・サイズを省略した場合、要素数の範囲は最大4096個まで

サイズ

配列の要素数
・要素数の範囲は最大4096個まで

※SPISTARTの例をご覧ください

SPISENDRECV 配列変数 [,サイズ]

SPIへ8ビットの配列データを送受信

・SPIを有効にできない場合、Internal Errorとなる
・負数や配列定義要素数を超えたサイズを指定すると Out of range エラー

引数

配列変数

SPIデバイスへ送受信するデータを格納する配列変数(1つの要素は8ビット分の値)
・送信時、要素が範囲外の場合は、0以下の値は0、255以上の値は255となる
・サイズを省略した場合、要素数の範囲は最大4096個まで

サイズ

配列の要素数
・要素数の範囲は最大4096個まで

DIM WORK%[256]
FOR I=0 TO 255:WORK%[I]=RND(256):NEXT
SPISENDRECV WORK%,256

↑目次に戻る