Kitでシーケンサー基板を動かす「シーケンス入力用のデバイス」は長ったらしいので「シーケンサー基板」という名前にすることにした。Kitで動作させてみた。言っても、音を出す肝心のところはまだで、すかすかのUIのみのテストだ。Kitも3.3V駆動させている。Kit上で結線している黄色とオレンジのケーブルはUSB-UART(パソコンとのシリアル通信)用のものだ。Bridgeをやってみた&前回までの補足」シーケンサー基板には最初RESET線は入れてなかったが、デバッグがめんどくさいので入れてみた。これを入れておくとマスターをリセットするとシーケンサー基板にもリセットがかかるのでいちいちUSBケーブルを抜き差ししないで済む。スレーブを複数使う製作したシーケンス入力用のデバイスと別にブレッドボードでI2Cのスレーブ回路組んでI2Cスレーブの2個使いの実験してみた。Boardを想定しているI2Cのスレーブ・マスタのテストプログラムをいろいろ作っているので、どれがどれかわからなくてかなり混乱したが、なんとか動くようになった。このブログの記事を書きながら検証したのでなんとかなった感じだ(^q^;ブログは見てもらいたいという動機もあるが、やっぱ書いてる時や、後で参照するのにとても役に立つ。Board:0xAAに設定してやってみた。Studio(Slave2):ブレッドボードで組んだ回路https://github.com/ryood/Arduino_master_AVR_sleve/tree/master/Atmel%20Studio/I2C_2nd_Slave_Rx_Tx_ATMega88VArduino(Master)https://github.com/ryood/Arduino_master_AVR_sleve/tree/master/Arduino/master_double_slave_tx_rxメモ使おうと思っているSPIのグラフィクLCDはu8glibで動作確認されてるようなので、PSoCから直接制御するのはしんどそう。」と同じ回路でテストしてみた。処理としては、AVR(Slave)→Arduino(Master)AVRからタクトスイッチの押し下げ状態を含めた8Byteのデータを送信。Arduinoは受け取ったデータをSerial通信でパソコンに送る。Arduino(Maseter)→AVR(Slave)Arduinoから0..7の範囲でインクリメントした1Byteデータを送信。AVRは受け取ったデータの位置にあるLEDを点灯(LEDの点灯が流れる)。同時にタクトスイッチの押し下げ状態をORしてLEDを点灯。AVRはスレーブだがRX(受信)、TX(送信)両方の動作をする。I2C通信の開始時にマスターから送られる最初のI2Cアドレスの次のW/Rビットを見てRX、TXの処理に入る。データの送受信の処理はTWI割り込みルーチン内でTWIステータスコードでSwitch文で処理した。ほんとはRXモードのときにTX用のステータスコードを受け取った場合などの例外処理をしないといけないと思うが、かなりめんどくさそうなので今回は端折った。I2C2015年9月23日水曜日リズムマシンの全体の構想シーケンス入力用の基板は作ったが、これだけだとトラックごとの音色の変更ができないので、音色設定用のロータリーエンコーダーをあと3つ乗せた基板を作ることを考えた。普通のPOTだと音色トラックを切り替えた時に設定値がおかしくなる(上書きされる)。DTMでMIDIコンを使っていてもよくあるけど。配線の色分けは赤と黒は電源ライン。黄色はI2C/SPIのクロック、オレンジはI2C/SPIのSDA/MOSIにした。下に並んでる8個のタクト・スイッチでシーケンスを入力。右のタクトスイッチはシーケンスの1-8、9-16を切り替える。右上の2つのPOTで、テンポとマスターボリュームを設定。左のロータリーエンコーダーでトラック(Kick、Snare、Hihatなど)を切り替える。ロータリーエンコーダーの押し下げでシーケンスの再生(Run/Stop)を切り替える。ToDo:Runモードの時に下部のLEDを流れるように点灯させて再生中のノートを表示。(ナイトランナーナイトライダーみたいなやつ)再生中のノートはマスターから送ったほうが良さそうなので、I2Cのスレーブ送信・受信をの両方を実装する必要がありそう。BoardI2C接続(スレーブ送信)3つのロータリーエンコーダーで各トラックのLevel、Decay、Toneを設定。LEDはまだ決めてないが、シーケンスのパターンを切り替える用途に使えないかな?あんまり複雑にしたくないけど。この基板もAVRを乗せてI2Cスレーブとして動作させる予定。LCD128×64のグラフィックLCD。使う予定のLCDが3.3V駆動なので、全体を5V駆動させた時に3.3Vで動作させるためにリニアレギュレータを入れておく。SPIの信号線も5V、3.3Vを切り替えられるようにRで分圧する回路も入れる。LPFSPI接続PSoCを使うならDACは内蔵のものを使えばいいが、ArduinoとかNucleoとかでも使えるようにSPI接続のDACを使う予定。ハンダ付けでけたねちねちハンダ付けしてやっと完成(^q^/自作の3.3V-5V安定化電源で3.3V給電している。データはI2Cのスレーブとして出力するので、2線(+GNDライン)で接続してAruduinoでも使える。配線の交錯している部分には、はじめてポリウレタン線(0.26mm)を使ってみた。MorishitaさんがYoutubeで公開されている動画を参考にした。いつも使っているジュンフロン線と違ってハンダゴテで被覆を溶かしつつ予備ハンダができるので作業性はいい。ヘタするとすずメッキ線より楽かも。→使っているすずメッキ線が0.6mmと太いせいもあるかもしれない。ロジック回路ならすずメッキ線ももっと細くていいと思う。ポリウレタン線の難点は、ちゃんとハンダ付けできてるかどうかわかりにくい点。ルーペで確認しないとわからない。耐久性もちょっと心配。ユニバーサル基板で耐久性も何もないかもしれないが、下手にさわるとハンダが外れそうだ。慣れの部分もあると思うので今後も適宜使っていくつもりです。Kitで組んでみる?)グラフィックLCDを使ってみる波形用のメモリが足りなかったら外付けのEEPROMを使ってみる。使ってみて思ったのは下手に加工するよりも、AVRからの5Vp-pの出力を単純にPOTである程度減衰して出力できるようにしたほうが良さそうな気がしてきた。「もともと30MHzあたりのノイズが乗っているもんだ」と思って使えばこのクロックノイズも使いみちがあるかもしれない。「LME49600の特性」で見てみたが、矩形波の立ち上がりとか入力インピーダンスの影響を見るためにはAVRの出力をそのままの方がわかりやすい。調べたが、OPAMPやロジックICの特性も結局AVRの出力との比較してということになる。あきらめて出力部は単に「AVRのPWM出力+POTによる降圧」でやってみることにする。機能仕様インパルス応答:普通のOPAMPではインパルスの幅が狭すぎるとまともな応答をしないので、矩形波のDuty比を狭めることで擬似的に行うステップ応答:これもオシロのトリガーで引っ掛ければ矩形波で見れるGNDレベル:必要かどうかわからないが基板に余裕があればTLE2426でやることも想定AVRのPWMATMega328PのTimer/CounterのPWMのモードをもう少し調べてみた。PWM」モードの倍の周波数の波形を生成できるみたいだが、Duty比の設定がよくわからない。PWM」モードで考えた。ソース・コードはGithubで公開した。AVRとロジックICは電源を分けないとだめそうAVRのPWMの出力周波数を上げられるようにしたので、MHzレベルで測定してみた。74HC04AVRとロジックICの電源を分けて測定した。黄色:74HC04を通した2MHzだと波形の平坦な部分に乗っているクロックノイズより、立ち上がり、立ち下がり時のオーバーシュート、アンダーシュートが目立ってくる。どっちがいいか判断が難しい。→AVR直接の出力にもPOTを入れて減圧できるようにすればいいか?うーん。拡大してみると波形の平坦な部分のノイズは確かに減っている同一電源ロジックICもAVRと同じUSBからの電源にしてみた。ICの選定ロジックICでBufferやInverterならほとんどどれでも大差ないような気もするがもう少し測定してみた。ch1,ch2とも2V/divオシロの機能の以下の表示値を表にした。Shoot非反転の素子では以下の値も記録した。線で囲った値が一番優秀そうな値だ。オシロのキャプ画像はGithubにあげた。今回実験したのは74VHC0474VHCU0474VHC125だ。VHCシリーズはHCシリーズより高速化されているらしい。(あんまりよくわかってない)ハーフピッチなのでDIP変換基板に乗せてブレッドボードで実験してみた。ブレッドボードの配線は前回と同じものです。2段74VHC0474VHCU04どれがいいのかもっとちゃんと比較しないとわからない。立ち上がり波形しか見ていないが立ち下がりも比較しないとだめかなぁ。入力波形のあばれ矩形波だけのファンクションジェネレーターの出力のGNDに気休めに100uHのLを入れていたが、これを通さずに直接GNDに接続してみた。入力波形のクロックノイズ(と思しきもの)は増えるが、入力は系のあばれは減っている。入力波形に出ているクロックノイズはLなしでも出力ではきれいになくなっている。(前回のもの)入力に現れる振動はこのGNDに入れたLの影響くさい。ブレッドボード図を見てもバネっぽい図形だし、インダクタは電流の変化に対して抵抗する素子という意味でもこれが原因かなあどちらでもクロックノイズは取れているようなのでこのLは削除する方向で考えます。ICをいろいろ試してみた<追記:2015.09.14>実験したブレッドボード図を追加しました。</>発注しておいたICが届いたので実験してみた。何をしているかというと、「矩形波だけのファンクションジェネレーター」を作ってみたもののAVRのPWMで矩形波を出力しているが、AVRのクロック由来と思われる30MHz付近のノイズが乗ってしまうのでこれを除去したい。アナログ・フィルターやOPAMPを使ってノイズを除去しようと思うと矩形波の直角な感じがなまってしまってなかなか使いづらい。Bufferの74HC125を通してみたら、クロックノイズは低減されて矩形波の直角な感じも維持もしくは好ましい感じに整形されるみたいなので他のロジックICでもやってみることにした。Buffer74HC04と74HCU04の違いはバッファードとアンバッファードとあるが、アンバッファードの方はCMOSのInverter回路1発で反転、バッファードの方は反転回路を3個重ねて最後に反転出力にしているみたいだ。74HC4050は単なるバッファで中の回路は反転回路2段重ねみたいだ。実験回路AVRのPWM出力をロジックICに入力し、ロジックICの出力を1kΩのRで受けて波形を見ることにした(ブレッドボード図では負荷抵抗が10kΩになってますが1kΩで測定)GNDに入っているインダクタはGNDに乗っているクロックノイズを除去するための気休め。Bufferを2回通してみた74HC04(Inveter)反転素子なので位相も反転しています。Unbuffered)インバーターのバッファがないタイプ。このICをアンプとして使っている作例も結構あります。(秋月のキットとか)ブレッドボードの配線は74HC04と同じ。入力波形が暴れるので、矩形波だけのファンクションジェネレーターの出力をオシロに直結して見てみた入力波形(赤色の波形)が暴れなくなった(^q^;ロジックICを通した波形と比べるとクロックノイズは確実に低減されている。ロジックICにつないだ時に入力側に現れる振動の原因は何?と思って0.1uFのコンデンサーと1kΩのRを並列につないでみた波形の暴れはでてこない。デカップリング用の47uFの電解コンデンサーとVCC、GNDのテストピンを追加。RESET線は外した。一応RESET用のピン・ヘッダ―は残してある。基板図AVRの電源に入れる積セラをAVCC側に回した。部品をならべた今回は試作ということでケースに入れず基板むき出しの予定。