電子工作

バグ原因分かった

演奏してるとch1,ch2が鳴らなくなってch0のみになってしまうことがある。原因不明。 の原因判明。2つあった。[1] WR#信号を時間が短い out PINC, R16 ; WR# HI->LO ; CTR#2 out PINC, R16 ; WR# LO->HI ; CTR#2 のように連続して下げ上げしてたが、i8253(と…

第6回MI68

モジュール4種が頒布できたらいいな… MIDIキーボードは要望多ければ考えますかね。

第5回MI68

すーっかり忘れていたが第6回の開催日案内見て何も書いてなかったのを思い出したので、いまさらながら展示していた内容を。展示は大きく系統分けすると、 Re:Birth用モジュール FM MIDI音源+デジタル出力 の2つ。順に解説する。 モジュール モジュールは以下…

MINO-o'-2016 2. あーうー

ううっ、ファーム書き終りませんでしたぁ… 明日は昼前から夜まで用事が入ってしまったため更新不可、つまり年内には終らないということに。 残りは年明けてからぼちぼちと行きます。

MINO-o'-2016 3. テストFW

こっちもテストから行きます。LEDテスト。 キーボードの時と同じなのでコードは略。 今回は引っかかりました。昨日書いたDACの罠にかかってMCUへの書き込みが出来なかったのです。DACへの線と書き込みの線が共有だからですね。180度回して付け直したらOK。LE…

MINO-o'-2016 4. AW、実装

AWです。今回は部品数が少なめで表面実装品を使ったのでかなりスカスカです。半分くらいの基板サイズでもよかったかもしれません。 右下側がアナログ、左側がデジタルです。 で、これを実装したのがこれ。部品サイズ間違ってるのを無理矢理付けてたりしてま…

MINO-o'-2016 5. 回路

回路設計です。キーボードに比べてシンプルですので一回で片付けてしまいましょう。まず、MIDI IN。規格まんまですね。でも280Ωの抵抗はないですから、270か300あたりで代用になります。丁度でないと気分が悪いという方は560Ωを2個並列にしましょう。 デジタ…

MINO-o'-2016 6. 後半戦。仕様

後半戦です。昨日MIDIケーブルを作ったことから予想されるように、音源を作りましょう。 HW仕様としては MIDI IN * 1 MIDI OUT,THRUなし 電源はUSBコネクタから。ACアダプタ邪魔だし φ3.5ジャック、とりあえずステレオ 出力ボリューム 音生成と制御兼用MCU …

MINO-o'-2016 7. 中休み。MIDIケーブル作成

当初目標のMIDIミニキーボードが出来上がったので、後半戦…の前に一休み。MIDIケーブルを作っておきましょう。DIN5のコネクタを ばらしておきます。 で、ケーブルを用意します。2芯か4芯のシールド線で直径が5〜6mm程度の物がよいでしょう。コネクタのサイズ…

MINO-o'-2016 8. デバグ

さて、デバグのお時間です。 ハードウェアの問題はテストファームで確認済なので、ソフトウェアだけ考えればいいことになります。 とりあえず、音源接続はまだしないでおいて電源を入れます。…"Oc 4"と出てきません。SPIまわりをチェックです。 送信はレジス…

MINO-o'-2016 9. FW(6)

