スライド 1 - ESato`s Page

情報電子工学演習V(ハードウェア実技演習)
PICマイコンによる光学式テルミンの製作
レフ・セルゲイヴィッチ・テルミン
「テルミン」に関する情報
■ 大人の科学マガジン vol.17(学研)
■ エレキジャック No.4 (CQ出版)
■ 映画 「テルミン」(1993年アメリカ製作)
PIC12F675
圧電スピーカー
Cdsセル
抵抗器
光学式テルミンの製作にあたって、考えたこと…
1) 複数の音が出せる(音階が変わる)
⇒ 発振器の周波数を変える
→タイマモジュールを利用したパルス発生
2) 空中で手を動かして音を制御
⇒ 手の位置 / 周囲環境の変化をとらえる
「明るさ」
→Cdsセル&A/D変換モジュール
■ スケジュール
<内 容>
<集合場所>
第1回(6/12) PICマイコンとタイマモジュールの活用
[S2-9]
第2回(6/19) パルスの発生とオシロスコープによる観察 [実験室]
第3回(6/26) CdSセルを利用した明るさの検出
[S2-9]
第4回(7/3)*1 明るさ変化に応じた音の発生
[S2-9]
第5回(7/10) 自由製作1
[実験室]
第6回(7/17)
自由製作2
[実験室]
第7回(7/24) 発 表
[S2-9]
*1 第4回は助言ルーム終了後,11:00から開始します。
■ 課題チェック
課題
ドレミ音の発生
(6/26)
回路図
(7/3)
フローチャート
(7/10)
評価
■評 価
各回の出席[5]×7 + 課題[10]×3 + 発表[35]
※遅刻は減点(45分まで欠席0.5, 45分以降は欠席1扱い)
1.PICマイコン
PIC12F675のDIPパッケージ
<端子名> <機 能>
GP0~GP5:汎用ディジタル入出力
AN0~AN3:A/D変換入力
VDD
:
電源+
VSS
:
電源-(GND)
MCLR : 外部リセット入力
機能の概要
タイマ1の内部構成
T1CONレジスタ
タイマ1割込みによるインターバルタイマ実現の例
● 割込み処理ルーチンの所在は、割込みベクタ(04H)で記しておく。
● 割込み処理終了後には、RETFIE命令を実行してメインへ戻る。
● 割込み後にメインに戻り、以前の割り込まれた処理を継続できる
ようにするためには、演算レジスタ(Wレジスタ,STATUSレジスタ,
PCHLレジスタ)の内容を割込みに入った時点で保存しておく必要がある。
1-3. ソースプログラム1 「インターバルタイマ」 sample01.asm
;----- コンフィグレーションビットの設定と汎用レジスタ(ユーザメモリ)の割付) -LIST P=PIC12F675
INCLUDE "P12F675.INC"
__CONFIG H’11FF’&_INTRC_OSC_NOCLKOUT & _WDT_OFF &
_PWRTE_ON & _MCLRE_OFF & _BODEN_OFF
& _CPD_OFF & _CP_OFF
;内部クロック使用,MCLR未使用など
#DEFINE
W_TMP
20H
;Wレジスタ割込み時待機用
#DEFINE
ST_TMP
21H
;STATUSレジスタ割込み時待機用
#DEFINE
T1H
33H
;タイマ1 上位8ビット設定データ保存用
#DEFINE
T1L
34H
;タイマ1 下位8ビット設定データ保存用
#DEFINE
DOUT
35H
;GPIO 出力データ保存用
;----リセット& 割込みベクタ ---------------------------------------ORG
0
;リセットベクタ
GOTO
START
ORG
4
;割込みベクタ
GOTO
INTR
;-------------------------------------------------------------------------
START
BCF INTCON,7
BSF STATUS,RP0
CALL
3FFH
MOVWF
OSCCAL
MOVLW
B‘00010000’
MOVWF
TRISIO
MOVLW
080H
MOVWF
OPTION_REG
BSF PIE1,TMR1IE
NOP
BCF STATUS,RP0
NOP
MOVLW
B'00000100'
MOVWF
DOUT
;割込み不許可
;バンク1に切り替え
;内部オシレータのキャリブレーション
;GPIO(汎用ディジタル入出力ポート)の
入出力設定
;
0:出力 1:入力
;OPTIONレジスタの設定
;タイマ1の割込み許可
;バンク0に切り替え
;GPIOの初期出力
;GP2に1出力(High)
MOVLW
MOVWF
MOVWF
MOVLW
MOVWF
MOVWF
MOVLW
MOVWF
BSF
BSF
MAIN
NOP
GOTO
0FCH
T1H
TMR1H
00H
T1L
TMR1L
B'00000101'
;タイマ1上位8ビット設定データ
;
設定データを保存
;
カウンタにセット
;タイマ1下位8ビット設定データ
;
設定データを保存
;
カウンタにセット
;タイマ1コントロールレジスタ設定データ
T1CON
INTCON,PEIE
INTCON,GIE
; (プリスケーラ1:1)設定
;周辺モジュールの割込みを許可
;割込み許可
MAIN
INTR
MOVWF
SWAPF
MOVWF
BCF
MOVF
MOVWF
MOVF
MOVWF
MOVF
XORLW
MOVWF
MOVWF
SWAPF
MOVWF
SWAPF
SWAPF
RETFIE
END
W_TMP
STATUS,0
ST_TMP
PIR1,TMR1IF
T1H,0
TMR1H
T1L,0
TMR1L
DOUT,0
B'00000100'
DOUT
GPIO
ST_TMP,0
STATUS
W_TMP,1
W_TMP,0
;現在のWレジスタの値を退避
;現在のSTATUSレジスタの値を退避
;タイマ1割込み検出フラグをクリア
;上位8ビット設定データを読み出し
;
カウンタに設定
;下位8ビット設定データを読み出し
;
カウンタに設定
;GPIO出力データを読み出し
;GP2の出力値を反転
;GPIO出力データを保存
;GPIO出力
;割込み前のSTATUSレジスタの値を復帰
;割込み前のWレジスタの値を復帰
1-4.パルスの発生とオシロスコープによる観察
<手 順>
1)ソースプログラム1をアセンブルしてHEX形式の機械語データを作る。
2)PICライターを使用してPIC12F675へ機械語データを書き込む。
3)ブレッドボードに実験回路1を作成し、オシロスコープでパルス波形の周期を測
定する。
4)S1-GND間に圧電スピーカを接続し、音階を確認する。
5)ソースプログラム1のタイマ1設定データを変更し、再び1)~4)の作業を繰り返す。
周期
実験回路1
パルス波形
No
表1 パルス波形観察時の記録例
TMR1設定値
カウント数
観測周期T
Cnt
10進
[sec]
16進
(TM1)
(65536-TM1)
周波数f [Hz]
(f=1/T)
1
2
<課題1-ドレミ音の発生>
TMR1をFC00H(10進で64512)に設定した場合、下記の計算によりパルス波形の
周期を求めることができる。「ド」「レ」「ミ」の音を発生させるためTMR1の設定値
を予測せよ。
< クロックFosc=4MHz,タイマ1のプリスケーラ1:n=1:1 , TMR1=64512(10進)
とした場合 >
T’= (Fosc/4)×n×(65536-TMR1)×2 = 10-6×1×(65536-64512)×2
= 2048μsec = 2.048msec
音名
ド
レ
ミ
ファ
表2 音階の周波数
周波数[Hz]
音名
523.251
ソ
587.330
ラ
659.255
シ
698.456
ド
周波数[Hz]
783.991
880.000
987.767
1046.502