面実装超入門 その2

1.出来具合は?

出力が、0.5Vp-pと、小さくて、気になる(50Ω)、これでええんやろか?

OHPシートに、部品配置を印刷させて、糊でペタッ。

出来上がりです。

失敗は、CLK源が、TTLレベルのものだった....(^_^;;  それでも、動いとるけど...

後で、CMOSレベルのもの25MHZ(秋月で2個100円)に、取り替えた。

2.ソフトは?

最初、以下のようなソフトを作ってみた。

動くか、どうか?の、簡単な、動作確認のための、ソフトです。

動かん...

/***********************************************************************/
/* */
/* FILE :control_AD9851_1.c */
/* DATE :Tue, Nov 01, 2005 */
/* DESCRIPTION :Main Program */
/* CPU TYPE :Other */
/* */
/* This file is generated by Renesas Project Generator (Ver.4.0). */
/* */
/***********************************************************************/
#include "sfr_r815.h"

#define RESET p3_4 
#define D7 p3_3
#define W_CLK p1_0
#define FQ_UD p1_1
#define high 1 
#define low 0

float DDS_data;
unsigned long data,freq; 
int i;

void set_FastCLK(void);
void set_terminals(void); //port設定
void reset_DDS(void);
void send_data(void);

void main(void)
{
set_FastCLK();
set_terminals();
reset_DDS();
freq=1100000; //初期値=1.1MHz
DDS_data=28.63345*freq; //DDS_data=設定値
// data=(unsigned long)DDS_data; //data=DDS_dataを32ビット整数値に変換したもの


data=(unsigned long)DDS_data;
send_data();

while(1);
}

void set_FastCLK(void)
{
prc0=1;
hra00=1;
cm06=0;
asm("nop");
asm("nop");
asm("nop");
asm("nop");
hra01=1;
ocd2=1;
prc0=0;
}

void set_terminals(void)
{
//出力に設定
pd1=0xFF;
pd3_3=pd3_4=pd3_5=pd3_5=pd3_7=pd4_5=1;
//入力に設定 (ハードで、Pull_Upされている)
//pd4_6=pd4_7=0; 不要なり
}

void reset_DDS(void)
{
RESET=high; //RESET
for(i=0;i<1000;i++);    //たっぷり時間を掛ける
RESET=low;

W_CLK=high; //serial設定
W_CLK=low;
FQ_UD=high;
FQ_UD=low;
}



void send_data(void)
{
for(i=0;i<33;i++)
{
if(data & 0x01) D7=high;
else D7=low;
W_CLK=high;
W_CLK=low;
data=data >>1;
}

D7=high; //クロック6倍モード指定
W_CLK=high;
W_CLK=low;
D7=low; //logic 0
W_CLK=high;
W_CLK=low;
D7=low; //power down=no
W_CLK=high;
W_CLK=low;
for(i=0;i<5;i++) //位相制御 位相=0;
{
D7=low;
W_CLK=high;
W_CLK=low;
}
FQ_UD=high;
FQ_UD=low;

}

そんで、えらい失敗を、してしもうた。

AD9851に、正常に電圧が掛かっているか? チェックしたのです。

これが、落とし穴....

テスターの棒の先端が、滑って、 隣の端子と、接触、ショートしてしもうた。

直ぐに、電源を切ったが、ほんのり、煙が、あがったでは、ありませんか...

じゃんねん無念。

「面実装部品は、導通、非導通チェックに、留めたほうが、よい」

一応、AD9851は、動いたのですが、、このために、

出てきた結果が、正常な動作か、どうか、疑う訳です。

90%まで、できていたのに....

気を取り直して、ソフトを、じっくり眺めると、ソフトが、間違っていた...

32個の周波数データを送るはずが

void send_data(void)
{
    for(i=0;i<33;i++)
        {
i        f(data & 0x01) D7=high;
        else D7=low;
        W_CLK=high;
        W_CLK=low;
        data=data >>1;
        }


何と、33個のデータを送っていた....

   for(i=0;i<32;i++) が、正解やんか....数もよう、数えんやんか...わし。

3.結果は?

周波数は、1.1MHZに、設定(AD9851のデータシートと、比べるため。)

 

  狭帯域特性

この狭帯域特性は、good。(span=200KHz)

    span=1KHz

 広帯域特性

これは、データシートには、遠く及ばない。

次は、AD9859で行く、つもりです。

 

H.17.11.5