フォト
無料ブログはココログ

« 2013年1月 | トップページ | 2013年3月 »

2013年2月

2013年2月27日 (水)

自分のアタマで考えよう

自分のアタマで考えよう ちきりん ダイヤモンド社
Photo

 ちきりんさんは、あとがきが書きたかったのかなと思う。

 ちきりんさんが書いているように、おじさん、おばさんたちだって、数学を理解しないで公式を暗記していたんだ。
 ちょうどそのころ共通1次が始まったので入試で高得点を得るためには数学は理解する必要が無くなったんだね。

 「最近のゆとり君は・・・」とおじさん、おばさんたちは嘆くけれど、おじさん、おばさんたちが就職した頃は「最近の新人類は・・・」と言われていたのだから似たり寄ったりってところかもね。ゆとり君たちも30年後「最近の若い者は」と言ってると思うよ。

 自分の頭で考えたことが、おじさん、おばさんたちの常識と違うとき、自分の考え方がおかしいと考えなくてもいいんじゃないかな。常識は過去からできていて。自分は未来に向っているのだから。
 口に出して言うと、偏見や迫害を受けることがあるかもしれないけど、だいじょうぶ、おじさん、おばさんの方が先に死ぬから。

 誰かの受け売りや”カビが生えた常識”でなく、自分の頭で考えたことを話せるじいさんになりたいものだ。

###
娘に言わせると「やっぱし よっちの脳内は 理解不能やね 笑」だそうだ。
↓そんなに複雑ではないような...
Photo_2
2013年の脳内メーカー

2013年2月25日 (月)

8つのI/Oポートで市販の8×8マトリクスLEDを駆動

 SCRを使って市販の8x8マトリクスLEDを9つのI/Oポートで駆動する方法を「9つのI/Oポートで市販8x8マトリクスLEDを駆動」に書いた。
 よく考えたら8つのI/Oポートで駆動できそうである。

↓のように配線されているマトリクスLEDの駆動について
8x8matrixled

  1. SCRのカソード    ←'L'
  2. SCRのゲート     ←'H', 他SCRのゲート←'Z'
  3. SCRのカソード    ←データ(Active'L')

で駆動することを考えていた。

 SCRのカソードとゲートは↓のように接続されているので
8x8led3

  • P1←'H' → SCR1 ON
  • LED(1,2) → SCR2ゲート → SCR2 ON

となり、SCR2がONしてしまう。

 SCR2がONしないようにするには、SCR2のゲート(P1)を'L'にしておく必要があるのだが、SCR2のゲートとSCR1のカソードは繋がっているので、P1を'L'にするとLED(1,2)が点灯してしまう。
つまり、SCR1だけONしようとするとLED(1,2)~LED(1,7)までのLEDが全て点灯することになる。

 このとき、SCR1はゲートを'L'にしても、SCR1→LED(1,2)→P1 で電流が流れているので、SCR1のカソードに接続されたR9やポートP9は必要ない。

任意の列(x)にデータD(0-7)を出力する方法は

  1. P(0-7) ← 'ZZZZZZZZ'       (ALL_OFF)
  2. P(x) ← 'H',  
    P(x以外) ← 'L'         (SCR(x) ON)
  3. if D(n)='1' then P(n) ← 'L'
    else        P(n) ← 'Z'  (データ出力負論理)

でよいのではないか。

 SCRをONにする期間(2)に関係のないLEDが点灯するが、SCRをONにする期間(2)がデータを出力している期間(3)と比較して短時間であれば人間には見えないだろう。

 ソースは↓こんな感じ

void disp_col(uint8_t col, uint8_t data) {
	ALL_OFF();
	_delay_us(50);
	COL_ON(col);	/* colmun on */
	_delay_us(10);  /* 用調整 */
	PORTB = 0x00;
	DDRB  = data;
}

SCRのゲートをONした後の時間待ちは電源電圧によって異なるので用調整。

9つのI/Oポートで市販8x8マトリクスLEDを駆動」と同じH/Wを使って、常時P9を'Z'とする方法で試してみた。

8x8led1

↓06:55と23:55
8x8led_8io ←リンク先にAVI
(ちょっと見にくい)

 

