Hatena::ブログ(Diary)

【na】

2017-02-26

進捗

マニュアル/パーツリストの印刷、ひたすら八・四折が終わって、やっとこさ箱詰め完了。週末一杯かかってしまった。
ラベルも一枚だけつくって貼ってみた。つくるの地味に時間かかる…。今週はラベル作成+張り付けで終わる気がする。
f:id:brown_wizrobe:20170226215114j:image

2017-02-05

準備着々

4種とも試作テスト完了。2ヶ所修正、一つは定数の変更のみで済んだけれど、もう片方は追加の抵抗取り付けですよ。
f:id:brown_wizrobe:20170205143937j:image
持っていく数が読めないけれど、まずは着々と袋詰めですよ。

本日の昼食。

赤ペヤング。貴重な高ダバリティ仕様パッケージ版。
f:id:brown_wizrobe:20170205143936j:image

2017-01-05

第6回MI68

おてまみ着いたー
f:id:brown_wizrobe:20170105231706j:image
基板も着いたー(これからチェック)
f:id:brown_wizrobe:20170105231705j:image

と、いうわけで参加確定です。
前回展示のモジュール4種の頒布見込みでーす。

おまけ

撮影したのに忘れてた、
わかめMax わかめマシマシ
f:id:brown_wizrobe:20170105231707j:image

2016-08-15

第5回MI68

すーっかり忘れていたが第6回の開催日案内見て何も書いてなかったのを思い出したので、いまさらながら展示していた内容を。

展示は大きく系統分けすると、

  • Re:Birth用モジュール
  • FM MIDI音源+デジタル出力

の2つ。

順に解説する。

モジュール

モジュールは以下の4種類。

  • i8253モジュール
  • uPD7756モジュール
  • Line-Inモジュール
  • 起動音モジュール

これに加えて

  • ちょい足し拡張ボード
  • コントローラボード(拡張ボード直挿し用)
  • 出力ボード(拡張ボード直挿し用)

その他機材を含めた全体の構成は下図のとおり。

f:id:brown_wizrobe:20160815191226p:image

i83253モジュール(BEEP音モジュール)

intel 8253(または互換のIC)でBEEP音を鳴らすモジュール。
展示時には互換ICのuPD8253Aを使用した。
8253はProgrammable Interval Timerを呼ばれBEEP音のほかにも、一定周期の割り込みを発生させる・RS232のクロックを生成する等の用途に使用される。
このモジュールではBEEP音のみに使用するため、3chとも利用可能である。
MI68ではMIDIキーボードで演奏可能(3音まで和音可)の状態で展示した。

uPD7756モジュール(燃えプロモジュール)

uPD7756(燃えプロ等の音声IC)を使用したモジュール。
音声データを内蔵しているため、IC単体で利用できる。
説明は省略していたが、連打(ボボボボボボボール)が出来るように作成されている。
MI68ではMIDIパッドで演奏可能展示。
ベロシティ対応のパッドであることがうまく説明できなかった点はミスった。
ベラボースイッチで例えればよかったかもしれない。

Line Inモジュール

追加のライン入力を使用できるようにするモジュール。
第一版は2年ほど前の夏にはすでに出来ていたりもする。
基板半分はまるまる空きでユニバーサル基板状態となっているため、
モジュール試作にもそこそこ流用しやすかったりする。

起動音モジュール

某国民機の起動ピポ音を電源投入時にならす、唯それだけのモジュール。
基板上のボタン(実際にはマイコンのリセットボタンである)を押しても鳴らせる。
16通りの音長設定が可能であり、MI68では(旧愛機である)RX2に近い設定にしておいた。
ちなみに、音高を変えるのにはシステムクロックを置き換える必要があったはずで、
232Cやら拡張ボードの動作を考えると難度の高い改造のはずなのだが、
音高に言及した人が多かったのは何故だろう?

ちょい足し拡張ボード

モジュール2枚が挿せる拡張ボード。
各スロット毎に

  • マザーボードから供給されるクロック
  • ボード上のクロック
  • ボード上のクロックを2分周したもの
  • 同4分周したもの

のいずれかを供給可能。

コントローラボード(拡張ボード直挿し用)

ファームウェアが出来ていないため、単純に電源供給口として使用。
当然のことながら、制御がかち合うためReBirthのマザーボードが接続されている場合には共用できない。

出力ボード(拡張ボード直挿し用)

音の取り出しに使用。
回路の性質上、ReBirthのマザーボードとは共用できない。

