« September 2007 | Main | November 2007 »

2007.10.29

今日の愚痴

電動ハンダ吸い取り機をブロワにしたままにするのは勘弁してよ.....

裏からハンダが飛び散って アチかった(T.T)

| | Comments (0) | TrackBack (0)

2007.10.19

試作中

試作中
試作の基板ができたので、試作中です。

チップ部品がどうやっても斜めになってる気がしちゃって、すんげ〜肩こる(^^;)

| | Comments (2) | TrackBack (0)

2007.10.17

H8でC その後

先日から組んでるH8のプログラムがようやくうごきました。
やってること自体は簡単なんだから、できなければ困るのだけれどね。

結局ひっかかってた事は、ポインタと構造体に関する表現方法の理解の問題と、H8の仕様と開発環境の使い方の問題でした。

サンプルにあったVector Addressの記述についてと、タイマによる割り込み処理については未解決ですが、目的の物は出来たし残りは趣味の領域になってしまうので、今回は時間切れということで。

時間があったらぼちぼち.....ってそのまえにMSP430を自力でちゃんと動かさなきゃね。

以下覚え書きです。
プログラムはルネサスのサイトから拾ってきたものにちょっと手を入れただけの物です。
間違いありましたらご指摘よろしくお願いいたします。

---------- ここから ----------
struct BIT {
unsigned char b7:1; /* bit7 */
unsigned char b6:1; /* bit6 */
unsigned char b5:1; /* bit5 */
unsigned char b4:1; /* bit4 */
unsigned char b3:1; /* bit3 */
unsigned char b2:1; /* bit2 */
unsigned char b1:1; /* bit1 */
unsigned char b0:1; /* bit0 */
};
---------- ここまで ----------
これは、BITという名前の構造体を宣言しています。
構成要素はb7,b6,b5,b4,b3,b2,b1,b0です。
各要素の大きさは1bitです。