2013年2月23日 (土)

1000時間の法則

今日もいい酒を呑んだ。ぢつは昨日も...

 とある会合があって仙台でネギを振って、その後の懇親会でいい酒を呑んだ。
美味しい酒をありがとうございます>部長

  若者たちガンバレのメッセージを発信したつもりなのだけれど、おじさんたちにウケてしまった。若者の感覚とズレていたのかなあと反省しきりである。
 近々若い人たちの前で喋るので「おじさんナニ言ってんの」を言われないように気をつけよう。

 「自分がやりたいことをやろう」と言うのは簡単で、「彼らががやりたいこと」ができるように障害を取り除くのが、おじさんたちの仕事であろう。結構難しいのだが。

 その会合の中で仙台の偉い方が「1000時間の法則」の話をされた。自分は、10000時間を超えて集中している分野があるのだろうかと考えた。

 食い散らかしているだけのような気がする。が、まあいいか、いろいろなことに興味を持って、とりあえず喰らいついてみることは10000時間を超えているだろう。

 モノになったことは僅かだが、これからモノになることがたくさんある。と考えることによう。(よ)

2013年2月22日 (金)

機会損失

費用概念の一つ。実際に取引を行い発生した費用ではなく、最善の決定をしなかったがために、利益を得る機会を逃した場合の費用概念のこと。
出展:マネー辞典m-Wowrd

 通勤途中に週に3,4日立ち寄る本屋がある。23時まで営業していて売り場も結構広く専門書も置いてあるので重宝している。
 丸善や八重洲ブックセンターなどの大手書店には、客が在庫を検索できる端末が各フロアに設置してあるが、この書店では店員さんがパソコンで在庫を検索してくれる。在庫があった場合には親切に取って来てくれるので、思いの他、高いなと思っても買ってしまう。(いいサービスだ^^)
 在庫が無い場合には「取り寄せましょうか」と聞かれるのだが、東京駅近辺の大型書店で買うか、Netで購入するので「結構です」と答えている。この時に、この書店にとって、機会損失が発生したことになる。
 ところが、他の書店で購入した後、大抵次の週くらいには入荷して棚に並べてある。

 書店ではすべての本を在庫することできない。フロア面積の制限から需要の低い本の在庫をあきらめざるをえないため機会損失は避けられない。
 問い合わせがあった本に関しては、非在庫から在庫にして次の機会損失を防止することが、この書店の機会損失に対する戦略なのであろう。この戦略が有効かどうかは分からないが、機会損失について何らかの対策は講じなければならない。 

閑話休題
 技術サポート部門にいたことがある。「よろず相談受け付けます」的なサポートを行って{いた|いる}ので取り扱ったことが無い相談が多い。解決案を提供することが第一なので、自ら解決できない場合や、時間的な制約がある場合には、忸怩たる思いで、よそを紹介することがある。

 サポート部門にいる技術者にとっては自らの知識・技術で解決できな場合が機会損失と考えられる。

 このとき、次回同様のサポート依頼があった時のために、解決方法用意しておくことが、技術者としての成長のカギではないだろうか。
 今後同じ依頼は無いかもしれない。(事実無いことが多い。) しかし、同じ依頼が少ないとしてもその解決に必要な技術を修得しておくのは、技術者としての矜持であり誇りである。忙しさに流されて、この誇りが無くなったとき、個人の技術力はもとより組織としての技術力も失われるのであろう。

 解決できなかった場合は分かりやすいが、解決できた場合でも、次回の依頼に備えて、

  •  H/Wを預かって試行錯誤したところを、担当者向けマニュアルを作成してH/Wを預からなくても良いようにする
  •  誰でも使えるS/W、ツールを作成して専門知識がない者でも処理できるようにする

ことも重要である。

 ともすれば、試行錯誤して解決したことで安心してしまうが、試行錯誤を蓄電池に例えると放電である。放電ばかりの仕事が続くと過放電して再起不能になってしまう。一方、習得した技術のマニュアル化や、ツールの作成は充電である。充電と放電のバランスが取れているとき、技術者として成長するのであろう。

 マネージャは、「一丁あがり」の仕事を見逃してはならない。組織としての技術力が低下し始めた瞬間だからである。

