
写真1 AD9833 DDS MSOP 0.5ピッチ 変換基板に乗せる
それはさておき、
このチップは10ピンのMSOPで、写真にようにピンセットの先ほどの大きさです。
変換基板に取り付けましたが、ピンのピッチは0.5なので、半田付けにはちょっと技術が必要です。
まずチップをゲルタイプの瞬間接着剤で正確な位置に仮止めしておきます。
フラックスをほんのわずか塗って、すべてのピンにわざとまたがるくらい半田を盛ります。
半田吸い取り線で、余分な半田を吸い取って、出来上がり。
慣れれば簡単ですが、最初は数個パーにする覚悟がいります(笑)。
このDDSは、マスタクロック(MCLK)周波数は最高25MHzで、その場合最高発振周波数(ナイキスト周波数)は12.5MHzとなり、分解能は0.1Hzです。
今回は手持ち部品の関係で、20MHzのクリスタルを使用したので、10MHzまでのプログラマブルオシレータとして、実験してみました。この場合の分解能は約0.075Hzです。

mbed デジタル時計 (5900円のデジタル時計!)
mbedで時計を作ってみました。
mbedにはRTC(リアルタイムクロック)が内蔵されています。
またmbedライブラリの中にはrtc_time関数群が用意されており、容易かつ便利にRTCを使うことができます。
関数の使用は、まず
set_time()でunix timestampを与え現在時刻を与えます。
unix timestampは、このようなサイトで得られます。
unix timestampには日本時間(JST)のためのオフセットを加えておきます。
つぎにtime_tで現在の時刻データを得ます。
strftime()で、時刻データから指定した書式でデータを取り出しLCDに表示します。
time_t と、strftime()を適当な間隔で繰り返します。

strftime()関数の書式記述子
ここで使用したstrftime()の書式は、
%Y 4桁の年
%m 数字の月
%d 数字の日
%a 3文字の曜日
%H 時
%M 分
%S 秒
このほかの書式を指定すれば年を2桁で表示したり、曜日をフルスペルで表示したり、AM/PM表示、時の24時間表示などができます。
#include "mbed.h"
#include "TextLCD.h"
TextLCD lcd(p24, p26, p27, p28, p29, p30);
int offset_JAPAN = 32400; //JSTのためのオフセット
int main() {
//unix timestammp
set_time(1303099200+offset_JAPAN); // Set RTC time to Mon, 18 Apr 2011 13:00:00
lcd.cls();
while(1) {
time_t seconds = time(NULL);
//LCDの上の行に"2011/04/18 Mon"と表示する
lcd.locate(0,0);
char day[16];
strftime(day, 16, "%Y/%m/%d %a\n", localtime(&seconds));
lcd.printf("%s", day);
//LCDの下の行に"13:00:00"と表示する。
char time[16];
strftime(time, 16, "%H:%M:%S\n", localtime(&seconds));
lcd.locate(0,1);
lcd.printf("%s", time);
wait(1.0); //適当な間隔で表示を更新する(ここでは1秒間隔)
}
}

コンパイラ画面
このプログラムはunix timestampを手動で設定しているため、面倒ですし、正確さに欠けます。
webからunix timestampを自動的に得られるようにすれば、より便利で正確になります。
http://mbed.org/users/jf1vrr/programs/clock/lpucqk
ご注意: しばらく放置して気づいたのですが、この時計、どんどん進みます。
(JF1VRR)