FM MIDI音源+デジタル出力

構成は下図の通り。

f:id:brown_wizrobe:20160815191224p:image

小型MIDIキーボード

13鍵。和音もOK。タクトスイッチのためベロシティは横のスライダで指定。
オクターブ変更可。ちょっとした動作確認用に。

OPMシールド/OPNシールド/OPL(OPL2)シールド

光デジタル出力ボードとの組合せ用に設計されている。
アナログ出力が必要なら空きスペースがユニバーサル基板になっているのでなんとか入るかもしれない。
実は少量ながら基板のみで某所に委託してあったりする。

光デジタル出力ボード

YM3014の変わりに取り付けて光デジタル出力が可能。
第1回のMI68でも出てたもの(デモは3016代用の方だけど)。
これも完成品が某所に委託してあったりする。

第6回MI68

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

2016-01-09

秋月LCD

http://d.hatena.ne.jp/brown_wizrobe/20151230/1451491367

これ、アクリル切り出しをemerge+さんに頼んだんだけれど、
先方で勝手にパクって作ってるんじゃないかという疑いが。
https://twitter.com/emergeplus/status/684251073524006912
と同じくらいの向きで写真取ってみた。
f:id:brown_wizrobe:20160109133649j:image

2015-12-30

秋月LCDケース

しばらく前に作った秋月IGZOなLCDケース。
アクリル板積みタイプです。
何ヶ所かしくじった所があるけれども、ノコギリとドリルでカバー。
f:id:brown_wizrobe:20151231010056j:image
RasPi2上のFreeBSD(11-Current)でも動作。字が小さい。
f:id:brown_wizrobe:20151231010055j:image

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

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

2015-12-29

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

こっちもテストから行きます。

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

スイッチテスト。
今回は使用しないですが、念のため。

#include<avr/io.h>

int main(){
  uint8_t x;

  DDRB = 0x06;  // PB1, PB2=OUT
  x=PINB;
  if( x & _BV(4)) {
    PORTB = 0x04; // PB1=L, PB2=H
  }
  else {
    PORTB = 0x02; // PB1=H, PB2=L
  }
  while(1);
}

問題なくOK。

DACテスト。305Hzの矩形波がでてくるはずです。

#include<avr/io.h>
#include<avr/interrupt.h>
#include<avr/sleep.h>
#include<avr/cpufunc.h>
#include<stdint.h>

EMPTY_INTERRUPT( TIMER0_OVF_vect );

int main(){
  uint8_t ctr = 0;
  uint8_t fast = 0;
  DDRB = 0x29;  // PB[0,3,5]=OUT
  PORTB = 0x10; // PB0=LRCK=LO, PB4 PUP

  if( PINB & 0x10 ) fast = 1;
  SPSR = 0x01;
  SPCR = 0x70;

  set_sleep_mode( SLEEP_MODE_IDLE );
  sleep_enable();

  // 20MHz/8/256/4/8=305Hz
  TCCR0A = 0x00;
  TCNT0 = 0x00;
  TIMSK0 = 0x01; // OVF
  TCCR0B = 0x02;

  sei();
  if( fast ) {
    while(1){
      register uint8_t lo8 = 0x00;
      register uint8_t hi8 = ((ctr&0x10)?0x01:0x00);
      sleep_cpu();
      asm volatile("out %[spdr],%[hi8]\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t" "nop\n\t"
"out %[spdr], %[lo8]\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" 
::[spdr] "I" (_SFR_IO_ADDR(SPDR)), [hi8] "r"(hi8),[lo8] "r"(lo8));
      PINB = 0x01;
      ++ctr;
      ctr &= 31;
    }
  }
  else {
    while(1){
      register uint8_t lo8 = 0x00;
      register uint8_t hi8 = ((ctr&0x10)?0x01:0x00);
      sleep_cpu();
      asm volatile("out %[spdr],%[hi8]\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
"out %[spdr], %[lo8]\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
"nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"
::[spdr] "I" (_SFR_IO_ADDR(SPDR)), [hi8] "r"(hi8),[lo8] "r"(lo8));
      PINB = 0x01;
      ++ctr;
      ctr &= 31;
    }
  }
}

SPIの送信タイミングの確認を兼ねてます。
で、右しか聞こえない問題発覚。半田付けミスでした。
つけ直したらOK。両方から聞こえます。
ちょっと波形がアレですが気にしないことにします。
f:id:brown_wizrobe:20151230001013p:image