« 78K マイコンでLED温度計  | メイン | 作りながら学ぶPICマイコン入門のフォロー(25) »

STM8Sマイコンで作る警報音 (1)


STM8S-Discoveryに圧電スピーカをつなぐ

 STマイクロエレクトロニクス社STM8-Discovery評価ボードを使って,圧電スピーカから音を出します.さて,どのくらい簡単にできるかな.

継続して鳴らす

 STマイクロエレクトロニクス社(以下ST社)の STM8S-Discovery に圧電スピーカをつないで,音を出します.

Beeperモジュール

 STM8S-Discovery に搭載されている STM8S105C6 マイコンには,Beeper というモジュールが搭載されています.その名のとおり, BEEP 端子から数kHzの矩形波を出して音を発するためのモジュールです.出力に,圧電スピーカを取り付けると,警報音のように鳴ります.

Beeperモジュールの仕組み

 出力可能な周波数は, 1kHz, 2kHz, 4kHz から選ぶことができ,周波数の微調整をする機能もついています.まずは,微調整など考えずに,とりあえず,鳴いてもらうことにしましょう.

BEEP端子の機能設定

 Beeper モジュールは, BEEP 端子に矩形波を出力します.ところが,この端子は,出荷時には PD4 または TIM2_CH1 と設定されており, BEEP 端子として使用することができません.

 この端子を BEEP 端子として設定するためには,オプション・バイトと呼ばれる特別な場所の不揮発性メモリを書き換える必要があります.オプション・バイトは,特別なメモリなので特別なアプリケーションで書き換えます.

 「スタート」メニューから,「すべてのプログラム → ST Toolset → Development Tools → ST Visual Programmer」とたどって, ST社のメモリ書き換えアプリケーションである ST Visual Programmer(以下STVP)を起動します.

マイコンの種類と接続方法を指定する

 初期画面に入る前に,マイコンの種類と接続方法を指定します.

項目名選択肢
Hardware (開発ツール)ST-LINK
Port (接続ポート)USB
Programming mode (接続規格)SWIM
Device (マイコンの種類)STM8S105x6


 指定し終わったら, STM8S-Discovery 評価ボードを PC に接続して, OK ボタンをクリックします.

ST Visual Programmerの初期画面

 すると, STVP が起動し,初期画面が表示されます.画面なかほどの OPTION BYTE タブをクリックすると,オプション・バイトを設定するためのタブが開きます.

オプションバイト設定タブ

 このアプリケーションで機能を設定したいのは, Port D4 です.最初は, "TIM2_CH1" となっています.この "TIM2_CH1" と表示されている部分を右クリックすると,リストが表示されます.

Port D4 の機能を設定する

 リストの中から, "BEEP" を選びます.そして,メニューバーから「Program → Current Tab」を選択し,オプション・バイトを書きこみます.

オプションバイトを書き込む

 これで,オプション・バイトの書き込みが終わり, "BEEP" 機能が使えるようになりました.

STVP おわり

メニューバーから「File → Exit」を選択して,操作完了です.

最近の汎用マイコンでは,小さいマイコンに多くの機能を詰め込むために,ひとつのポートに複数の機能を割り当てるのが普通になってきました.そこで,問題になるのが,ポートの機能をいつ決定するかという課題です.設定が遅れると,接続先の回路が誤動作してしまう可能性がありますので,できるだけ速やかに設定する必要があります.また,場合によっては,プルアップ・プルダウン抵抗を追加する必要もあります.

ST社の場合には,なるべく早い段階で端子の機能を決定するために,ハードウェアだけで解決する方法を採用したようです.

ほかの8ビットマイコンでは,ソフトウェアによって端子の機能を決定する方法が多く見られます.半導体メーカの思想の違いが見られて,非常に興味深いところです.

プロジェクトを作ろう

 BEEP 端子の設定が終わったら,アプリケーションを作成します.最初は,BEEPを継続して鳴らします. "workspace02" というワークスペースを "C:\Projects\STVD\ws02" というフォルダに作成し, "project02" というプロジェクトを "C:\Projects\STVD\ws03\proj02" というフォルダに作成しました.

ワークスペース・ペイン

 Beeper モジュールを操作するためのライブラリも,前回紹介したファームウェア・ライブラリ("FWLib")に含まれています.リンクしたファイルは,以下のとおりです.

リンクするファイルリンク先用途
FWLib\library\inc\stm8s.hInclude Files汎用ヘッダ
FWLib\library\inc\stm8s_beep.hInclude FilesBeeper モジュール・ヘッダ
FWLib\library\src\stm8s_beep.cSource FilesBeeper モジュール・ライブラリ


 さらに, "stm8s_conf.h" ファイルをコピーして,コメントになっているマクロ _BEEP の宣言を非コメント化します.

stm8s_conf.h ファイル

 変更したら ctrl+S でファイルを保存します.

ソース・コードを書きなおそう

main.c ファイル

"main.c" ファイルを以下のように書き換えます.

//**************************************
//
// main.c : 
//  
// Copyright (c) 2010 noritan.org
//
//**************************************

#include "stm8s.h"

//======================================
// Main procedure
//======================================
main()
{
  // Initialize Beeper module.
  BEEP_Init(BEEP_FREQUENCY_1KHZ);
  BEEP_Cmd(ENABLE);           // Enable BEEP
  while (1);                  // Loop forever
}

 このプログラムで行っていることは, Beeper を1 kHz の音を出力するように初期化して,イネーブルするだけです.あとは,ハードウェアが勝手に音を出すので, CPU は無限ループに入ります.

ビルドする

 アプリケーションは,以上で完成です.ビルドして,エラーが発生しないか確認しましょう.

圧電スピーカをつけよう

圧電スピーカ周辺の回路図

 あとは,プログラムを書き込んで実行させるだけですが,ここでハードウェアを準備します.といっても,圧電スピーカを抵抗を介して STM8S-Discovery に接続するだけです.圧電スピーカは,秋月電子通商で購入した SPT08 を使用しています.

STM8S-Discoveryに圧電スピーカをつなぐ

 圧電素子は,機械的な衝撃を加えると高い電圧を発生します.抵抗は,その電圧からマイコンを保護するためのものです.

プログラムを書き込んで,実行しよう

 準備ができたら,メニューから「Debug → Start Debugging」を選択し,デバッガを起動します.そして,メニューの「Debug → Run」を選択し,プログラムを実行します.


 圧電スピーカからは,けっこう大きな音がなりひびきました.音を止めたいときには,メニューの「Debug → Restart」を選択しプログラムをリセット直後の状態で停止させます.

田中範明(noritan.org)

カテゴリ:

トラックバック

このエントリーのトラックバックURL:
http://www.eleki-jack.com/mt/mt-tb.cgi/4040





カテゴリ

会社案内
情報セキュリティおよび個人情報の取り扱いについて

コメントとトラックバックは、spamを予防するために、編集担当が公開の作業をするまで非公開になっています。
コメントはそれぞれ投稿した人のものです。

Powered by
Movable Type 4.1
/*yahoo remove*/