2017.7.13
前へ
次へ
ホームページトップへ戻る

マイコン独立大作戦
ROM/RAM/RTCボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
独立大作戦の作戦その1はCRTインターフェースボードの製作です。
作戦その2はキーボードインターフェースです。
作戦その3は、SDカードインターフェースです。
作戦その4は、ROM/RAM/RTCボードです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第10回]


送信データの波形

前回お見せしたDS1307に対する日時データの送受信プログラムの実行例としては、[第2回]でND80Z3.5の独立システムで実行したときの写真をお見せしています。
実はそれよりも前にUSB接続型のND80Z3.5にROM/RAM/RTCボードを接続して、そこで最初の動作テストを行ないました。
最初のテストですから、うまく送受信できなかった場合の解析用にと思い、プログラムを実行すると同時に、送受信の波形をカメレオンUSB+ロジアナで観測記録しました。
カメレオンUSB+ロジアナは「TTLでCPUをつくろう」[第374回]で紹介いたしました。
残念なことにどうやら販売終了のようです。
私は現在もちょくちょく使わせていただいております。

下はそのカメレオンUSB+ロジアナで観測したデータ送信波形の画面コピーです。
本当は1バイトのデータ送信ごとに波形をつなぐなどして編集すればもう少し見やすくなるのですが、とてもそんなことをしている時間はありません。
せめてそれに近い範囲ごとにまとめました。

PROBE00がSCLでPLOBE01がSDAです。
SCLがHのときにSDAをLにするとそれがスタート信号となります。
そこから送信スタートです。



DS1307のデバイスbニして1101000を送った後R/Wビットの0を送り、そのあと240μSのところでDS1307からACK(Lレベルの信号)が送出されています。
ここでCPUからの送信が受信に切り換わっていますからその前後にHの区間が見えるかと思ったのですが、波形ではLが連続したままになっています。
ここはちょっと気になったのであとで回路としての動作を確認したのですが、(オープンコレクタ出力なので)出力をHにするとちゃんとラインがHになるので、とくに異常はないようです。

そのあとレジスタbニして00を送っています。



280μSから460μSまで8ビットの0の送信のあと、480μSのところでDS1307からACKが送出されています。

次からはレジスタ0から順にデータを送信します。
レジスタ0は秒の値(BCD2桁)です。
初期値として34を送りました。



00110100と送った後、720μSのところでDS1307からACKが送出されています。

レジスタ1は分の値(BCD2桁)です。
ここはプログラムの初期値としては12だったのですが、どうやら記録された波形を読むと26を送っているようです(そのことはログで確認しました)。



00100110と送った後、960μSのところでDS1307からACKが送出されています。

レジスタ2は時の値(BCD2桁)です。
ここはプログラムの初期値としては09だったのですが、記録された波形を読むと16を送っているようです(そのことはログで確認しました)。



00010110と送った後、1200μSのところでDS1307からACKが送出されています。

レジスタ3は曜日の値(BCD2桁)で01〜07です。
初期値として01を送っています。



00000001と送った後、1440μSのところでDS1307からACKが送出されています。

レジスタ4は日の値(BCD2桁)です。
初期値として25を送っています。



00100101と送った後、1680μSのところでDS1307からACKが送出されています。

レジスタ5は月の値(BCD2桁)です。
初期値として06を送っています。



00000110と送った後、1940μSのところでDS1307からACKが送出されています(1940μSは下図の先頭のパルスのところです)。

レジスタ6は年の値(BCD2桁)です。
初期値として17を送っています。



00010111と送った後、2160〜2180μSのところでDS1307からACKが送出されています(2160〜2180μSは下図の先頭のパルスのところです)。

レジスタ7はコントロールデータです。
初期値として10を送っています。




00010000と送った後、2420μSのところでDS1307からACKが送出されています(2420μSは下図の先頭のパルスのところです)。

最後にSTOPを送りました(SCLがHのときにSDAをLからHにします)。


ROM/RAM/RTCボードの製作[第10回]
2017.7.13upload

前へ
次へ
ホームページトップへ戻る