情報電子工学演習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
© Copyright 2024 ExpyDoc