忍者ブログ
幅広く、浅く、ゆるく、気まぐれにが目標のブログ的なもの。
[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

399 2010 12 28 マイコンについて

 最近、研究室内でライントレースの講習会をしている。
ということで復習も含めてまとめを書いてみた。
  といってもあまり解説的なわかりすくはならない。

基本情報としては
使うマイコンはSH7125
使う言語はC言語
回路も作成
ベースボードはそのままですが、
モータドライバは自作
よく使っていた完成品は生産中止になったみたいですが・・・ 
今回はとくに関係ありませんが

今回やったのはプログラム講習
まず、関数の作り方
C言語自体はまあ、多少はできるという流れで
まず、よく使う関数作成から
関数はメイン文とは別にあらかじめ作っておいてから
他で読み込むような感じ
だからつくったものは
プログラムの上部で宣言が必要
宣言をしないと読み込まず、使えない。
関数ということなので、
返り値がある
たとえば、関数内で計算した数値を
メインで呼び出して使うことでできる。
これによってメイン内で計算するよりも
呼び出すだけでよくなるため
  メインの中がまとめられる
ちなみに、返り値が計算式でも問題ない様子。
ただし、呼び出す方を間違えたり 
宣言のタイミングを間違えると
いろいろと面倒
また、関数をメイン文の上側に書く人と下側に書く人がいる
まあ、それは好みで
宣言のあとですぐメインの中身が見たいなら、関数は下
とにかく、関数の中を確認してからメインが見たいなら、関数は上
例で作成したのが、
sinとcosの計算を関数にしたもの
それぞれdegをradに直しました。
型はdoule
degを設定するとradが出る関数
まずは、こんな感じからスタート

次はマイコン書き込みのため、ツールをCpadからHEWに変更
最初は新規でプロジェクトを作成
設定は今回使用するSH7125に
プロジェクトの設定が終わると
何個かプログラムが出てきますが、
使うのは大体は自分で名前を付けたほぼ空のプログラム
今回は一から使うためもともと書いてあったものはほとんど消しました。
あと、マイコンのプログラムを作成の際は
それぞれのマイコンの説明書であるリファレンスマニュアルが必要不可欠なので
PDFか何かをちゃんと用意。
基本がわかると設定はほぼコピペで済むそうです。
まずは、最初に設定したプログラムの中でちょっと足りないものがあるので
追加します。
ポート設定のためなどにどのポートをどのように宣言するか 
知らないと宣言できません。
そのために"iodefine.h"をインクルードします。
これをそのままコンパイルすれば、
設定内容を確認するためのものがDeoendenciesに出現します。
これを見ると宣言の仕方がわかるのでこれを使用します
ばっと見ても分からないので
だいたいはこれが必要だなというときに
検索をかけて調べます。

まあ、まずはマイコン制御の一番初歩のLEDの点灯から
まずはどのポートを使用するかの設定が必要です。
設定に必要のは
ポートの番号、そのポートが使うモード、入出力設定
設定自体はリファレンスマニュアルを読んで確認するしかない。
ポートによって結構モードなんかが違う
使えないポートもある
通信用だとか・・・
設定は設定で別の関数で宣言しておいて
メイン内で宣言すれば使える。
今回はポートBを使用
リファインスマニュアルp487
使用ポート番号1,2,3,5
モードは0:PB入出力
  ちなみにリファインスマニュアルには番号は2進数で書いてあるので
そこはちゃんと十進数に戻して表記
簡単なのはウインドウズの電卓を使えばすぐ
  自分で計算するなら、111は
2^2 2^1 2^0
   1   1   1  =2^2*1 + 2^1*1 + 2^0*1 = 7
7
モード設定は
PFC.PBCRL1.BIT.PB1MD = 0;
これでポートBの1番のモード設定は完了
各番号ごとにそれぞれ設定
まとめる方法もあるが、
わかりずらくなるので今回はしない。
まとめる場合はWORDを使って
2進数を16進数に直してまとめて設定
次に入出力のIOを決める
PFC.PBIORL.BIT.B1 = 1;
基本的には出力が1で入力が0
今回LEDを光らすわけだが、
ただ、電源を流すからといって出力とはならない場合がある
これは回路による
回路がシンクかソースかわからないといけない
また、マイコンによってシンクとソースでは出せる電圧が
大体違うので確認が必要
今回はシンクのため0で設定。
メイン内でこれを宣言すれば、LEDが光る
とっても一度宣言では一瞬すぎてわからない。
ウエイトをいれるか、for文でまわす。
点滅なら、for文二回でまわす。
もしくはフラグをつくって変わりばんこでifの中に入るように回す。
そうすれば、LEDは簡単に光らすことができます。

簡単
光ると感動モノ
今回はここまでってことで
次は割り込み処理とPWMでモータ制御
でも次回は記念すべき400回目
ネタが思いつかない。
では次回。

PR
コメントを投稿する

HN
タイトル
メールアドレス
URL
コメント
パスワード
無題

勘違いかもしれないけど、関数をメイン文の上で宣言しておくと記述の順番を考えずに関数内で関数を呼び出せた気がする。
Re:無題


本当ですか?
今度試してみます。
カレンダー

12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア

最新CM

[06/05 ProrUnioroMut]
[05/07 Axonryunene]
[08/03 にゅん。]
[07/24 にゅん。]
[07/19 にゅん。]
最新TB

プロフィール

HN:
ねこう・へば~
性別:
男性
バーコード

ブログ内検索

カウンター

アクセス解析

お天気情報