2013年2月20日 (水)

誰もやめない会社

誰もやめない会社 片瀬京子 蓬田宏樹 日経BP
Photo

SUDOTECKさんのブログに書評があったので読んでみた。

 以前からリニアテクノロジーのLTSpiceを使っているのだが、この本の中でジム・ウイリアム氏はシミュレータについて、

シミュレーション・ソフトウェアは、昔に比べて機能が豊富になり、強力な設計ツールになったのは確かだが、評価ボードを使った検証を忘れてはならない。百戦錬磨のアナログ技術者になるためには、評価ボードは今でも貴重な道具といえる。
P130-P132

と言っている。

 シミュレーションすると動いたような気になるが、実物で動かしてみることが重要ということであろう。実際に物を作ったことが無い人は物理量(例えば、1A、1W、1μF、1mH)の実感がないように感じる。

 経営的には、コンシューマー向け製品が好調な時期に

「会社として伸びていくためには何をすべきか」「それは次の成功分野にチャレンジすることであって、テクノロジーの進化が緩やかになっている分野を、売り上げがあるからといって続けていくことではない。」

とコンシューマーに注力しないことを決断できたのは、カリスマ経営者ロバート・スワンソン氏だから可能であったのだろう。
 この決断でイノベーションのジレンマに陥ることを避けることができたわけだが、合議制ではこの決断はできないのではないだろうか。

自社の強みと、経営上の資産(アナログ・グル)を活用して、高付加価値の製品で高い利益率を確保する経営は理想的に見えるが、つまるところカリスマ経営者とアナログ・グルあっての会社とも取れる。

 創業者で会長のロバート・スワンソン氏が引退したあとのLTについては経営方針や社風を維持できるのか皆が注目しているようだ。

 ロバート・スワンソン氏は、

「リニアテクノロジーはカリスマ経営者による会社ではない。優秀な人たちが動かしている会社である。」
「会社というのはバスに例えられる。正しい席に正しい人が座っていれば、正しい方向へ進んでいく。仮にすばらしいドライバーがいても意味がない。」

と言っているらしい。

 バスの例えは、LTがいたずらに規模を求めないから可能なのであろう。
 バスが大きくなると、間違ってはいないが正しいとはいえない人が、間違ってはいないが正しいとは言えない席に座ってしまい、知らず知らずのうちに組織を蝕んでしまう。

 技術者の育成についての記述は多くなかったが、正しい席に座る正しい経営者とアナログ・グルを育成することができるか、アナログ・グルに興味ある仕事を与えられるかが課題なのだろう。そうしなければ、ロバート・スワンソン氏が「面白くない」とナショナル・セミコンダクタをスピンアウトしたように、アナログ・グル達がスピンアウトするのではないだろうか。

 注目しておこうと思う。

###

LTは「いい物を正当な価格で買ってもらう会社」だそうだ。
SONYも昔はこういう商売をしていたのにね。

2013年2月18日 (月)

9つのI/Oポートで市販の8×8マトリクスLEDを駆動

Charlieplexing (2)で 市販の8x8のマトリクスLEDを9つのI/Oポートで駆動する方法について考えたので作ってみた。

 回路図は↓こんな感じ
8x8led1

 AVR AT90S2313を使ったが特に意味は無い。SCRは秋月で売っているMCR22-8を使った。

8x8led_avr

 Charlieplexing (2)に書いた方法では全てのLEDが点灯してしまうので↓の方法に変更して制御できた。

 ALL_OFF、カソードOFFにするときには時間待ちが必要で50usはCut&Tryで決めた。

  1. P(0-7)←’ZZZZZZZZ’, P8←Z  ; ALL_OFF
  2. P8←L                                  ; カソードON
  3. P(X)←H、P(X以外)←L            ;カラム(x)ON
  4. P8←Z                                  ;カソードOFF
  5. P(0-7)←表示データ(ActiveL) ;データ出力

 ↓任意の列の制御ソースコード

#define	SCR_C	6
#define	SCR_C_ON()	do {	PORTD &= ~_BV(SCR_C);	\
				DDRD  |= _BV(SCR_C);	\
			} while(0)			//PD6<-0, output
