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

Dependencies:   Array_Matrix mbed SerialTxRxIntr MyTicker7

Committer:
MikamiUitOpen
Date:
Wed Oct 06 12:20:04 2021 +0000
Revision:
1:0430f1ed6c2c
Parent:
0:53c0fa8a9aa2
2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:53c0fa8a9aa2 1 //---------------------------------------------------------
MikamiUitOpen 1:0430f1ed6c2c 2 // M 系列信号発生器(N = 16)
MikamiUitOpen 0:53c0fa8a9aa2 3 //
MikamiUitOpen 1:0430f1ed6c2c 4 // 2021/09/28, Copyright (c) 2021 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 1:0430f1ed6c2c 14 class MSeq16
MikamiUitOpen 1:0430f1ed6c2c 15 {
MikamiUitOpen 1:0430f1ed6c2c 16 public:
MikamiUitOpen 1:0430f1ed6c2c 17 MSeq16() : reg_(1) {}
MikamiUitOpen 0:53c0fa8a9aa2 18
MikamiUitOpen 1:0430f1ed6c2c 19 // 戻り値: 0 => -0.5, 1 => 0.5
MikamiUitOpen 1:0430f1ed6c2c 20 float Execute()
MikamiUitOpen 1:0430f1ed6c2c 21 {
MikamiUitOpen 1:0430f1ed6c2c 22 msb_ = reg_ >> 15;
MikamiUitOpen 1:0430f1ed6c2c 23 reg_ = ((reg_ ^ XOR_[msb_]) << 1) | msb_;
MikamiUitOpen 1:0430f1ed6c2c 24 return RET_[msb_];
MikamiUitOpen 1:0430f1ed6c2c 25 }
MikamiUitOpen 1:0430f1ed6c2c 26 private:
MikamiUitOpen 1:0430f1ed6c2c 27 static const uint16_t XOR_[2]; // XOR の一方の入力
MikamiUitOpen 1:0430f1ed6c2c 28 static const float RET_[2]; // 戻り値として使用
MikamiUitOpen 1:0430f1ed6c2c 29 uint16_t reg_; // 16 段の D フリップ・フロップに対応
MikamiUitOpen 1:0430f1ed6c2c 30 uint16_t msb_; // 16 段目に相当するビット
MikamiUitOpen 1:0430f1ed6c2c 31 };
MikamiUitOpen 1:0430f1ed6c2c 32 const uint16_t MSeq16::XOR_[2] = { 0, 0x16 };
MikamiUitOpen 1:0430f1ed6c2c 33 const float MSeq16::RET_[2] = { -0.5f, 0.5f };
MikamiUitOpen 0:53c0fa8a9aa2 34 }
MikamiUitOpen 1:0430f1ed6c2c 35 #endif // MSEQ16_HPP