2010年2月20日土曜日

Qt with Visual Stduio 2008

1. Download the Qt libraries 4.6.2 for Windows (VS 2008, 194MB)



2. Unzip the lib. (qt-everywhere-opensource-src-4.6.2.zip)

In my case, unzip to C:\Qt\qt-everywhere-opensource-src-4.6.2

3. Open a Visual studio 2008 command prompt



4. change to the qt library directory.

cd \Qt\qt-everywhere-opensource-src-4.6.2

5. configuration for the make process.

configure -platform win32-msvc2008

6. Build it

nmake

7. Install a visual studio add-in

http://qt.nokia.com/downloads/visual-studio-add-in
http://get.qt.nokia.com/vsaddin/qt-vs-addin-1.1.4.exe

8. Setup the Qt environment

Qt -> Qt options -> Qt Versions in Visual studio menu
Press Add button to add the library path.

2010年2月11日木曜日

B041 : Tiny SD card moduleでWAVを再生したい。

第1歩ということでWAVファイルのfmtチャンクからサンプリング周波数を抜き出してタイマにサンプリング間隔を設定するところを確認。

* Sampling freq. : Fs
* CPU clock freq. : Fclk
* Timer clock freq. : Ftmr = Fclk x N (N:Pre-scaler)

1/Fs = (1/Ftmr) x CNT

CNT = Ftmr/Fs = (Fclk x N / Fs) = Fclk / Fs / N



Timer0が8ビットであるのと、B041は内部RCオシレータを使っているのとで誤差が大きい。

B041 : Tiny SD card moduleの電源ドロップ

ダラダラと進んでいるSDカードモジュールプロジェクトですが、「おや?」と思った瞬間があったのでオシロで現象を確認してみました。



あらら。
ご覧のとおりSDカードを挿入した瞬間に電源がドロップしています。
ChaNさんの記事にもあるようにSDカードの電源ラインは対策は必須です。

ちなみにB041は、、、

回路図


配置配線


SDカードの電源ラインを全く意識していません。
これでは上記のような波形になるのも無理ありません。

たかだかSDカードと思っていると妙な誤動作に悩まされることにもなりかねません。

2010年2月6日土曜日

B041 : Tiny SD card moduleにブートローダを載せる

あれこれちょっと試すときにAVRISP mkIIを持ち出すのはあまりエレガントとは言えない。
丁度Arduinoにも興味があったのでArduinoのIDEから書き込みできるようにすることを思い立つ。

が、またFUSEビットを間違ってしまう。
B041にはATmega8を載せているが、別のプロセッサの設定「low(0xf8), high(0xdd)」を書き込んでしまう。
これはATmega8ではExternal RC OSCを選択することを意味する。
Arduinoの設定ファイルの編集間違いが原因だ。



B041はInternal RC OSCで動かす設計なので当然クロックは発振しない。
間違って設定したFUSE値がわかっているので前述のようにどういう外部回路にすれば良いかわかる。
今回は幸いにも簡単な外部回路で済みそうだ。



部品箱にあった抵抗を一本(本当に適当にとった抵抗330オーム)取り出して半田付け。
AVRISP mkIIを接続して試したところシグネチャが読めた。
クロックは良さそう。



すぐさまFUSEを所望の値に書き換えて元に戻した。
提供する基板もこの辺りを扱いやすいようにしないとなぁ。

2010年1月22日金曜日

Gamepad on linux

Today, I wanna talk about handling a gamepad on a linux environment.
We can get the device information using cat a device file.

cat /proc/bus/input/devices

I: Bus=0003 Vendor=0079 Product=0011 Version=0110
N: Name="USB Gamepad "
P: Phys=usb-0000:00:1d.0-1/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/input/input4
U: Uniq=
H: Handlers=event4 js0
B: EV=1b
B: KEY=3ff 0 0 0 0 0 0 0 0 0
B: ABS=100 1f
B: MSC=10

And now, the device has a file for the event.
In this case event4 for js0.
(See /proc/bus/input/event?, /proc/bus/input/js0)

So we can read the action using a codes.

#include
#include

int main(int argc, char **argv);

int main(int argc, char **argv)
{
FILE *dev = fopen("/dev/input/event4", "r+");
if (NULL == dev) {
perror("fopen");
return 1;
}
for (int i = 0; ; i++) {
uint8_t c = fgetc(dev);
fprintf(stderr, "%c0x%02x", ((i % 16) == 0) ? '\n':' ', c);
}
return 0;
}

That's great.

2010年1月11日月曜日

B049 : Alarm Clockのプロセッサを変更。



考え直してプロセッサを変更。
I/Oポートを数ポート増やすことで気持ち悪いスイッチの接続(A/D変換でスイッチを読む)とか気持ち悪いバックライト制御(SPIでD/Aを制御してバックライトをON、OFF)を解消できる。
誰が見ても気持ち悪くない構成にしたかった。
小さいプロセッサで制御は魅力的だったが、どうしても納得できなくなっていた。
自分が納得できない設計は後で必ず後悔する。

一回り大きなプロセッサになったので、今回の小さい基板では配置配線に困るかもしれないが、現状はこれで満足。
SDカードの挿入も検出できるようにしたし、ブートスイッチも付けた。
テスト用LEDとアンプのシャットダウン制御も追加。

あとは2、3日寝かせてから再度見直していくことにしよう。

2010年1月9日土曜日

B049 : Alarm Clock電気図面終了と仮配線開始

電気図面は一応終了。

LCDのバックライト輝度調整やコントラスト調整もMPUからやりたくて迷いに迷って2時間。
結局何も制御しないことにして電気図面終了となった。



仮配線を開始。
残り240本の配線。