2011年4月2日　16:06


DIPスイッチの設定は










2011年3月22日　14:49

基板2009で、15℃〜60℃ぐらいまで温度を上げていって
void cc1101_carrier_wave_setup(void)関数の温度補正を行ったところ、だいたい426.4625から±600Hzぐらいまでの
ずれで補正できるようになった。








2011年3月17日　14:46
CC1101の温度センサーをATmega88のAD変換でリードさせるテストで、

内部基準電圧を1.093V(ATmega88データシート P.207)とし、AD変換のサンプリング値が1024なので、
1.093/1024=0.001067V(1カウントあたり)として、

AD値は0x316=790だったので、

790＊0.001067=0.843232421875という値を出力している。





2011年3月15日　9:27


void rx_fifo_get(rxfifo_data * rxfifo)
{
//	u8 len; 
	u8 * data; 
	 
	data  = (u8 *) rxfifo; 
	 
	cc1100_fifo_get(data,1); 
	data[0] += 2; 
	 
	cc1100_fifo_get(&data[1],rxfifo->length);
}

ここの中のプログラムでは

data  = (u8 *) rxfifo; 

dataという変数にrxfifoのアドレスを指定して、


cc1100_fifo_get(data,1); 
これを実施ご、

rxfifoの構造体の中にデータがアサインされるようになるようにしている。






2011年3月15日　16:01


Ｃ言語で文字列を扱う
http://homepage1.nifty.com/toshio-k/prog/c/string.html

このページでの文字列検索を行うようにする。





2011年3月15日　11:33


avr eepromのプログラミングについてのURL

http://lightjin619.tistory.com/entry/%EC%BD%94%EB%93%9C%EB%B9%84%EC%A0%BC-C%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC-%EC%9A%94%EC%A0%90%EC%A0%95%EB%A6%AC-1




2011年3月9日　10:01


現在、内部周波数8Mhz時だと、

SPIは現在、SPR1=0,SPR0=0,SPI2X=0で　fosc/4  なので、SPIは250kHzで動作中。

I2Cは現在、TWBRレジスタが32で、TWSRレジスタのTWPS1=0,TWPS0=0より、8MHz / (16 + 2 * TWBR * 1) = 40kHzで動作中。









2011年3月3日　14:09

ATmega88のADCで使用している内部基準電圧1.1Vは1.0〜1.2Vまでの許容誤差があるとのこと。

ATmega88データシート　P.195





2011年3月3日　13:05


現在のADCの調査に関しては一旦終了。

調査品として貸し出す基板は

02001(キャリア波精度が良い)
02009(キャリア波精度が悪い)

この2台を貸し出すことにする。


INT1ボタンを押したら、キャリア波、GDO0ピンからは26MHzのクロック波形を出力するようにすること。



また、子機、親機の実際の仕様をとりまとめること。








2011年3月1日　21:27

温度センサーのAD値から温度に直す式

((AD値*(1.1/1024))-0.747)/0.00247







2011年3月1日　21:00

現在、CC1101の温度センサーの数値が実際のものよりも、+14℃程度高い値を示してしまっている。
また、基板02008のみ、+7℃の値を示しているものもある。










2011年3月1日　17:23

現在のプログラムでも、連続してAD変換を行うと、1回目にとったAD値を2回3回移行も同じ値を表示してしまう問題があることがわかった。





2011年3月1日　15:34

現在ADC7端子に1.0Vが入力されていることを測定

このことより1.0/0.001 = 1000　という値がくるので、これを16進数にすると0x3EBという値になるはず。

これをADC7では0x3a1などの値で読んでいることを確認。





2011年3月1日　15:10


電波が出なかった理由は、基板02006のキャリア周波数補正をデバッグ時にEEPROM設定にすることを忘れていたからと
判明。









2011年3月1日　10:13

電圧をADCでチェックするための端子ADC7の電圧をチェックすること。
この端子で3Vを約0.8Vに分圧した電圧を、ATmega88の内部基準電圧1.1Vで比較しているとのこと。

0x3FF=3Vとして考えている。

1カウントは約0.00107Vとして考えることができる。


なので、0.8VがADC7端子に入力されている場合、ADCH,ADCLのレジスタには約0x320が入力されているはずである。


2011年2月25日　16:13


消費電流測定(ATmegaシステムクロック8MHz時)      cc1101だけをアイドル状態時に電流測定

ATmega88(アイドル中)
cc1101(アイドル中)        ---->           4.8mA



ATmega88(パワーダウンモード)
cc1101(アイドル中)        ---->           1.58mA







2011年2月25日　15:47


消費電流測定(ATmegaシステムクロック1MHz時)

