ファンクション・ジェネレータ このプログラムの説明は,CQ出版社「トランジスタ技術」の2021年10月号から開始された連載記事「STM32マイコンではじめるPC計測」の中にあります.このプログラムといっしょに使うPC側のプログラムについても同誌を参照してください.
Dependencies: Array_Matrix mbed SerialTxRxIntr MyTicker7
Diff: MSeq16.hpp
- Revision:
- 0:53c0fa8a9aa2
- Child:
- 1:0430f1ed6c2c
diff -r 000000000000 -r 53c0fa8a9aa2 MSeq16.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MSeq16.hpp Thu Sep 09 08:50:21 2021 +0000 @@ -0,0 +1,42 @@ +//--------------------------------------------------------- +// M 系列信号発生器(N = 16) +// +// 2021/08/23, Copyright (c) 2020 MIKAMI, Naoki +//--------------------------------------------------------- + +#include "mbed.h" + +#ifndef MSEQ16_HPP +#define MSEQ16_HPP + +namespace Mikami +{ + class MSeq16 + { + public: + MSeq16() : reg_(1) {} + + // 戻り値: 1 => 1, 0 => -1 + float Execute() + { + if ((reg_ & B_M_) == B_M_) + { + reg_ = ((reg_ ^ XOR_) << 1) | 1; // 1 の場合の処理 + return 0.5f; + } + else + { + reg_ = reg_ << 1; // 0 の場合の処理 + return -0.5f; + } + } + private: + static const uint16_t XOR_ = (1 << (2-1)) + | (1 << (3-1)) + | (1 << (5-1)); // XOR の位置に対応する定数 + static const uint16_t B_M_ = 1 << (16-1); // 16 段目に相当するビットを調べる + + uint16_t reg_; + }; +} +#endif // MSEQ16_HPP \ No newline at end of file