#define	SCR_C_OFF()	do {	DDRD  &= ~_BV(SCR_C);	\
				PORTD &= ~_BV(SCR_C);	\
			} while(0) 		//PD6 input, pullup off
#define	ALL_OFF()	do {	SCR_C_OFF();		\
				PORTB = 0x00;		\
				DDRB = 0x00;		\
			} while(0)
#define	COL_ON(c)	do {	PORTB = _BV(c);		\
				DDRB  = 0xFF;		\
			} while(0)

void disp_col(uint8_t col, uint8_t data) {
	ALL_OFF();
	_delay_us(50);
	SCR_C_ON();	/* cathord on */
	COL_ON(col);	/* colmun on */
	SCR_C_OFF();
	_delay_us(50);
	PORTB = ~data;	/* out column data (acctive Low) */
}

↓動いているところ
8x8led_v0000 ←リンク先にAVI


よく考えたら、8つのI/Oポートで駆動可能だった。
( 8つのI/Oポートで市販の8×8マトリクスLEDを駆動)

2013年2月16日 (土)

楽しい酒

今日は楽しい酒を飲んだ。
来週も頑張ろう。^^)
(よ)

2013年2月14日 (木)

ゆるく考えよう

ゆるく考えよう ちきりん イーストプレス
Photo_2

 他人の真似をしないで自分の判断基準で生きていこうということか。
ちきりん氏曰く

人生の先輩たちが仕事選びや子供の教育などについて何かもっともらしいことをいってきても、若い人はそれを聴く必要はおそらくありません。でも「人間として、人との関わりにおいてどう生きるべきか」という話であれば耳を傾けましょう。そうすれば、取り返しがつかなくなってから後悔することを避けられます。

 年寄りの小言は聞かなくてよいということか。 最近の若者は電流測定ができないとか...
最近の若者は年寄りが知らないことを知っていたり、年寄りができないことができたりできるわけだから。自分も若かった頃は年寄りの言うことなんか聞いてなかったし...

 年寄りの言うことを素直に聞いていると、やれと言われたことを単にこなしているだけになり、多様性が無くなる。多様性が無くなると、恐竜のように環境変化で絶滅してしまう。

###
 娘がこの本を持っていったので、しばらくして感想を聞いてみたら
  「ちょっと極論なところがあるよね」
  「この人(ちきんさん)職場で、うまくやっていけないんじゃない?」 
とのこと、娘も就職して職場の”空気”には逆らえないと思うようになったか。

 ちきりん氏の言わんとするところは、カッコよく言えば「ロジカルシンキングしようよ」、古く言えば「道理に従うべし」ではないだろうか。

 ロジカルシンキングの結果得た結論と職場の”空気”が異なっていたとしても直ちに指摘する必要はない。

 ロジカルシンキングの結果が職場の”空気”とかけ離れているからと、ロジカルシンキングをやめてしまい、職場の”空気”に流されてしまうことが問題だと思う。

2013年2月12日 (火)

Circle Graphics

Oscilloclock.comにオシロスコープに図形を表示するCircle Graphicsというアイディアがあって、考案者のアロン・ストークスさんに存在を教えてもらった

 オシロスコープに図形を表示するには、オシロスコープをX-Yモードにしておいて図形を一筆書きで描くためのデータをX軸、Y軸に入力してやればよい。つまり、X軸Y軸の波形(ベクトルデータ)をデータとして持つ必要がある。
文字データはストロークフォントから簡単に変換できるのだが、曲線を滑らかに描画しようとするとX軸、Y軸のデータが大きくなるという問題がある。

 Circle Graphicsのアイディアは、全てリサージュ図形で構成しようというものである。
正弦波を用意しておいてリサージュ図形を使うと、円弧、直線を描画することができる。
描画する区間、X軸、Y軸の位相、X軸、Y軸のゲイン、オフセットをパラメータとして用意すると滑らかな曲線を描くことができる。
位相は連続である必要はなく、0、π/4、π/2、3π/4があればよい。

 例えば数字の"2"を1サイクルで描くには、3つの区間に分割して

