R8C/15 電子工作工房
C言語は少々知っているが、組み込みマイコンは初めて。と言う方を対象にしています。尚、マイコンの一般論、C言語の一般論に付いての質問はご遠慮願います。
はじめに ▼読む ▲閉じる
組み込みマイコンにチャレンジして挫折した、或いは使いたいけど「敷居が高そう」、「面倒」と思っている人は少なくないでしょう。 組み込みマイコンを動作させるには「スタートアップ・ルーチン」の理解と、各「レジスタ」の理解は不可欠です。 そして、マイコン内蔵の周辺機器は用途に応じて様々な動作が出来る様に多機能なっているので、周辺機器のハードウェアーをある程度理解しなければ意図する動作をさせる事は出来ません。 しかし、LED、リレー等を単にON/OFFさせる程度であれば、I/Oポート操作だけで済むので、全ての機能を理解しなくても動作させる事は出来ます。
とは言え面倒な事は兎も角、初心者にも簡単に、そして直ぐに動かせる方法は無いものか!。そう考えている人は少なくないでしょう。
そこで、初心者にも手軽に扱える様にする為に以下のプログラムを用意しました。 1)リアルタイム・モニター「RTM_R815」
2)ライブラリー「R8C15.LIB」
3)サンプル・プログラム各種
■RTM_R815は「スタートアップ・ルーチン」を含み、全レジスタの初期化処理を済ませ、その後にUSERプログラムを実行させます。
プログラム(関数)を作ったら、その関数名を「TDT.h」のファイルに記述してコンパイルすれば完成です。例えばLEDを点灯させるプログラムであれば、実際に作るプログラムはこれだけです。
■R8C15.LIBは特にパソコンとUART通信を簡単に扱う為の関数集です。マイコンを制御する為の入出力機器として、また動作結果の確認として、パソコンとの通信機能を備えて置くと応用が広がります。 例えば、UARTを介してパソコンに表示させる為に作るプログラムはこれだけです。
■更にサンプル・プログラムを各種用意しましたので、これらを参考にすると良いでしょう。
各サンプル・プログラムは動作させるのに必要なソース・ファイル全てがセットになっていますので、理屈は兎も角、動作させて体験する事が出来ます。
又、パソコン側の通信プログラムはVBAで用意していますので、全てのサンプル・プログラムを動作させる際に作るプログラムは一切無く、即動作確認出来ます。
先ずは動く物を見て触って実感して、それから各レジスターの設定方法(機能)を勉強するのも一つの方法です。
「百聞は一見にしかず」です。。
このマイコンはフラッシュROMに書き込みの際に、専用のライターは必要無く、パソコンから直接書き込めるので、とても扱い易いです。
これを機に、組み込みマイコンの世界に一歩足を踏み入れて見ませんか。このマイコンを使いこなせれば、他のH8やPICマイコン等も同様に扱える様になるでしょう。
その他使用素子 ▼読む ▲閉じる
- ☆COMポート
- UARTのパソコン通信に際して、COMポートを標準装備して無いパソコンが最近増えています。お使いのパソコンにCOMポートが無い場合は「USB<->RS-232C」変換器が市販されています。
1.IO-DATA製 USB-RS・232C変換アダプタ
2.USB・シリアル変換ケーブル
3.RS232C Dサブ9Pオス−9Pメス ストレートケーブル - ☆サンプル・プログラムで使用した素子
- 1.赤外線リモコン受信モジュール
- 2.赤外線発光LED
- 3.I2Cインターフェースの時計IC
- 4.74HC238 ◆データシート
- 5.TC4094 ◆データシート
- 6.7SEG-LED表示モジュール
- ☆マイコン
- ●マイコンボードはこちらから販売されてます。
◆R8C/15搭載マイコンボード MB-R8CS
●そして、こちらと組み合わせると、USBから電源も供給出来て使い易いです。
◆USBシリアル変換モジュール
●IC変換基板はこちらから販売されてます。
◆Aitem−Lab
◆株式会社ダイセン電子工業
リアルタイム・モニター(RTM_R815)の概要 ▼読む ▲閉じる
RTM_R815は即時応答を必要とするシステムの動作を支援するものです。組み込みマイコンの代表的なOSにμITRON
がありますが、タスクの設計思想はまったく異なり、原始的なタスクディスパッチ(タスクの切り替え)機能です。
RTM_R815が管理するタスクは、必ずシステム全体の制御が成立する許容範囲時間内に終了する必要があります。従って、無限ループの形や、ある事象を待つようなプログラムは作成不可能です。
当マイコンの製造メーカであるルネサスからもITRON準拠のリアルタイムOSM3T-MR30/4
が提供されています。興味のある方は御覧下さい。
また、トランジスタ技術 2008年1月号に記載のμITRON準拠のdsPIC用OSの制作も参考になるでしょう。
このプログラム・ソースはこちらのサイトからダウンロード出来ます。
RTM_R815は小規模マイコン用としての「超シンプルなOS」であり、シンプルで有るが故のメリット、デメリットはありますが、
使い方は非常に簡単ですので初心者用とも言えるでしょう。
しかし、用途、使い方次第では十分に応用可能なOSです。そして、このOSもカスタマイズして用途に適合させると良いでしょう。
★RTM_R815の最大の特徴は、「config.h」の定義文に応じて、マイコン全てのレジスタを初期化するC言語ソースを展開し、
初期化処理を含む事です。
言い換えると、この定義文を見れば初期設定状態を一望出来、
「どの様に使おうとしているのか」をある程度知る事が出来ます。
★また、「TDT.h」の定義文に一般タスク(関数名)、割り込みタスク(関数名)を登録しますので、
各タスク構成(システム構成)をこのファイルで一望出来ます。
更に、割り込みタスクを登録の際は、割り込み優先順位の番号もこれに記載しますので、多重割り込み関係が一望出来ます。
上記の「config.h」「TDT.h」、この2つを見ると、タスク構成(システム構成)、制御方法の大筋を知る事が出来ますので保守が容易になります。
RTM_R815ソース・パッケージには、ベースの雛形「config.h」と「TDT.h」が用意されてますので、これを元に所望のアプリケーション・プログラムを組み上げる事になります。
LEDやリレー駆動程度のON/OFF制御であれば、「config.h」は何も変更する必要はありません。
そして、作った制御プログラムの関数名を「TDT.h」に記載すれば、その関数が所定のスケジュールに従って起動されます。
ライブラリー(R8C15.lib)の概要 ▼読む ▲閉じる
windows上のC言語プログラムを作成に於いては、強力はハードウェアーと多くの標準関数、更にAPIを利用する事が出来るので、 或意味ではプログラム作成が容易です。例えばキーボード入力関数、画面表示関数、ファイル入出力関数等々のインターフェース関数は既存しますので、 これらを作る必要はありません。
一方組み込みマイコンの場合では、内蔵の周辺インターフェースであるハードウェアーはマイコンの種類毎に扱いが異なり、そのマイコン専用のプログラム作成 が必要になります。そして何をやるにしても、それらの周辺機器を動作させるソフト設計が必要であり、手間の掛かる面倒な作業です。
そこで、R8C/15のマイコンを使うに当たり、幾つかのインターフェース関数、その他の関数をライブラリー化して、1つのファイルにまとめたのが「R8C15.lib」です。 プロジェクト・ファイル作成時に、 この「R8C15.lib」をプロジェクトに追加すれば利用が可能になります。
ライブラリーはモジュール単位でリンクされ、使うモジュールだけがリンクされますので、汎用性のある関数はライブラリー化して利用すると保守が容易になります。
この統合環境コンパイラーHEWは、ライブラリー・モジュールを作る機能もありますので、ライブラリーの更新も自由に出来ます。
後述するサンプル・プログラムは殆どがこれらの関数を使っていおり、パソコン通信は極めて簡単に扱えます。そして、パソコン通信によって、当マイコンと多くの情報交換が容易です。
- R8C15.libの主な関数
- 1.パソコン通信用のUART送受信(38400bps、割り込み使用)
- 2.UART受信コマンドによる文字列判定と関数分岐。(パソコンからの制御を容易にする)
- 3.タイマーCを使った汎用パルス幅計測(分解能:1/20MHz、最高測定周波数:10kHz以下)
- 4.家電用赤外線リモコン信号受信(タイマーCを使用)
- 5.家電用赤外線リモコン信号送信(タイマーC、タイマーZを使用)
- 6.マイコン内蔵データ領域フラッシュROM書き込み、及び消去
- 7.I2Cバス・インターフェース(汎用ポート操作でバス制御)
- 8.I2Cバス・インターフェースの時計IC制御
サンプル プログラム初級編 ▼見る ▲閉じる
- 1)LEDを点滅制御をさせる例−1。
- 2)LEDを点滅制御をさせる例−2。
- 3)イベント・タスクの最速実行周期を検証する。
- 4)スイッチ信号によって、LEDをON/OFF制御する。
- 5)スイッチ信号によって、LEDをON/OFF、及び点滅周期を変える。
- 6)UART受信信号によって、LEDをON/OFF制御する。(応答返送無し)
- 7)UART受信信号によって、LEDをON/OFF制御する。(応答返送有り)
- 8)sample7のUART受信信号に対する応答性を速める。
- 9)sample5のスイッチ信号操作状態をUART送信する。
- 10)内蔵ウォッチドッグ・タイマー機能を検証する。
RTM_R815の機能、及び使い方を説明する為のサンプル・プログラムです。
マイコン講座でもC言語講座でもありませんので、
C言語は多少知っている事を前提に説明しています。
しかし、初心者の方でも理解出来る範疇の極めて簡単なプログラムで説明しています。
尚、ここで説明するプログラム・ソースの記載で固有の構文は、定義ファイル StdDEF.h を参照下してさい。
サンプル プログラム応用編 ▼見る ▲閉じる
-
簡単、且つ実用的なプログラム例です。これらを組み合わせて応用すれば、家電製品のターマー制御やリモコン制御、調光付き外灯制御、パソコンと併用してA/D値(各種センサー信号)のデータ・ロガー、
等々の電子工作で暫くは遊べるでしょう。
- 1)システム・クロックを利用した時刻をUART送信する。
- 2)4チャンネル分のA/D変換値を100ms周期でUART送信する。
- 3)UART受信コマンドに応じて、1チャンネルのA/D変換値を100ms周期でUART送信する。
- 4)タイマーZ・でPWMを出力し、UART受信コマンドで可変する。
- 5)タイマーZ・でワンショット・パルス出力をし、UART受信コマンドで可変する。(20ms周期固定)
- 6)タイマーZ・でラジコン・サーボモータ制御用PWMを1チャンネル出力し、UART受信コマンドで可変する。
- 7)タイマーZ・でラジコン・サーボモータ制御用PWMを6チャンネル出力し、UART受信コマンドで可変する。
- 8)タイマーZ・で調光器用のPWMを出力をし、UART受信コマンドで調光する。
- 9)タイマーX・で方形波を出力をし、UART受信コマンドで可変する。
- 10)タイマーC・で方形波を出力をし、UART受信コマンドで可変する。
- 11)タイマーC・でPWMを出力をし、UART受信コマンドで可変する。
- 12)タイマーC・で外部入力のパルス幅を計測し、結果を100ms周期でUART送信する。
- 13)上記12のステップ・アップ版。(平均数指定、測定開始/停止機能付き)
- 14)タイマーC・で汎用赤外線リモコン信号のパルス幅を計測し、結果をUART送信する。
- 15)家電TVフォーマットの赤外線リモコン信号を受信し、結果をUART送信する。
- 16)UART受信コマンドに応じて、家電TVフォーマットの赤外線リモコン信号を出力する。
- 17)UART受信コマンドに応じて、内蔵データ領域のフラッシュROMに書き込む。
- 18)I2Cインターフェースの時計ICを制御する。
- 19)マイコン内のメモリー内容をUART送信して、パソコンで表示する。
- 20)同期式シリアツ出力で16ビットの出力ポートを拡張する。
- 21)上記20を応用して7セグメントLED5個をダイナミック表示する。
このマイコンはI/O数が少ないですが、可能性は大きくアイデア次第です。
プログラム設計に際して留意すべき点は「タスク」の独立性を高めてプログラムの再利用性、移植性を高める事です。
タスクを言い換えると、一つのタスクは一つの部品、ICとする考え方があります。ICを組み合わせて一つの制御装置を作り上げる。と言ったイメージです。
再利用が可能な作り込みのタスク(ファイル、モジュール)にすると、それらを組み合わせて、大きなシステムのプログラム設計、及び保守が容易になる訳です。
つまり、システムの機能を細分化し、細分化したそれぞれの役割を明確にして、これを一つのタスクに割り当てる事です。この適度な細分化が保守性、再利用性の善し悪しの決め手になります。
コンパイル、書き込み手順 ▼見る ▲閉じる
前述sample1のプログラムを例に、プロジェクト作成からコンパイル迄を説明します。トラ技記載の方法とは異なりますので、ここで記す手順に従って下さい。
◆フラッシュROM書き込み手順
書き込みに際してはパソコンのcomポートから直接書き込めます。このマイコンのBOOTソフトは優れており通信速度を自動認識しますので、パソコンから任意の速度を設定出来ます。 9600bps〜115200bps迄任意であり、最高速度の115200bpsで書き込めば高速に書き込みが終了します。
◆改造ライターのダウンロード
CD同梱、及びメーカーからダウンロードした「FlashStarter」は、書き込むファイルと同一フルダーに「IDファイル」を保存して置く必要があります。
これが少々面倒なので、ライターのソースを変更して「IDファイル」の確認機能を除く様にしました。又、終了時には通信速度を9600bpsに戻す機能も除き即終了する様に変更をしています。
尚、ライターのソースが同梱されていますので、誰でも変更が出来ます。但し、C++のコンパイラーが必要です。
回路図 ▼見る ▲閉じる
各サンプル・プログラムは極力簡単な周辺回路で多くの説明が出来る内容にしています。
この回路図では電源供給に7〜12v供給で、3端子5v定電圧ICを使っていますが、この様な
汎用USB電源
を使えば更に回路がシンプルになります。通常5v、500mAの電源供給仕様です。
このUSB電源は家電量販店、ネット・オークションでも購入出来ます。
◆sample1〜sample10の回路図
◆Appli1〜Appli20の回路図
サポート
オークション落札日から1ヶ月間はサポートしますが、義務を負いません。
但し、RTM_R815、R8C_15.libに関する事項のみです。 マイコン、C言語の一般論についてはご遠慮願います。
免責事項
当ソフト、回路図を使用により、使用者に如何なる事故、損害が発生しても、著作権者はその責任を負いません。
また、バグや欠陥があったとしても、著作権者は修正や改良の義務を負いません。
Copyright (C) 2008. 【edapyon.com】 All Rights Reserved.