このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
mas1xx_tips:use_msp430_via_i2c:msp430_di:start [2021/11/15 13:15] – 作成 admin | mas1xx_tips:use_msp430_via_i2c:msp430_di:start [2025/02/28 15:31] (現在) – admin | ||
---|---|---|---|
行 2: | 行 2: | ||
MA-E3xx シリーズでは CPLD により実装していた、チャタリング除去フィルター、カウンター の機能をマイコンで実装しています。\\ | MA-E3xx シリーズでは CPLD により実装していた、チャタリング除去フィルター、カウンター の機能をマイコンで実装しています。\\ | ||
- | 機能は I2C 経由で利用します。 | + | 機能は I2C 経由(Bus No.1, I2C-Address 0x4f)で利用します。 |
\\ | \\ | ||
行 13: | 行 13: | ||
|Filtered DI(R/ | |Filtered DI(R/ | ||
|::: | |::: | ||
- | |::: | + | |::: |
+ | |Raw DI(R/ | ||
+ | |::: | ||
+ | |::: | ||
+ | |DI Event Enable(R/ | ||
+ | |::: | ||
+ | |::: | ||
|DI Polarity(R/ | |DI Polarity(R/ | ||
- | |::: | + | |::: |
|::: | |::: | ||
|Counter Control (R/ | |Counter Control (R/ | ||
行 48: | 行 54: | ||
\\ | \\ | ||
+ | ===== サンプルプログラム ===== | ||
+ | |||
+ | ^ File ^ Stat ^ SHA1SUM | ||
+ | |{{ : | ||
+ | |||
+ | \\ | ||
+ | |||
+ | <codify nim> | ||
+ | import std/options | ||
+ | import std/ | ||
+ | import lib/msp430 | ||
+ | |||
+ | proc main() = | ||
+ | # ライブラリ初期化 | ||
+ | let di = newMsp430(1, | ||
+ | |||
+ | # Read DI Status | ||
+ | let di_stat_opt = di.get_di_status() | ||
+ | if di_stat_opt.isSome: | ||
+ | echo &" | ||
+ | |||
+ | # Read DI Polarity | ||
+ | let di_pol_opt = di.get_di_polarity() | ||
+ | if di_pol_opt.isSome: | ||
+ | echo &" | ||
+ | |||
+ | for idx in countUp(0, 4): | ||
+ | # Read DI Counter Enable | ||
+ | let enable_opt = di.get_counter_onoff(idx) | ||
+ | if not enable_opt.isSome: | ||
+ | continue | ||
+ | let enable = enable_opt.get() | ||
+ | if enable: | ||
+ | echo &" | ||
+ | else: | ||
+ | # Enable DI Counter | ||
+ | let res = di.onoff_counter(idx, | ||
+ | echo &" | ||
+ | |||
+ | # Read DI Counter Value | ||
+ | let val_opt = di.get_counter_val(idx) | ||
+ | if val_opt.isSome: | ||
+ | let val = val_opt.get() | ||
+ | echo &" | ||
+ | |||
+ | |||
+ | when isMainModule: | ||
+ | main() | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== Usage ==== | ||
+ | |||
+ | < | ||
+ | root@gemini: | ||
+ | * DI Value: @[0, 0, 0, 0, 0] | ||
+ | * DI Polarity: @[Rising, Rising, Rising, Rising, Rising] | ||
+ | * DI[0] Counter: set enable -> result: true | ||
+ | * DI[0] Counter Value: 0x00 | ||
+ | * DI[1] Counter: set enable -> result: true | ||
+ | * DI[1] Counter Value: 0x00 | ||
+ | * DI[2] Counter: set enable -> result: true | ||
+ | * DI[2] Counter Value: 0x00 | ||
+ | * DI[3] Counter: set enable -> result: true | ||
+ | * DI[3] Counter Value: 0x00 | ||
+ | * DI[4] Counter: set enable -> result: true | ||
+ | * DI[4] Counter Value: 0x00 | ||
+ | root@gemini: | ||
+ | * DI Value: @[0, 0, 0, 0, 0] | ||
+ | * DI Polarity: @[Rising, Rising, Rising, Rising, Rising] | ||
+ | * DI[0] Counter is enable. | ||
+ | * DI[0] Counter Value: 0x00 | ||
+ | * DI[1] Counter is enable. | ||
+ | * DI[1] Counter Value: 0x00 | ||
+ | * DI[2] Counter is enable. | ||
+ | * DI[2] Counter Value: 0x00 | ||
+ | * DI[3] Counter is enable. | ||
+ | * DI[3] Counter Value: 0x00 | ||
+ | * DI[4] Counter is enable. | ||
+ | * DI[4] Counter Value: 0x04 <----- OPT-Switch をポチポチ押した | ||
+ | </ | ||