区間 X Y
位相 Gain Offset 位相 Gain Offset
1:(0~3π/4) π/2 -1 0 0 1 2
1:(3π/4~6π/4) π/2 -1.41 0 0 -3.41 -2.41
3:(6π/4~8π/4) π/4 2.82 -1 π/4 0 0

描いてみた↓
Circlegraphics2

区間1は(-1,2)~(0,1)、区間2は(0,1)~(-1,0)、区間3は(-1,0)~(1,0)
下部の密度が低い。2サイクル使えるとよさそう。

フォントデータが少なくて良いかも。

2013年2月10日 (日)

理科の実験

 蒲郡市の市立中学校で、教師が実験に失敗した生徒に薄めた塩酸を飲ませる事件があったらしい。

 なんでも、いじめや体罰といった論調で責めるメディアもいかがなものかと思うが、
それはさておき、

 実験は失敗することで学べることが多く失敗は重要な学習機会であって、爆発など身体に害がない失敗なら良い学習機会としてとらえるべきである。
 ただ指示どおりに実験をやって結果が出ても面白くないし実験に集中できないのは当たり前である。失敗した原因を追究し実験を成功させるための工夫を指導することこそ教師の務めではないか。

 実験とは立てた仮設を実証するために行うもので、社会に出ると化学に限らず仮説を実証するための実験を行うことになる。
 実験結果が思いどおりならないことは良くあって、このときに、仮説が間違っているのか、実験方法が間違っているのかが判定できることが重要である。
 この練習を学校で行うわけだが、実験の本質を教えないで、実験の手順や結果だけ暗記させるような教育では理科嫌いが増えるはずである。

 科学の面白さを体験していない者は理科の先生には向かないと思う。
日本の教育は、科学の面白さを体験していない者や、実験の本質を知らない者を理科教師にしなければらないほど危機的な状態なのか。

2013年2月 8日 (金)

avr-gcc constをプログラム・メモリに配置

 Charlieplexingを拡張して 8x8マトリックスLEDを9本のI/Oで駆動するプログラムをAVR AT90S2313で作っている。
 シリアルで通信できるようにして printfデバッグしているのだが(printf()は使えないけど)、デバッグメッセージを増やすとデータが受信できなくなって、メッセージが表示されなくなってしまいには暴走するようになる。

 スタックがデータ領域を喰っているのだろうと見当をつけmapファイルを覗いてみると、初期化済変数領域(data)がやたら多い。

調べてみて分かったこと

  const char str[] = "abc";
   や
  puts("ABC");

と書くと、"abc"や"ABC"は自動的にプログラム・メモリ領域に書かれるのかと思っていたら、.dataセクションに配置されるらしく、プログラム・メモリ領域に配置するには変数の後に__atrrbute(__progmem__)が必要らしい。

 avr/pgmspace.h にプログラム・メモリ領域を使うためのマクロがある。

#define PROGMEM  __atrrbute__((__progmem__))
#define PSTR(s)     ((const PROGMEM char *)(s))
#define pgm_read_byte(address_short)         pgm_reaa_byte_near(address_short)
#define pgm_read_byte_near(address_hosrt)  __LPM((uint16_t)(address_short))

typedef char PROGMEM  prog_char;
#define PGM_P const prog_char *

など

 プログラム・メモリ領域の変数は

const char str[] PROGMEM = "abc";

で宣言し、文字列リテラルはPSTR()マクロを使って

puts(PSTR("ABC"));

のように使う。
プログラム・メモリに取ったデータはpgm_read_byte()で読むらしい。

PGM_P p = str;
char c = pgm_read_byte(str);

###

↓のようなテストプログラムtest.cで確認してみた

/*
 * test.c
 * Feb. 2013/ Yoshi
 */
#include <avr/io.h>
const char str[] = "0123456789ABCDEF";
int main(void)
{
	const char *p;
	for (p=str;*p;p++)
	{
		putchar(*p);
	}
	for (;;);
}

↓test.map 初期化済変数 dataセクションと初期化していない変数 bssセクション
  test.o内の変数 strは dataセクションに取られている。

