34one ダウンロードさせていただきました RSSフィード
 

リスト表示 | ツリー表示
ツリー全部最新の50件

1r0r0r0r0   34one ダウンロードさせていただきました

注意深く、観察(?)吟味させていただきます。

ありがとうございます。

返信2005/06/20 23:38:29

2r0r0r0r0   1  Re:34one ダウンロードさせていただきました

現在、一生懸命何を行っているのかソースをいったりきたりしております。

一つ質問なんですが、global.hというのは何をやっているのですか?

返信2005/06/21 06:26:03

3ChuckChuck   2  Re:Re:34one ダウンロードさせていただきました

WinAVR がその昔 avrgcc というパッケージで配布されていたとき、Volkerさんという人が GCCTESTという名のサンプルプログラム集を配布していました。UART関連(uart.c, uart.h)はその中の gcctest9 からソース流用((WinAVRでの推奨記述に合うように一部修整しています。)しています。

で、GCCTEST中で使われているいくつかの define が global.h に記述されている(かも)と思われるので、これも一緒に include している、と、こういうわけです。

返信2005/06/21 07:00:48

4r0r0r0r0   3  Re:Re:Re:34one ダウンロードさせていただきました

了解いたしました。

それにしてもTimer1の動作は難解です。

返信2005/06/21 07:14:12

5ChuckChuck   4  Re:Re:Re:Re:34one ダウンロードさせていただきました

状態遷移図があったほうがいいかもしれませんね。しばしお待ちを。

返信2005/06/21 13:08:49

6 5  このエントリーは削除されました

このエントリーは削除されました

返信2005/06/23 16:05:32

7ChuckChuck   6  Re:状態遷移図を描いてみました

補足解説です。

IDLE
初期状態
TRANS3
状態THREEへの遷移途中状態
THREE
3拍目が確定している状態
TRANS4
状態FOUR1への遷移途中状態
FOUR1
4拍目の前半部分の状態
FOUR2
4拍目の後半部分の状態。F8を出力している。
STABLE
F8を1拍あたり24回出力している定常状態。

0. 電源投入で初期状態に

1. ペダルが踏まれる(3拍目想定) timer0 と timer1 を0からスタート*1

2-1. timer0 で割り込まれたときにまだ踏まれている→3拍目を受信して状態THREEへ

2-2. timer0 で割り込まれたときに踏まれていない→ノイズとみなし初期状態へ

3. timer1がフルカウントして割り込まれる=4拍目が来ないでタイムアウト→初期状態へ

4. ペダルが踏まれる(時間内に4拍目がきたのかも)。timer0 を0からスタート。timer1 の値を beat_timeに記憶

5-1. timer0 で割り込まれたときにまだ踏まれている→確かに4拍目として、timer1を (65536-beat_time/2) にセットしてスタート*2して、状態FOUR1へ

5-2. timer0 で割り込まれたときに踏まれていない→ノイズとみなし初期状態へ

6 beat_time/2 で割り込みがかかった時点で 6 の遷移が起こる。それまでに beat_time/24 の演算がメインルーチンで完了しているはずなので、この値で割り込まれるようにtimer1をセット*3し、割り込みの回数を12個数えている。

7 最後でFAを出力し → 状態 STABLEへ遷移

8 STABLE状態にあっても、ペダルが踏まれると TRANS3 へ遷移して、全体の状態遷移を繰り返す。

*1:0からスタートすると、timer0はカウントアップして255を超えて再び0になったときに、timer1 は 65535 を超えて再び0になったときに割り込みがかかります。

*2:beat_time/2 だけカウントするとtimer1割り込みがかかります。

*3:65536 - beat_time/24

返信2005/06/21 14:21:52

8r0r0r0r0   7  Re:Re:状態遷移図を描いてみました

さっそくソースと照らし合わせて勉強してみます。

返信2005/06/21 22:04:11

9 8  このエントリーは削除されました

このエントリーは削除されました

返信2005/06/22 00:49:11

10r0r0r0r0   8  Re:Re:Re:状態遷移図を描いてみました

判定が難しいのかシビアなのかわかりませんが、操作にコツがいる感じですね。

返信2005/06/22 22:59:09

11ChuckChuck   操作にコツ

ボタン(ペダル)押しが認識されない感じでしょうか?

そうだとすると以下。

http://emusic.g.hatena.ne.jp/Chuck/20050616#p1動作の仕組み で説明している、

  • クロックは 8MHz を使う(暫定)
  • 8bit の timer0と 16bit の timer1を使用する
    • timer0 はボタン処理用で、使用時は 1/64 でプリスケールする
      • ペダルが踏まれると timer0 を1/64プリスケールでスタートする
      • 256カウントで割り込まれると、256*64/8M = 2.048msec
      • この時間が経ったらtimer0割り込みが掛かる。ペダルがまだ踏まれているかどうか再評価する。踏まれていない(2msecよりも短い)場合はノイズだったと見做す

という部分が当初想定したとおりに機能していない(= 2msec後の再評価 という考え方がよろしくない)のではないかと考えられます。

実験用にタクトスイッチを使用したとすると、これはかなり性能が良いですから、2msecよりも短い押釦時間を実現できます。そういえば私の実験環境(STK500のタクトスイッチ利用)でも、「一瞬クリック!」では押釦が認識されないことがあり、「ココロモチ、しっかり押す」とすると動作したことを思い出しました。

お試し的には 256カウントで timer0 割り込みとなっている部分をもっと短い時間になるように変更してみるか、1/64となっているtimer0のプリスケールを1/32とかに変更してみるという実験をしてみる価値はあると思います。

しかし実際に使用するスイッチで変わりますし、足で操作するからそれもまたポイントで、最終的には実際の環境で追い込んでいく*1必要があると考えています。

ユーザインターフェースは難しいですね。

*1:クロックが8MHzか4MHzか とか timer0 の割り込み時間。

返信2005/06/23 06:44:44

12ChuckChuck   11  ありゃ Re:操作にコツ

ありゃ、新しいスレッドになっちゃった。

返信2005/06/23 06:45:55

13r0r0r0r0   12  Re:ありゃ Re:操作にコツ

「ココロモチ、しっかり押す」にすると、いい感じになりますね。

実機は、足操作だから、足が勝手に「ココロモチしっかり」押してくれるかもしれませんしね。

僕は、タカチのMB-1と、サトー電気さんで売っているゲーム機用プッシュスイッチを使ってみようかと思っています。

もっとかっこいいスイッチがあるといいんですが・・・

でも、この掲示板って、つい下に出ている表示部分に書きたくなりますよね。

返信2005/06/23 12:50:06

14ChuckChuck   6  Re:このエントリーは削除されました

なんで消えているんだ?

返信2005/06/24 08:27:14