By iwanofu イワノフ
こっちは何? 画像が見えない・・・・
ここではPWMを使ったLEDの点滅について解説します。
プロジェクトの名前、デバイスの種類などを選択する方法はいつか書きます。あまり難しくないです。
最低限の設定が終わったら、以下のような画面が出てきます。ここではPWMを使ってLEDを点滅させるので”PWMs”を選びましょう。画面の左横にあります。今回は分解能8ビットのPWMを4つ選択しています。ちなみに右横にあるメータは割り当てられるブロックの値を示しています。つまりこのメータがいっぱいになるとこのブロックは使用できなくなります。
次に上のほうにある”Config”を左クリックして”interconnect”を選択しましょう。以下の画面が出てくるはずです。
この画面ではPWMなどのモジュールからの出力をポートにつなげることが出来ます。”select user module”の選んだPWMを右クリックして”place”を選択しましょう。以下のようになります。図は4つ全部選択しています。
次にPWMモジュールの細かな設定をします。画面左横に"PWM8_1(8_4とか)"書いてあると思いますが、その項目を上から順番に設定していきます。しっかり設定できると以下の図のようにPWMモジュールから線が出るはずです。
これでポートと接続する準備が出来ました。まずPWM_1がつながっている線(マウスを当てると赤くなります)の右側にある小さい”□”をダブルクリックしましょう。下の図のようなウィンドウが出るはずです。
まず左側にある台形の形をしたクリックし、”Row_0_output_0”を選択し、次に真ん中の”□”ではAを選び、最後に三角のところで”Globalouteven_0”を選びましょう。これらの一連の図を以下に示します。
次に右側にずらーっと並んでいるポートの中から”port_2_0”を選択しクリックして”select”を選びます。
その中に”GlobalOuteven_0”という項目があるので、それを設定すると線が表示され近くにある”GOE”と接続します。このときPWMモジュールとポートがきちんと接続されているか確認してください!下の図は4つ全部接続したものです。この画面の作業はここまでです。これでハードの設定は整いました。
再び”config”をクリックして、”generate application”を選択してください。プログラムの画面になります。
さて実際にプログラムを始めますが、その前にサンプルプログラムをGETしましょう。最初はそのほうが楽です。たぶんでdefaultで”ADCs”と”ADCINC”となっているところがあります。ここを”PWMs”-”PWM8”にして”user module datasheet”をクリックすると新しいウィンドウが開きます。
このdocumentの下方に"sample code"という項目があるのでクリックして表示させてください。とりあえずこの中からPWMをスタートさせるような命令をコピペします。
ここで気をつけることはそのままでは動かないことが多いことです。図では”PWN8_START”という関数を使用していますがこれは間違いで実際にはPWM1~4まで別の関数でスタートさせます。この辺はヘッダファイルをよく確認したほうがいいです。(左側に用意されてますので。)変更した図を以下に示します。
上のメニューの”Build”から”Rebuild all”を選択し、コンパイル、Hexファイルを生成します。エラーがなければ後は書き込むだけです。次に”Program”-”Program port”を選択します。
すると新しいウィンドゥが開きます。この時点で右下の緑色のところに”Connected”という表示があったら、”Program”をクリックして書き込み開始となります。接続されない場合はUSBを再投入するなどの措置を行ってください。
書き込みが成功したら”Power device”を押してください。”Powered”と赤字で表示されます。お手元の基板のLEDをご覧ください。点滅してますよね?
●PWM周期の計算
自分は以下のようにクロックを設定しました。
SysClK:24MHz,VC1:16,VC2:16,VC3 Source:VC2,VC3 divider:256この設定でVC3のクロック周波数は
VC3=24000000/16/16/256=366[Hz]
となります。PWMのクロックをVC3に設定しperiodを255にしたのでPWM周期は
1/366*256*1000=699[ms]
と求められました。一応オシロのグラフを下図に示します。
この計算、間違ってたら指摘してください。
説明が不十分で分かりにくいと思います。すいません・・・
次はシリアル通信について書くつもりです。