演習 6-1 (個人PC): SPI 通信で音声合成 LSI (ATP3011F1-PU)に文字列を送信し、任意の音声を出力をしてみましょう。プログラムの仕様は以下の通りです。
仕様 :
ATP3011 のピン配置 :
ピン | 名称 | 説明 |
---|---|---|
1 | RESET | 未接続 |
2 | Rx | 未接続 |
3 | Tx | 未接続 |
4 | SMOD0 | 通信モードの設定 SMOD0=0、SMOD1=0 → SPI(MODE0) SMOD0=0、SMOD1=1 → I2C |
5 | SMOD1 | |
6 | SLEEP | 未接続 |
7 | VCC | 3.3V に接続 |
8 | GND | GND に接続 |
9 | I.C | 未接続 |
10 | I.C | 未接続 |
11 | TEST | 未接続 |
12 | AOUT | アンプの Audio In に接続 |
13 | PLAY | アンプの CE に接続 |
14 | PMOD0 | 動作モードの設定 PMOD0=0、PMOD1=1 → セーフモード |
ピン | 名称 | 説明 |
---|---|---|
15 | PMOD1 | 動作モードの設定 PMOD0=0、PMOD1=1 → セーフモード |
16 | CS | SPI 接続用ピン |
17 | SDI | |
18 | SDO | |
19 | SCK | |
20 | VCC | 3.3V に接続 |
21 | I.C | 未接続 |
22 | GND | GNDに接続 |
23 | PC0 | 未接続 |
24 | PC1 | 未接続 |
25 | PC2 | 未接続 |
26 | PC3 | 未接続 |
27 | SDA | I2C 接続用ピン 要プルアップ抵抗(5KΩ程度) |
28 | SCL |
プロジェクト「IO_5_2」または「IO_5_3」を「IO_6_1」にコピーします(プロジェクト名を右クリックして Copy を選択)。
プロジェクト IO_5_2 または IO_5_3 を閉じます(プロジェクト名を右クリックして Close を選択)。
(もし開きっぱなしになっていたら) 前のプロジェクトで開いていたソースを全て閉じます。
(IDEのバージョンによっては) プロジェクトのプロパティを開き、そのまま「Apply」ボタンを押して設定ファイルを更新します。※ 通常は自動で設定ファイルが更新されますが、バージョンによってはバグのため自動更新されないようです
setting.h を開き、一旦全ての機能をオフにします。
シリアル通信(USE_UART)、SPI(USE_MSSP1_SPI) のコメントアウトを解除します。
Modlules/mssp_spi.c を開き、内容を確認します。
main.c を開き、ファイルの中身をテンプレートの内容に置き換えて下さい。
isr.c を開き、ファイルの中身をテンプレートの内容に置き換えて下さい ※ isr 関数の中身を空にしています
穴埋め問題になっていますので、プログラム内のコメントを参考に?のところを正しい内容に修正してください。
回路を作成します。
以下の設定に従って回路を作成して下さい。
(*) が前の演習からの変更箇所です。
ピン配置設定・回路接続方法: 1: RA2 2: RA3 3: CCP4 (PWM) -- 圧電スピーカ 4: MCLR/VPP -- PICkit の 1: NMCLR 5: VSS -- GND 6: RB0/INT (GPIO入力/INT割り込み) -- タクトスイッチ (*)7: SDI1 (SPI) -- ATP3011 の 18 : SDO 8: Rx (UART) -- RN-42 の J2-6 : TX (UART) 9: CCP1 (PWM) -- オシロスコープ (*)10: SCK1 (SPI) -- ATP3011 の 19 : SCK 11: Tx (UART) -- RN-42 の J2-7 : RX (UART) 12: ICSPCLK -- PICkit の 5: PGC 13: ICSPDAT -- PICkit の 4: PGD 14: VDD -- 3.3V (*)15: SDO1 (SPI) -- ATP3011 の 17 : SDI (*)16: RA7/CS (SPI) -- ATP3011 の 16 : CS 17: RA0 (GPIO出力) -- LED 18: AN1 (ADC) -- 可変抵抗の中央ピン
書き込みボタンを押し、以下の手順で正常に動作する事を確認して下さい。
(1) PIC が起動したら「@を数回入力 → # → V → エンター → @を数回入力」の順に入力し、バージョンが表示されるのを確認する (表示例) dummy(ff) : > dummy(ff) : > #(23) : > V(56) : > enter(d) : > dummy(ff) : * dummy(ff) : V dummy(ff) : F dummy(ff) : 1 dummy(ff) : a dummy(ff) : > dummy(ff) : > (2) 「@を数回入力 → # → J(大文字) → エンター → @を数回入力」の順に入力するとチャイムが鳴るのを確認する (表示例) dummy(ff) : > dummy(ff) : > #(23) : > J(4a) : > enter(d) : > dummy(ff) : * dummy(ff) : > dummy(ff) : > (3) 「@を数回入力 → h → o → g → e → .(ドット) → エンター → @を数回入力」の順に入力すると「ほげ」と発声するのを確認する (表示例) dummy(ff) : > dummy(ff) : > h(68) : > o(6f) : > g(67) : > e(65) : > .(2e) : > enter(d) : > dummy(ff) : * dummy(ff) : > dummy(ff) : > (4) 好きな音声を発生させる ※ 最後に '.'(ドット) エンター('\r')を送らないと発声しないので注意
指定場所に「main.c」を記入してください。