2009年04月 の記事一覧
9年前の
その時に、同期なべゆうが発見した9年前のカップヌードルを今日開封した。
勘違いしないで欲しいのは、決して賞味期限が切れて9年とかいうものではなく、タイムカンというやつ。実は回収しているらしいのだが、そんなことにめげてはいけない。
スイッチング電源を作ろう(4)
三角波発振回路
※この連載を初めてご覧になる方は、まずこちらをご一読下さい
※前回の記事はこちら
前回は基準電圧回路の設計を行った。今回は三角波発振回路の設計を行う。前回は簡単すぎて騙されたと思ったかもしれないが、今回は割と複雑だ。心してかかって欲しい。 【続きを読む】
定額給付金
別にどうってことない普通の封筒だ。ABK市役所から届くんだな。
一応個人情報保護。知り合いには隠す意味ないが。全面公開してるので一応。
さっそくオープン。
まぁ、お役所の書類っつーのは何でもそうなのだが、とにかく分かりにくい。
が、しかし、今回はかなりマシだ。入ってる紙は少ないし。
ともあれ、無事に記入したので明日投函することにしよう。1〜3ヶ月くらいかかるとか書いてあったので、まぁそのうち気付いたら入金されてるかもね。ありがたく頂戴して生活費の足しにしますよ、えぇ。
にしても、この発送にかかる費用と振込手数料分を考えれば、消費税を下げてくれた方がよっぽど嬉しいのだが。まぁ、そうできない理由が色々な方面であるのだろう。いやだいやだ、政治ってのは。
スイッチング電源を作ろう(3)
基準電圧回路
※この連載を初めてご覧になる方は、まずこちらをご一読下さい
※前回の記事はこちら
前回は設計する電源の仕様と、簡単な構成について述べた。今回は基準電圧回路の設計を行うこととしよう。
■その前に訂正
前回、仕様において最大電流を1Aとしていたが、500mAとすることにした。
理由は
・手元の部品で作れない(switching用MOSFETとかでかいコイルとかがない)
・放熱設計が面倒
・ぶっちゃけ1Aは必要ない
といったところだ。工エェェ(・д`)ェェエ工って思った人は自分で設計すべし。というか自分で設計するのが基本だろ。 【続きを読む】
スイッチング電源を作ろう(2)
仕様、そして構成
※この連載を初めてご覧になる方は、まずこちらをご一読下さい
※前回の記事はこちら
前回はswitching regulatorの仕組みについて簡単に説明した。今回は設計する電源の仕様を決め、どのような構成にするか、まで。 【続きを読む】
花見
てなわけで、あけぼの山農業公園まで桜を見に行くほどの気力は残っておらず、近所の公園で我慢してみる。手賀沼でもいいのだが、通りかかった感じでは何か微妙な桜だったので遠慮した。うーん。樹が若いのかな。
ともあれ、近所にある2つの小さな公園で桜が咲いていた。職場の目の前にある桜はまだ咲いてないのに・・・。種類が違うのか。危うく花見タイミングを逃すところだった。
こちらはあまり人通りの多くない地域にある公園。住宅地の中であり、先が行き止まりになる道にあるから、地元の人でも知らない人がいるんじゃないか、くらいのところ。ちょうど満開だった。携帯で写真撮影している人がいた。みんな考えることは一緒だな。
夕日の差したるのも、いとをかし、みたいな感じか。
こちらは駅から帰る途中にある公園。信号を渡る都合で帰る道順はいくつかあるが、その中の1経路の途中にある。ベンチに座ってお花見している人がいた。おわ。カップ酒っスか・・・。参りました・・・。
ともあれ、写真撮影している間にも何人かの人が花見に訪れた。うーん。さすがみんなの通り道だけの事はある。先ほどの寂れた公園とは大違いだ。
今回は接写無し。風が強くて撮影できなかったので(フォーカスを合わせるのが著しく困難だった・・・)。近所には他にも桜の綺麗な公園はあるのだが、疲れていたのでこれくらいで勘弁してください。
ともあれ、桜も見ることができて、満足な一日でした。
スイッチング電源を作ろう(1)
スイッチングレギュレータの仕組み
※この連載を初めてご覧になる方は、まずこちらをご一読下さい
Switching regulator(スイッチングレギュレータ)という言葉自体は知っている人もいるかもしれない。今回はこれから設計するchopper(チョッパ)型switching regulatorの仕組みについて説明したいと思う。 【続きを読む】
リンクエラーにならないのか・・・
まず、以下のような2つのファイルhoge1.c, hoge2.cを用意する。
/* hoge1.c */
#include <stdio.h>
void hoge(int a, int b);
int main(void)
{
hoge(1, 2);
return(0);
}
/* hoge2.c */
#include <stdio.h>
int hoge(int a)
{
printf("%d\n", a);
return(0);
}
見ての通り、関数hoge()の型は同じじゃない。コンパイルはファイル単位に行うのでコンパイルエラーにならないのは納得がいく。が、これはリンクエラーにもならない。さらにさらに、実行もできてしまう。
hoge2.cを次のように書き換えてもエラーは出ないし実行できる。[pMan@pMac:~/Desktop]$ gcc -Wall -c hoge1.c
[pMan@pMac:~/Desktop]$ gcc -Wall -c hoge2.c
[pMan@pMac:~/Desktop]$ gcc -Wall -o hoge hoge1.o hoge2.o
[pMan@pMac:~/Desktop]$ ./hoge
1
/* hoge2.c */
#include <stdio.h>
int hoge(int a, int b, int c)
{
printf("%d %d %d\n", a, b, c);
return(0);
}
関数の引数はCPUのレジスタかあるいはスタック渡しになるわけだが、よーするに、gccで.oにしたときに引数のためのスタックの大きさは書き出さないということか。だから、ldしても引数の個数が違うことに気付かない。で、実際に呼び出したときにスタックが未初期化だからわけのわからん数字になっちゃったりするわけだな。まぁ呼び出し時の動作はOSに依存しそうだが。いや、ldがスタックをクリアする処理を一緒にlinkしていればOS非依存でクリアされるのか。[pMan@pMac:~/Desktop]$ gcc -Wall -c hoge2.c
[pMan@pMac:~/Desktop]$ gcc -Wall -o hoge hoge1.o hoge2.o
[pMan@pMac:~/Desktop]$ ./hoge
1 2 -1073743988
ともかく、他人の機能の関数をプロトタイプ宣言するのはやめた方がいいということだな。同じファイルで宣言と実体が違うならwarningなりerrorなり出せるわけだし。
ん?こんなバグ出したのは自分じゃないです・・・。