昨日は帰るやいなやBTNQでした。では続きです。(昨日の予定分だった)メインループ while(1){ // check next cmd if( cmd_buffer_len == 0 ) { sleep_cpu(); continue; } uint8_t cmd = cmd_buffer[cmd_buffer_head]; cli(); ++cmd_buffer_head; --cmd_buffer…

MINO-o'-2016 11. FW(5)

初期化部分。 #define CMD_KEY_C_DOWN 0 #define CMD_KEY_CS_DOWN 1 #define CMD_KEY_D_DOWN 2 #define CMD_KEY_DS_DOWN 3 #define CMD_KEY_E_DOWN 4 #define CMD_KEY_F_DOWN 5 #define CMD_KEY_FS_DOWN 6 #define CMD_KEY_G_DOWN 7 #define CMD_KEY_GS_DOWN…

MINO-o'-2016 12. 基板チェック,FW(4)

基板のチェック項目漏れがありました。クロックとMIDI送信です。 クロックの方は外部クロックに切替えればチェックできます。7セグのテストがよいでしょう。 MIDIの方は今手元にすぐに使える機器が無いので省略。さて、チェック用ではなく実際のファームに入…

MINO-o'-2016 13. 基板チェック

さて、チェックに入りましょう。まず、電源をつなぐ前にテスタで0V-5Vがショートしてしまってないか確認です。ショートしてたらがんがって修正です。これが終るまで電源をつないではイケマセン。電源をつないだら、ファームを書く前に パイロットランプの点…

MINO-o'-2016 14. 半田づけ

さて、基板も届いたので半田づけ開始です。届いたのがこれ。今回はシルク印刷が残念な出来です。 部品は取り付けたときに背の低い順に付けます。裏から半田漬けする時に浮いてしまいますからね。今回はトップバッターはダイオードです。これを足を曲げて、 …

MINO-o'-2016 15. FW(3)

テスト用ファーム、その3。ボタンテスト。 #include<avr/io.h> #include<avr/interrupt.h> #include<avr/sleep.h> #include<avr/cpufunc.h> #include<stdint.h> #define LATCH595() do{\ PORTB &= ~(1<<0);\ _NOP();\ PORTB |= (1<<0);\ } while(0) #define SEND2SPI2(p,s) do{\ SPDR = (p);\ while(SPSR&0x80);\ SPDR = (s);\ </stdint.h></avr/cpufunc.h></avr/sleep.h></avr/interrupt.h></avr/io.h>…

MINO-o'-2016 17. FW(2)

テスト用ファーム、その2。7セグテスト。 #include<avr/io.h> #include<avr/interrupt.h> #include<avr/sleep.h> #include<avr/cpufunc.h> #include<stdint.h> #define LATCH595() do{\ PORTB &= ~(1<<0);\ _NOP();\ PORTB |= (1<<0);\ } while(0) #define SEND2SPI2(p,s) do{\ SPDR = (p);\ while(SPSR&0x80);\ SPDR = (s);\ }</stdint.h></avr/cpufunc.h></avr/sleep.h></avr/interrupt.h></avr/io.h>…

MINO-o'-2016 18. FW(1)

書きかけが障害のせいで消えて気力激減中…基板が届いてないので順序を替えてファームウェア編をしばらく進めます。 とりあえず、テスト用ファームから。LEDテスト。単純に赤青のLEDが点灯するだけですが、ファームウェアの書き込み回路、LED近辺の回路のチェ…

MINO-o'-2016 19. 発注

準備はOKですか? では発注です。 今回はseeedstudioのFusionPCBを使用します。*1 なお、これは現時点での方法です。時々変わるのでご注意を。まず、ファイル8個(.TXT, .GML, .GTL, .GTS, .GTO, .GBL, .GBS, .GBOです)をzipでまとめます。中のファイルも外の…

MINO-o'-2016 20. 発注……の前に

発注に入る前にすることがあります。ガーバの確認です。 ビューアで確認しましょう。 外形線は途切れてないか? (.GML) 穴の位置はあってるか? (.GML+.TXT+.GTO) 手動でレジスト除外する所で忘れてるところは無いか?(.TXT+.GML+.GTL+.GTS, .TXT+.GML+.GBL+.GB…

MINO-o'-2016 21. AW(3)

予告通り昨日はお休みでした。で、基板つづきです。さて、配線ですが、密度もそんなに高くないですし、高速な信号もなく、アナログ部でノイズに五月蝿いところもないですから、とりあえず残りを適当に置いて繋げてみましたー、でも何とかなります。……何とか…

MINO-o'-2016 23. AW(2)

部品を置いていきましょう。 (後で配線を書きながら位置決めした部品もまとめて載せてしまってますが:)前回の制約の部分は一部色をつけてみました。 [赤] 白黒鍵のボタンは楽器キーボードと同様に配置する [紫] 白鍵ボタンより手前にはできるだけ部品を配置…

MINO-o'-2016 24. AW(1)

さて、回路図もできあがったので、基板お絵書きに入りましょう。 でも、その前にいったん制約条件を(当り前なものも含めて)書き出してみます。 白黒鍵のボタンは楽器キーボードと同様に配置する 白鍵ボタンより手前にはできるだけ部品を配置しない*1 四隅か…

MINO-o'-2016 25. 回路設計(5):落穂拾い

キーマトリクス、切替え側が4、読みだし側が5本であって、逆でないのは何故? 4だと処理中の桁の更新が ++column; column&=3;で済むからです。 5ならif(++column==5){ column=0; }でちょっとだけ処理が遅いですね。 MIDI出力回路 MCUの出力Hレベルが十分に高…

MINO-o'-2016 26. 回路設計(4)

今日は残りのコマい部分を片付けて行きましょう。 スライドボリュームの入力部です。ヒネりも何もないですね。 お好みならLPFを入れてもいいかもしれません。 抵抗のカーブは、MCU制御なのでBカーブが良いでしょう。 必要ならプログラムでどうとでもなります…

MINO-o'-2016 27. 回路設計(3)

今日は表示用の7セグLED。 今回、7セグのLEDにはこれを使用します。秋月にある中でサイズが一番小さいから、です。 4桁にするので、これを2個横並びにして使うわけですね。 で、これのつなぎ方は二通り考えられるわけです。こんなのと、 こんなの ですね。 …

MINO-o'-2016 28. 回路設計(2)

今日は呑み会があったために軽めに。MIDI出力回路です。 これは規格にリファレンス回路があるのでほぼそのままです。今時のMCUなら5mAやそこらは簡単に取れるでしょうから、トランジスタやFETの増幅回路は無くてもOKでしょう。

MINO-o'-2016 29. 回路設計(1)

さて、回路の設計に入ります。今日はキー(ボタン)です。 よくボタンで見るのはこんな回路でしょうか。ただ、今時だとチャタリング対処はMCU側でソフトウェア的にしてしまうことが多いのです。部品削減できますからね。ですので、対策部分をとりのぞくとこう…

MINO-o'-2016: 30. 仕様はどうしよう(HW編)

ちゃっちゃと決めていきましょう。ミニ、とつくくらいですから基板寸法からいきましょうか。 フリーのeagleで作れるのが10cm*8cmまでですから、このサイズにしてみましょう。0.6葉書くらいのサイズです。次に、鍵数です。 1オクターブで白鍵8黒鍵5、2オクタ…

MINO-o'-2016: 31.

速くも年の瀬。技術者もすなるあどべんとかれんだといふものを、一般人もしてみむとてするなり。……いや、私ゃ切支丹じゃないし。日本人ならこの時期に待つのは正月だよな!と言うわけでMINO-o'-2016(Mou Ikutsu Neruto Oshougatsu-of-2016)で。途中で力尽き…