(進捗)アナログシンセ、BareMetalラズパイなど
今日の進捗
-
MP3プレイヤー完成
-
ステップシーケンサのトライ
-
アナログシンセ実験完了
-
BareMetalラズパイ UART実装
MP3プレイヤー完成
午前中に投稿したエントリの通り。お手軽簡単な割に実用性が高くて、良き。
ステップシーケンサの試作
LEDとSW各12個を並べて、ステップシーケンサを作った。一定時間毎にステップが進み、SWを押してステップのON/OFFをして、ステップがONのときにMIDIノートオンが送信される、という単純なもの。AVRのタイマーを使ってマトリックススキャンとLEDの輝度調整(ON時間の調整)をする練習。
アナログシンセの実験完了
ちなみに、動作原理についてはまだよく分かっていません。どなたか分かる方がいらっしゃれば、ぜひ理解のヒントなどを頂けると嬉しいです。
今回ブレッドボードではなくPWBを起こして実験基板を作ってしまったので、部品をとっかえひっかえしながら計測ができなかった。回路原理を深く考える時は、ブレッドボードに組むのが良さそう*2。また今度時間のある時にやってみよう。
BareMetalラズパイ UART実装
先日Lチカが終わったラズパイ、今日はUART(シリアル通信)を実装した。これも環境構築と同じで、本の通りにやっても成功せず苦労した。具体的には、
-
ラズパイは3.3V動作なので3.3VのシリアルI/Fが必要
-
送信値と受信値が合わない
という問題に遭遇。前者は手持ちのレベル変換モジュールを使って解決。後者はESP8266で同じ動作をするハードを作ってオシロで波形を比較することで原因を発見。…と一言で書くと大したことは無いけど、ま〜苦労した。いくつか「おまえが原因か!」と得心したポイントがあったけど、一例を挙げると以下2枚の写真の違いとか(答えは脚注に書いておきます*3)。
結論として、Clock Managerの周波数が3MHzではないらしいことが根本的な問題だった。分かった後で本をよく読むと「elinuxのサイトによれば」と微妙な表現で書かれているし、自分が使っているボードの素性も微妙*4なので、仕方ない。なお同じ道を歩く人のため超具体的に書くと、僕のボードでは*UART0_IBRDを26に、*UART0_FBRDを8にすると、うまく通信できました(ボーレートが115200付近になりました)。
UARTが使えれば、MIDIが使えるようになる。楽器には欠かせない要素なので、解決できてよかった。