ファンクション・ジェネレータ このプログラムの説明は,CQ出版社「トランジスタ技術」の2021年10月号から開始された連載記事「STM32マイコンではじめるPC計測」の中にあります.このプログラムといっしょに使うPC側のプログラムについても同誌を参照してください.

Dependencies:   Array_Matrix mbed SerialTxRxIntr MyTicker7

Committer:
MikamiUitOpen
Date:
Thu Sep 09 08:50:21 2021 +0000
Revision:
0:53c0fa8a9aa2
Child:
1:0430f1ed6c2c
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:53c0fa8a9aa2 1 //---------------------------------------------------------
MikamiUitOpen 0:53c0fa8a9aa2 2 // M 系列信号発生器(N = 16)
MikamiUitOpen 0:53c0fa8a9aa2 3 //
MikamiUitOpen 0:53c0fa8a9aa2 4 // 2021/08/23, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 0:53c0fa8a9aa2 5 //---------------------------------------------------------
MikamiUitOpen 0:53c0fa8a9aa2 6
MikamiUitOpen 0:53c0fa8a9aa2 7 #include "mbed.h"
MikamiUitOpen 0:53c0fa8a9aa2 8
MikamiUitOpen 0:53c0fa8a9aa2 9 #ifndef MSEQ16_HPP
MikamiUitOpen 0:53c0fa8a9aa2 10 #define MSEQ16_HPP
MikamiUitOpen 0:53c0fa8a9aa2 11
MikamiUitOpen 0:53c0fa8a9aa2 12 namespace Mikami
MikamiUitOpen 0:53c0fa8a9aa2 13 {
MikamiUitOpen 0:53c0fa8a9aa2 14 class MSeq16
MikamiUitOpen 0:53c0fa8a9aa2 15 {
MikamiUitOpen 0:53c0fa8a9aa2 16 public:
MikamiUitOpen 0:53c0fa8a9aa2 17 MSeq16() : reg_(1) {}
MikamiUitOpen 0:53c0fa8a9aa2 18
MikamiUitOpen 0:53c0fa8a9aa2 19 // 戻り値: 1 => 1, 0 => -1
MikamiUitOpen 0:53c0fa8a9aa2 20 float Execute()
MikamiUitOpen 0:53c0fa8a9aa2 21 {
MikamiUitOpen 0:53c0fa8a9aa2 22 if ((reg_ & B_M_) == B_M_)
MikamiUitOpen 0:53c0fa8a9aa2 23 {
MikamiUitOpen 0:53c0fa8a9aa2 24 reg_ = ((reg_ ^ XOR_) << 1) | 1; // 1 の場合の処理
MikamiUitOpen 0:53c0fa8a9aa2 25 return 0.5f;
MikamiUitOpen 0:53c0fa8a9aa2 26 }
MikamiUitOpen 0:53c0fa8a9aa2 27 else
MikamiUitOpen 0:53c0fa8a9aa2 28 {
MikamiUitOpen 0:53c0fa8a9aa2 29 reg_ = reg_ << 1; // 0 の場合の処理
MikamiUitOpen 0:53c0fa8a9aa2 30 return -0.5f;
MikamiUitOpen 0:53c0fa8a9aa2 31 }
MikamiUitOpen 0:53c0fa8a9aa2 32 }
MikamiUitOpen 0:53c0fa8a9aa2 33 private:
MikamiUitOpen 0:53c0fa8a9aa2 34 static const uint16_t XOR_ = (1 << (2-1))
MikamiUitOpen 0:53c0fa8a9aa2 35 | (1 << (3-1))
MikamiUitOpen 0:53c0fa8a9aa2 36 | (1 << (5-1)); // XOR の位置に対応する定数
MikamiUitOpen 0:53c0fa8a9aa2 37 static const uint16_t B_M_ = 1 << (16-1); // 16 段目に相当するビットを調べる
MikamiUitOpen 0:53c0fa8a9aa2 38
MikamiUitOpen 0:53c0fa8a9aa2 39 uint16_t reg_;
MikamiUitOpen 0:53c0fa8a9aa2 40 };
MikamiUitOpen 0:53c0fa8a9aa2 41 }
MikamiUitOpen 0:53c0fa8a9aa2 42 #endif // MSEQ16_HPP