わがロボットの譜

千葉工業大学、総合工学研究会所属の者です。とりあえず、二足歩行ロボット作成日誌です。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

アドレス使ってプログラム


USBCNC?すいませんまだ使ってないです…


なんでも木曜日に、研究室の進捗を話すらしく、まぁ大したことは言わなくていいんですが、
流石に、ここ最近ニートだったんで、仕方なくプログラムを。

で、なんだか今学期の発表は、C++使ってマイコンにモジュール化したプログラムするぜみたいなことを言ってしまったので、、


以下はそんな感じのプログラムの話です。

で、モジュール化する時にまず考えたのが、引数として、対応するレジスタのアドレスを渡さなければいけないと。
あ、使用マイコンはSH7125です。

とりあえずテキトーにモータ関数でも作るかと、MTU20.TGRAにアドレスからアクセスして書き換えようとしてみる。


MTU20のアドレスは0xFFFFC308なんでとりあえず

*(unsigned char *)0xFFFFC308 = MOTOR_CYCLE/2;

と書いて、まぁ上位だか下位のバイトが書き変わってるだろうと、

MTU20.TGRAの値を読みだしてみると0…

で、どういうこと?となる。


ここで"iodefine.h"を見てみる。

unsigned short TGRA;

となっている。
確かに少し違うケド…?
と思いながらとりあえず試してみる。

*(unsigned short *)0xFFFFC308 = MOTOR_CYCLE/2;



きれいにデューティー比50%で出力。
値もきちんと格納されている。



ということで、値を渡すときは対応するレジスタの型を見ろってことですかね。

まぁ、こっちの方が俄然、やりやすいのでよかったんですけれども。。


あとbitでは渡せないので…


フルカラーLEDを制御するのにも、IO三本だから

FullColorLED(unsigned char * red_byte, unsigned char red_bit, unsigned char * blue_byte, unsigned char blue_bit, unsigned char * green_byte, unsigned char green_bit) と長々と。


unsigned charはtypedefで短くできるけれども、変数名は自分としてはこのぐらい分かりやすくしておきたい。


まぁ、ただ恩恵はそれなりにあるはず。

ただ、こんなのが、発表のネタになるのか…?


…うーん。

スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する
 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。