---------- ここから ----------
#define TMA  *(volatile unsigned char *)0xFFA6 /* Timer ModeRegister A */
---------- ここまで ----------
0xFFA6という文字列の前に(volatile unsigned char *)がついているので、この文字列はアドレスを示すポインタで、符号の無い(unsigned)文字列(char)です。(volatile)は、コンパイラで最適化され、消されては困る時につけます。*(volati.....のように頭に*がついているので、このポインタが示す先のメモリ1バイトを示しています。
この文は、アドレスFFA6を示すアドレスにTMAという名前をつけています。H8はメモリマップドI/Oで、このアドレスは実際はタイマーをコントロールするレジスタに割り付けられています。

---------- ここから ----------
#define PDR3_BIT (*(struct BIT *)0xFFD6) /* Port Data Register 3*/
---------- ここまで ----------
0xFFD6という文字列の前に(struct BIT *)がついているので、この文字列はアドレスを示すポインタで、BITという名のついた構造体の型です。*(stru.....のように頭に*がついているので、このポインタが示す先のメモリを示しています。
この文は、アドレスFFD6の示すメモリにPDR3_BITという名前をつけています。

ということは、ポインタがBITという構造体だとそのポインタが示す先のメモリも同じ構造体として扱われるってことでしょうかね?(そう理解しないと、次の部分がちょっと矛盾)

---------- ここから ----------
#define P33   PDR3_BIT.b3
---------- ここまで ----------
PDR3_BITという名前のメモリの先頭から4bit目にP33という名前をつけてます。

---------- ここから ----------
/*********************************************************************************************************/
/* Vector Address */
/*********************************************************************************************************/

//#pragma section V1         /* VECTOR SECTOIN SET */
//void (*const VEC_TBL2[])(void) = {
             /* 0x00 - 0x0f */
// main
//};

#pragma entry main(sp=0xFF80)

#pragma section         /* P */

---------- ここまで ----------
ここはルネサスのサンプルほぼそのままなのですが、結局何をやっているのか理解できませんでした。
リンカにアドレスを渡してH8に転送した時におかれるアドレスを設定しているのだと思うのだけれど、それぞれの意味がさっぱりわかりません。
同じようなことをHEW4(ルネサスの開発環境)でも設定していて、なおかつ上の設定とバッティングしているらしく素のままじゃリンクエラーで止まってしまっていました。 とりあえず、HEWが何とかしてくれるだろうということにして、上のようにコメントアウトしてエラー回避。HEWさまさまです。

---------- ここから ----------
/*********************************************************************************************************/
/* 関数定義 */
/*********************************************************************************************************/

void main ( void );
void pulse ( void );

.....略.....

void main ( void )
{
         .....略.....
}
---------- ここまで ----------
ここで疑問。関数って関数定義のところで型宣言しているのに、実際に使う時にもう一度型宣言するのってなぜなんでしょう。型宣言したんだから

pulse () {
.....略.....
}
のように宣言無しでつかってもいいように思うんだけど。

そういえば、関数定義で型宣言せずにいきなり使ってる関数もあったっけ
int debounce(sw_status) {
int m,n;
.....略.....
}

結局どっちでもいいってことかな。
慣れてないから違和感感じるだけなんでしょうかね。

| | Comments (0)

2007.10.16

週末のお買い物

久々にソフトウェア買いましたよ。

日経Linux 11月号 日経BP
読む暇ないよ......

トランジスタ技術 11月号 CQ出版
特集はワイヤレスデータ通信なんだけど....ちょっとお遊びで手を出せるではないよなぁ。 連載記事は、あいかわらず勉強になります。

ウイルスバスター2007 トレンドマイクロ
有害サイトアクセス制限なんて機能を自分が設定することになるとはね(^^;
娘たちが奥様のPCを使うようになったので、 娘たちのスキルが上がるまでの間の保険です。 もちろん教育もしますよ。 でも、それで100%カバーできるなんておもってませんからね。

| | Comments (0) | TrackBack (0)

2007.10.15

こいつぁたまらん

隣席で静電気試験を始められてしまった

COMポートがとんで 使いものになりません

避難場所探さないと、仕事になりません┐(´ー`)┌

| | Comments (0) | TrackBack (0)

2007.10.10

H8でC

最近、H8に載せる簡単なプログラムをCで作ろうとしてます。

元々はH8を使った簡単な実験装置のハード部分をあたしが作って、H8のプログラムは本職の方が作るはずだったんですが、本職の方が忙しくて全然手をつけられないみたいで一向にできないんです。

このまんまじゃハードのチェックもできないってんで、とにかく動くものを作ろうと手を出す事に。

.......いや、思った以上に難航してます。

Cがわからない。 20年前にポインタが理解できずにCを投げ出したあたしには、構造体だ共用体だなんてちんぷんかんぷん。

H8がわからない。3年ほど前にトラ技の付録を動かしてみたことはあるものの、到底自分でプログラムなんて組めるレベルじゃない。ルネサスのサイトにあるサンプルも微妙に型番が違い、手直ししないと動かない。

開発環境が判らない。 ルネサス製CPU用のCが組み込まれた専用の開発環境が揃っているのだが、専用だけにオリジナルな機能も多く、一般のCの入門書には載ってない事も結構出てくる。もちろんこれに入門書なんて無い。それどころか、ルネサスのサイトには多くのCPU向けのマニュアルが新旧ごちゃ混ぜで散在しているので、どれを読めばよいのかさえわからない。無いよりはましとはいえ、ちょっと不親切。サンプルも、そのまま開発環境に読み込ませれば動くという状態ではないので、やっぱり難しい。

と、3重に判らないのがかさなっているおかげで、なんで動かないのか、どう直せばいいのかさっぱり判らない状態。

んなわけで、1週間はネット検索したりmixiで聞いてみたりと手探りでいろいろとジタバタ(^^; ようやくI/OポートたたいてLEDを光らせる事はできました。

残るはつないだスイッチの状態読み込みと、時間の計測。かっこよく割り込み使ってみたいんだけど、ハマるのは目に見えてるんだよなぁ。
既に昨日はまって、動いていたプログラムまで動かなくなるというヘマやってるし。

道のりは遠いわ........orz

| | Comments (0) | TrackBack (0)

週末のお買い物

といっても、以前通販で頼んでいたものが到着です。

トラ技2007年9月号製作記事応援商品 07年9月号特集用部品セット マルツ電波
PIN40P1E 丸ピンプラグ Linkman
MCP4822-E/P 12bitDAC Microchip
CXH49SFB12000M0PES 水晶振動子 京セラ
50V15PF セラミックコンデンサー15 MARUWA
以上はトラ技2007年9月号の付録の基板用
やっぱりセットで買うと楽だものね。

P-35 ミニチュアラジオペンチ HOZAN
今まで使ってたのがヘタっちゃったのと、職場にあるのが具合がよかったので購入。
おニューはしっかりしてて使いやすいっす

USBRS232C USB-RS232C変換ケーブル
職場で使う自分専用が欲しかったので購入。 安かっただけあってなんかチャチいな(^^;

以上、マルツパーツ館の通販で購入しました。

| | Comments (0) | TrackBack (0)

« September 2007 | Main | November 2007 »