CQエレクトロニクス・セミナで使用するファンクション・ジェネレータの プログラム

Dependencies:   Array_Matrix mbed SerialTxRxIntr MyTicker7

MSeq16.hpp

Committer:
MikamiUitOpen
Date:
2022-02-25
Revision:
0:8c8bc21159d9

File content as of revision 0:8c8bc21159d9:

//---------------------------------------------------------
//	M 系列信号発生器(N = 16)
//
//	2021/09/28, Copyright (c) 2021 MIKAMI, Naoki
//---------------------------------------------------------

#include "mbed.h"

#ifndef MSEQ16_HPP
#define MSEQ16_HPP

namespace Mikami
{
	class MSeq16
	{
	public:
		MSeq16() : reg_(1) {}

		// 戻り値: 0 => -0.5, 1 => 0.5
		float Execute()
		{
			msb_ = reg_ >> 15;
			reg_ = ((reg_ ^ XOR_[msb_]) << 1) | msb_;
			return RET_[msb_];
		}
	private:
		static const uint16_t XOR_[2];	// XOR の一方の入力
		static const float RET_[2];		// 戻り値として使用
		uint16_t reg_;	// 16 段の D フリップ・フロップに対応
		uint16_t msb_;	// 16 段目に相当するビット
	};
	const uint16_t MSeq16::XOR_[2] = { 0, 0x16 };
	const float MSeq16::RET_[2] = { -0.5f, 0.5f };	
}
#endif	// MSEQ16_HPP