.data           0x00800060       0x12 load address 0x000000d2
                0x00800060                PROVIDE (__data_start, .)
 *(.data)
 .data          0x00800060        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/crts2313.o
 .data          0x00800060       0x11 test.o
                0x00800060                str
 .data          0x00800071        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3\libgcc.a(_exit.o)
 .data          0x00800071        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3\libgcc.a(_copy_data.o)
 .data          0x00800071        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libc.a(putchar.o)
 .data          0x00800071        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libc.a(fputc.o)
 .data          0x00800071        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libc.a(iob.o)
 .data          0x00800071        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3\libgcc.a(_clear_bss.o)
 *(.data*)
 *(.rodata)
 *(.rodata*)
 *(.gnu.linkonce.d*)
                0x00800072                . = ALIGN (0x2)
 *fill*         0x00800071        0x1 00
                0x00800072                _edata = .
                0x00800072                PROVIDE (__data_end, .)

.bss            0x00800072        0x6
                0x00800072                PROVIDE (__bss_start, .)
 *(.bss)
 .bss           0x00800072        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/crts2313.o
 .bss           0x00800072        0x0 test.o
 .bss           0x00800072        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3\libgcc.a(_exit.o)
 .bss           0x00800072        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3\libgcc.a(_copy_data.o)
 .bss           0x00800072        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libc.a(putchar.o)
 .bss           0x00800072        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libc.a(fputc.o)
 .bss           0x00800072        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libc.a(iob.o)
 .bss           0x00800072        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3\libgcc.a(_clear_bss.o)
 *(.bss*)

↓test.lst test.cのアセンブリ出力は

                 	.global	str
                 		.data
                 	str:
   0000 3031 3233 		.string	"0123456789ABCDEF"
        3435 3637 
        3839 4142 
        4344 4546 
        00

やっぱり変数 str はSRAM上の dataセクションに配置されている。

↓avr/pgmspace.hをインクルードして、PRGMEM修飾し、プログラム・メモリへのアクセスは pgm_read_byte()を使う。

/*
 * test1.c
 * Feb. 2013/ Yoshi
 */
#include <avr/io.h>
#include <avr/pgmspace.h>
const char str[] PROGMEM = "0123456789ABCDEF";
int main(void)
{
	PGM_P p;
	for (p=str; pgm_read_byte(p); p++)
	{
		putchar(pgm_read_byte(p));
	}
	for (;;);
}

↓test1.map  test1.oの.data領域が0byteになった。

.data           0x00800060        0x0 load address 0x000000d2
                0x00800060                PROVIDE (__data_start, .)
 *(.data)
 .data          0x00800060        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/crts2313.o
 .data          0x00800060        0x0 test1.o
 .data          0x00800060        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3\libgcc.a(_exit.o)
 .data          0x00800060        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libc.a(putchar.o)
 .data          0x00800060        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libc.a(fputc.o)
 .data          0x00800060        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libc.a(iob.o)
 .data          0x00800060        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3\libgcc.a(_clear_bss.o)
 *(.data*)
 *(.rodata)
 *(.rodata*)
 *(.gnu.linkonce.d*)
                0x00800060                . = ALIGN (0x2)
                0x00800060                _edata = .
                0x00800060                PROVIDE (__data_end, .)

.bss            0x00800060        0x6
                0x00800060                PROVIDE (__bss_start, .)
 *(.bss)
 .bss           0x00800060        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/crts2313.o
 .bss           0x00800060        0x0 test1.o
 .bss           0x00800060        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3\libgcc.a(_exit.o)
 .bss           0x00800060        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libc.a(putchar.o)
 .bss           0x00800060        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libc.a(fputc.o)
 .bss           0x00800060        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib\libc.a(iob.o)
 .bss           0x00800060        0x0 c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3\libgcc.a(_clear_bss.o)
 *(.bss*)

↓test1.lst  .progmem.dataセクションに配置されるようだ

                 	.global	str
                 		.section	.progmem.data,"a",@progbits
                 	str:
   0000 3031 3233 		.string	"0123456789ABCDEF"
        3435 3637 
        3839 4142 
        4344 4546 
        00
          (
           )
                .L2:
  0010 EC2F       mov r30,r28
  0012 FD2F       mov r31,r29
  0014 C895       lpm
  0016 802D       mov r24, r0