ATmega88(アイドル中)
cc1101(アイドル中)        ---->           2.1mA


ATmega88(アイドル中)
cc1101(スリープ)        ---->           0.6mA


ATmega88(パワーダウンモード)
cc1101(スリープ)        ---->           0.45uA







消費電流測定(ATmegaシステムクロック8MHz時)

ATmega88(アイドル中)
cc1101(アイドル中)        ---->           4.7mA


ATmega88(アイドル中)
cc1101(スリープ)        ---->           3.2mA


ATmega88(パワーダウンモード)
cc1101(スリープ)        ---->           0.45uA





2011年2月12日　18:01


RX_SETUPステートで、

cc1100_write_reg(CC1100_REG_PKTCTRL1,0x08);

この式で、

PKTCTRL1.APPEND_STATUSを無効にしてみたところ、

TX側0x0f(15byte)で送信して、RX側のFIFOにも(15byte)で入っていることがわかった。





2011年2月12日　17:42

RX受信時に、RX_DATA_CNTステートで

rx_length = cc1100_read_reg_uartout(CC1100_REG_RXBYTES | CC1100_ACCESS_STATUS);
この式で受信データバイト数を取得したところ、

TX側で0x0f(15byte)で送信したデータが、RX側のFIFOには(17byte)入っていることがわかった。

PKTCTRL1.APPEND_STATUSを有効時。



2011年2月10日　21:31

現在TXデータのステートでは
FIFOに16バイトを書き込んでいて、TX BYTE LENGTHでも0x0fと読みだされていることを確認している。
このことより、FIFO内にはCRCの2バイトは書き込まれていない。







2011年2月10日　19:52

プリアンブルのバイト数の変更のためのレジスタはここ

MDMCFG1(addr:0x13) : 0x22 

MDMCFG1.NUM_PREAMBLE[2:0] = 2 なのでNumber of preamble byteは4Byte送信していることがわかった。 








2011年2月4日　15:38


RTCのI2C通信がエラーになる原因は、SCL,SDA信号をプルアップしているR10,R11の抵抗が3.3MΩであることがわかった。
この抵抗を取り外して、RTCとの通信時はAtmega88の内部抵抗でプルアップするように変更。





2011年2月4日　14:16

現在のRTCとのI2Cとのつなぎで、SCL線のクロックパルスの1波形は80usecで、振幅は約1.3Vぐらい。













2011年2月4日　11:45

現在S/N1101001基板とS/N1101002基板との間で20センチ程度の距離であればCRC_OKのデータ通信が
可能なことを確認。

このときRX側のS/N1101002基板のCRC_OK時のRSSI値は代替0x13〜0x19の間

dBm値としては

cc1101.pdfデータシートのP.43の


1) Read the RSSI status register
2) Convert the reading from a hexadecimal
number to a decimal number (RSSI_dec)
3) If RSSI_dec ? 128 then RSSI_dBm =
(RSSI_dec - 256)/2 ? RSSI_offset
4) Else if RSSI_dec < 128 then RSSI_dBm =
(RSSI_dec)/2 ? RSSI_offset

この式より



0x19 = 25(dec)として
RSSI_offset = 74として

RSSI_dBm = (25/2)-74 = 14.5-74 = -59.5(dBm)となっている。












2011年2月3日　18:18

現在S/N1101002基板とSmartRF04EB+S/N1101003基板でSmartRF04側でRXさせたさい、
距離として7,8メートルぐらい離れているところから受信ができることを確認した。

また、RX側のRSSIは-51dBm程度で受信しているとのこと。







2011年2月3日　10:52

TI評価ボード付属のアンテナはRXのRSSIは-60dbm




2011年2月3日　10:44

緑のメッキ線で作ったアンテナRXさせたときのRSSIは-79dBm




2011年2月3日　10:40

長いアンテナでRXさせたときのRSSIは-84dBmでとっている。



2011年2月3日　10:33

小の長さのアンテナでRXさせたときのRSSIは-78dBmでとっている。







2011年2月3日　10:27

中の長さのアンテナでRXさせたときのRSSIは-82dBmでとっている。








2011年2月2日　18:53

SmartRF04EB基板でアンテナなしで、RXをして、子機基板からのデータを受信させた場合、1回もデータを受信できなかった。
CRCエラーのものもほとんど受信できなかった。アンテナがないと極端に受信能力が落ちる。






2011年2月2日　18:39

S/N1101003基板＋SmartRF04EB基板の組み合わせで、RXをやらせて、子機基板からデータを飛ばして受信させた
ところ、何度もCRCエラーのデータを受信してしまっている。安定していない。




2011年2月2日　15:50

