hostnameの変更

debianのhostnameを変更した。
etchで測定用のPCを立ち上げ直したが、とりあえずは臨時のホスト名にしていたが、うまく動いてきたので、もともと使っていたホスト名に変更した。 /etc/hostnameで自分の名前を変更して、/etc/hostsも変更すれば完了です。あとは/etc/network/interfacesでDHCPから固定IPに変えて置きました。 測定のインターフェースとしては、GPIBとRS232Cとプリンターポートを使っているので、これらがすべて動くことを確認しないといけないのだが、前の二つは無事に動いたので、最後のも大丈夫だろう。

Read more...

modprobeとudev

etchのGPIBは難しい。
なんとかGPIBが使えるようになったと思ったが、再起動するとpermissionが変わったりして、なかなかうまくいかない。この原因は、modprobeでモジュールを組み込むときに、udevがうまく働かないということが原因らしいことが分かった。手動でmodprobe tnt4882とするとgpibのグループになるのだが、/etc/modprobe.d/gpibに記述して組み込むと、グループが変わらない。waitを入れると良いという話も見付けたので試してみたが。うまくいかない。しかたがないので、install tnt4882 /sbin/modprobe –ignore-install tnt4882; chgrp gpib /dev/gpib*; /usr/local/sbin/gpib_config –minor 0としてごまかした。今のところはこれでうまく動いているようだ。

Read more...

linux-gpibのインストール

optiplex 745を測定用に。
Etchを入れてみたら、xorgが動かない。他にやっている人が居ないかと探してみたら、driverをvesaにしたら良いようなので、 dpkg-reconfigure xserver-xorg で変更したら、無事Xが立ち上がった。次はGPIBだが、headerを取ってきてコンパイルして、gpib-rubyを入れようとしたら、 /usr/bin/ld: cannot find -lfl と出たので、 aptitude install flex として、コンパイルして無事終了。と思ったら、なぜか動かない。結局、/etc/gpib.confをni_pciからni_pci_accelにしたり、/dev/gpib*のgroupを変更したりしていたら動いた。結局何が問題だったのだろう。ni_pciとni_pci_accelの違いは何だったか忘れてしまった。

Read more...

etchでgpib

etchにはgpibが無いのか。
三月でsargeのセキュリティサポートが終了する。研究室の測定用のマシンは、sargeのkernel2.6で動かしているものがほとんどである。そろそろetchに乗り換えようと思って調べてみたら、etchにはgpibのパッケージが無いようだ。etchのリリース以前から、bugの中にはgpibがあって、bugfixを待っていたのだが、パッケージさえなくなっている。でも、lennyにはある。よく分からない。まあ仕方ないので、ソースからコンパイルするしかない。カーネルの再構築には時間がかかるので、あまり好きではないのだが。まあ、三台ぐらいだと思うし、なんとかなるだろう。

Read more...

UARTの同期

USBとUART
UARTではあたりまえだが、周波数の基準が多少異なっている場合には、通信がうまくいかない場合がある。USBの通信の仕方について読んでいて、思い付いたのだが、software UARTでも、ピンの変化に応じて同期を取り直したら、多少のボーレートのズレも気にならないのではないか。コードは多少長くなるが、AVRのアセンブラ関数を書いてみた。ピンの変化を調べるために、highとlowに分けなければならないので、約二倍の長さになってしまった。また、8bitの加算は、レジスタ間でしかできないようなので、その工夫も必要になった。動作確認はしていないが、今度必要になったときに使ってみよう。送信の方はそのままだけど。

Read more...

AVRとRS232Cで通信

AVRでRS232C
これまで、AVR同士ではUARTを使って通信は行っていたが、PCとの間で通信を行ってみた。MAX232でレベルコンバートして、tiny2313のUARTで受信を試みたが、全然うまくいかない。オシロで信号を見てみたら、文字化けしている。tiny2313はdefaultでは8MHzを8分割して1MHzで動いている。最初は無謀にも19200でやろうとしていたが、9600に落として、UBRRの値を6にしたら、なんとか通信できた。これでも-7%の誤差があるようだが、大丈夫だろうと思っていたら、ときどき通信できていないことに気づいた。 CLKPR=0x80; CLKPR=0x02; として、2MHzにしたら、今のところうまくいっている。このときの誤差は0.2%なので、今度こそ大丈夫だろう。それにしても、AVRは途中で周波数を変えられるんですね。昔、8086で10-8を切替えても落ちなかったのが思い出される。

Read more...

AVRのUART

software UART
AVRでは、UARTを使える端子は決まっている。reset端子をRxDに使いたいので、アセンブラ関数でsoftware UARTを作ってみた。信号の無いときは、highにして、start bitでlowにして、、といった感じで作ったら、あっさり動いた。正論理だか負論理だかわけが分からなくなってきたが。1MHzで19200bpsで動かしているが、問題はないようだ。ただし、読み取り中には割り込み等はできないので、注意が必要だ。これで、電流をあまり引き出せないreset端子をRxDにすることによって、もともとRxDだった端子をIOとして使えるようになった。

Read more...

AVRのニーモニック

AVRのアセンブラをすこし勉強した。
命令が思ったよりたくさんあって覚えに難いと感じたが、単純なことをするプログラムはそれほど苦労せずに書けそうだ。しかし、avr-gccでアセンブラ関数を使おうと思うのだが、そのやり方がまだ分からない。

Read more...

Mac OS 拡張フォーマット

hfsplus
Macで作ったDVDを読もうと思ったが、フォーマット形式が分からない。いろいろ調べたら、HFS+というものらしい。etchではhfsplusと指定したら、directoryは見えたが、中身は見えなかった。moduleを入れれば対応できるようだが、まあ面倒なので止めた。

Read more...

tiny26のtimer

timer割り込み
tiny26でtimer1を使おうと思って割り込みvectorを ISR(TIMER1_OVF_vect) としたらうまくいかない。includeファイルを見てみたら、 ISR(TIMER1_OVF1_vect) が正しいらしい。TIMER1_OVF0_vectが無いのにこんな名前にするのもよく分からないけど、まあ動いたからいいや。

Read more...