ちょいハマり

const char str[] PROGMEM = "0123456789ABCDEF";
    (
     )
PGM_P p; for (p=str; *p; p++) { putchar(pgm_read_byte(p));
{
ついつい↑のように書いてしまいがちだけれど、*p ではなく pgm_read_byte()を使う必要がある。

2013年2月 6日 (水)

MAKE: vol12

Make: volume 12 O'REILLY
Make_vol12

 Kits and Innovationという特集につられて購入

「懐かしのヒースキットそのDIY魂(P98,P99)」という記事にヒースキット復活なるコラムがあって2011/9に販売を再開したとある。ヒースキットのサイト(http://www.heathkit.com)に行ってみるとなんか変だ。WikiPediaによると2011/9に復活した後2012/5に倒産したのだそうだ。(HW-8は今でもカッコいいと思う。)

###
 THE MOST UNLESS MACHINE (最も役に立たないマシン)の製作記事がある。

 このマシンは、The LeaveMeAloneBoxとも言うらしく、これを集めたたサイト(http://www.leavemealonebox.com)もある。最初に作ったのは、あのシャノン大先生だそうだ。

 Youtubeで見付けた最強のLMABoxはこれ

2013年2月 4日 (月)

H264/AVC教科書

改訂版 H.264/AVC 教科書 大久保 榮 (著)  インプレス

H264  

 仕事で必要になったのでAmazoneで買った。便利になったものだ、次の日に届いた。

 歳をとってよかったと思えることは、専門書が躊躇なく買えるようになったことである。
20代の頃は給料も安かったし、24歳で結婚して25歳で娘が生まれたので専門書を買うのは大変だった。おまけに、田舎にいると専門書の品揃えが悪い。当然Amazoneなんてない。

 3,000円以上の専門書を買うときには、2,3ヶ月の小遣いをためて本屋に行き、本棚の前を三往復くらいして決心して買っていた。高価な本は紀伊国屋に友人がいたので社割りで買ってもらったりもした。

 本屋を"ぶらぶら"することでよい本に巡り合うこともあるけれど、目的があって本を買うときにはNetは便利だと思う。 

2013年2月 2日 (土)

減点主義と積極性

 評価には成果に対して正の評価する加点主義と、失敗や目標未達に対して負の評価をする減点主義がある。

 マネージャが成果をコントロールしようとして、逐一報告を求めたり。細かな手法にまで口を出したり、まるで箸の上げ下ろしまで小言を言うようになると、減点主義型組織の出来上がりだ。

 減点主義型組織では、誰も新しいことに挑戦しないし、自主的・積極的に行動するなど到底無理な話だ。
マネージメント対象が「具体的な行動基準が欲しい」と言い始めたら、どっぷり減点主義に浸かっていると思って間違いない。
そのうち、減点主義型組織は恐怖政治型組織にグレードアップする。

 通常時より多くのマンパワーが必要だが頭数を増やすことができない状況のときに、アメとムチや減点主義はカンフル剤のようなものでごく短期的にマンパワーが増えたように見えるが。その後やってくる”無気力”という副作用が怖い。
 減点主義型組織での大衆のマインドは基本的に現状維持である。それ以上のマンパワーを引き出そうとすると「内的動機付け」がどうしても必要になる。

 そこでマネージャは、自主的に積極的に行動してほしいと言うのだがそれは無理というものだ。
 減点主義型組織や恐怖政治型組織においてリスクを取って自主的・積極的に行動できる者は、意識が高く後にリーダーになるような人か、周囲に関して我関せずの自由人で、その他の大多数は自主的・積極的に行動を起こすことはない。(積極的なフリをするウマイ奴はいる。)

 最近「内的動機付け」というキーワードをよく見かけるようになったが、先ず、減点主義や恐怖政治に頼るマネージャに対して内的動機付けをしなければららないのか。

 短期間(2~3年)でのマネージャの交替はデメリットであることが多いが、減点主義型組織や恐怖政治型組織が好きなマネージャの存在を考えると、結構よくできた安全装置として機能しているのかもしれない。フウ-_-)

« 2013年1月 | トップページ | 2013年3月 »