SmartRF04EB基板をRXで
RX filter BWを

50kHz
400kHz

それぞれに設定しても現在の100回のTXデータをすべて受信できている。




2011年2月2日　14:50
現在Deviationを1.586kHzにして、SmartRF04EB基板をRX、子機基板をTXで受信ができるようになっているが、
RX側のSmartRF04EB基板でRX filter BWを200kHz〜100kHzに設定すると、全く正しいデータが受信できない。

58kHzや68kHzなどはCRC OKのデータが受信できる。





2011年1月28日　11:27

過去のキャリア波のみ出力させるプログラムを基板1101002に入れてみたところ周波数のずれはないことを確認



2011年1月26日　17:57
reg_check();を復活させて 0x22番地のFREND0レジスタが0x10に変更されていることを確認。

現在、まだ、正確なデータ波形は出てきていない。


00\29
01\2e
02\3f
03\07
04\d3
05\91
06\ff
07\04
08\45
09\00
0a\00
0b\0c
0c\00
0d\10
0e\65
0f\c9
10\88
11\83
12\10
13\22
14\f8
15\47
16\07
17\32
18\04
19\76
1a\6c
1b\03
1c\40
1d\91
1e\87
1f\6b
20\f8
21\56
22\10
23\a9
24\0a
25\20
26\0d
27\41
28\00
29\59
2a\7f
2b\3f
2b\3f
2c\88
2d\31







2011年1月25日　16:43


PKTCTRL0(0x08番地)

の

LENGTH_CONFIG[1:0]で

FIX Packet length modeか、Variable Packet length modeか、Infinite packet modeかのモード設定がある。

現在Fixed packet length modeになっている模様。



2011年1月24日　15:53

EEPROM 0x00番地で0〜255の間で補正値(1目盛あたり約296Hz)

EEPROM 0x01番地で0x80を書き込んだ場合は0x00番地分の値を引き算
       それ以外の場合は、足し算。









2011年1月20日　16:32

CC1101のスリープモードに4つの種類のスリープモードがあるとのことで、
これに沿って電流消費がカットできるかテストする。
CC1101データシートP.8の内容”4 Electrical Specifications”







2011年1月20日　13:40

ATmega88 + CC1101両方ともスリープモードにもっていった場合は電流消費296uA

ATmega88 だけスリープモードにもって行った場合の電流消費量は1.86mA

このようになった。













2011年1月17日　16:13

現在UARTのボーレートを1200に設定しているが、PCでちゃんと値をとることができない状態。

UBRR0L = 0x0d; // Baudrate 1200　bps近似値は”13.333333333333333333333333333333”

倍速非同期動作 (U2Xn=1)の設定で

BAUD = fosc /16*(UBBR0+1) = 13.333333333333333333333333333333


誤差率(%) = ((1142.857/1200)-1) * 100 = 誤差率5%程度。








2011年1月17日　14:25

熱線センサー取り付け時のパワーセーブモードの基板の電流消費量は約50uA
センサーなしの時の基板の電流消費量は約29uA

なので、熱線センサーの消費電流が約20uA程度ということが分かった。






2011年1月17日　14:15

ATmega48に対してATmega88でコンパイルしたものをダウンロードしてしまった。動作が
勝手にリセットがかかるような動作を繰り返した。ATmega48用にコンパイルしてダウンロード
したら問題解消。





2011年1月17日　10:35

パワーダウンモード、パワーセーブモードからINT1等で復帰させる場合、それに必要な期間は
マイコンの内部周波数を使用した場合"clk * 6"の期間が必要になるとのこと。
また、外部水晶発振子を使用した場合は"clk * 256"程度の期間が必要になるとのこと。
ATmega88データシート19ページ参照





2011年1月17日　10:26

内部周波数を128kHzにした場合は、ISPのクロックを128kHz / 4 =32kHz / 4 = 8kHz程度に落とさないと
ISPとマイコンとの通信ができないので注意。





2011年1月17日　10:14

INT1のLOWパルス出力を200usecぐらいに長くするために、抵抗値を270kΩに変更。
現在、メインクロック128kHzで、動作させて、パワーセーブモードからの復帰のINT1をカウンタ2割り込みと併用させて
動作させてもINT1割り込みをトリガできるようになった。




2011年1月14日　15:59
動作中に勝手にリセットがかかる問題は基板のC23コンデンサ1uがB_CTL端子をLOWにしたときにVCCが1Vくらい落ちる現象が
出ていた。ブラウンアウトシステムリセットがかかった可能性がある。





2011年1月14日　10:14

CC1101、ATmega88をはずして、基板に電流を入れた状態にした際の電流値は0.05uAとなっていることを確認。